From 8e8135e5e82045315ecaa24dda897368c5cfc450 Mon Sep 17 00:00:00 2001 From: Andrew Chang Date: Thu, 30 Dec 2021 19:13:39 -1000 Subject: [PATCH 01/20] Format header documentation with DocC markdown --- .../Matching/ArgumentCaptor.swift | 12 +- .../Matching/ArgumentPosition.swift | 168 +++++---- .../Matching/CollectionMatchers.swift | 264 ++++++++------ .../Matching/CountMatcher.swift | 110 ++++-- .../Matching/NonEscapingType.swift | 30 +- .../Matching/WildcardMatchers.swift | 345 ++++++++++-------- .../Mocking/Mocking.swift | 182 +++++---- .../Objective-C/Bridge/include/MKBTestUtils.h | 16 +- .../Stubbing/DefaultValues.swift | 68 ++-- .../Stubbing/DynamicStubbingManager.swift | 236 +++++++----- .../Stubbing/InvocationForwarding.swift | 328 ++++++++++------- .../Stubbing/PropertyProviders.swift | 10 +- .../Stubbing/SequenceProviders.swift | 96 ++--- .../Stubbing/Stubbing+ObjC.swift | 236 +++++++----- .../Stubbing/Stubbing.swift | 332 ++++++++++------- .../Stubbing/ValueProvider.swift | 142 +++---- .../Verification/AsyncVerification.swift | 20 +- .../Verification/OrderedVerification.swift | 136 +++---- .../Verification/Verification.swift | 54 +-- 19 files changed, 1591 insertions(+), 1194 deletions(-) diff --git a/Sources/MockingbirdFramework/Matching/ArgumentCaptor.swift b/Sources/MockingbirdFramework/Matching/ArgumentCaptor.swift index 5d8923b2..ec7590bf 100644 --- a/Sources/MockingbirdFramework/Matching/ArgumentCaptor.swift +++ b/Sources/MockingbirdFramework/Matching/ArgumentCaptor.swift @@ -12,12 +12,14 @@ import Foundation /// An argument captor extracts received argument values which can be used in other parts of the /// test. /// -/// let bird = mock(Bird.self) -/// bird.name = "Ryan" +/// ```swift +/// let bird = mock(Bird.self) +/// bird.name = "Ryan" /// -/// let nameCaptor = ArgumentCaptor() -/// verify(bird.name = any()).wasCalled() -/// print(nameCaptor.value) // Prints "Ryan" +/// let nameCaptor = ArgumentCaptor() +/// verify(bird.name = any()).wasCalled() +/// print(nameCaptor.value) // Prints "Ryan" +/// ``` public class ArgumentCaptor: ArgumentMatcher { final class WeakBox { weak var value: A? diff --git a/Sources/MockingbirdFramework/Matching/ArgumentPosition.swift b/Sources/MockingbirdFramework/Matching/ArgumentPosition.swift index 8950cdaa..efd15c1d 100644 --- a/Sources/MockingbirdFramework/Matching/ArgumentPosition.swift +++ b/Sources/MockingbirdFramework/Matching/ArgumentPosition.swift @@ -12,23 +12,27 @@ import Foundation /// You must provide an explicit argument position when using argument matchers on an Objective-C /// method with multiple value type parameters. /// -/// @objc class Bird: NSObject { -/// @objc dynamic func chirp(volume: Int, duration: Int) {} -/// } +/// ```swift +/// @objc class Bird: NSObject { +/// @objc dynamic func chirp(volume: Int, duration: Int) {} +/// } /// -/// given(bird.chirp(volume: arg(any(), at: 0), -/// duration: arg(any(), at: 1))).will { -/// print($0 as! Int, $1 as! Int) -/// } +/// given(bird.chirp(volume: arg(any(), at: 0), +/// duration: arg(any(), at: 1))).will { +/// print($0 as! Int, $1 as! Int) +/// } /// -/// bird.chirp(42, 9001) // Prints 42, 9001 +/// bird.chirp(42, 9001) // Prints 42, 9001 +/// ``` /// /// This is equivalent to the verbose form of declaring an argument position. /// -/// given(bird.chirp(volume: firstArg(any()), -/// duration: secondArg(any()))).will { -/// print($0 as! Int, $1 as! Int) -/// } +/// ```swift +/// given(bird.chirp(volume: firstArg(any()), +/// duration: secondArg(any()))).will { +/// print($0 as! Int, $1 as! Int) +/// } +/// ``` /// /// - Note: This helper has no effect on argument matchers passed to statically generated Swift /// mocks or to object parameter types. @@ -52,23 +56,27 @@ public func arg(_ matcher: @autoclosure () -> T, at position: Int) -> T { /// You must provide an explicit argument position when using argument matchers on an Objective-C /// method with multiple value type parameters. /// -/// @objc class Bird: NSObject { -/// @objc dynamic func chirp(volume: Int, duration: Int) {} -/// } +/// ```swift +/// @objc class Bird: NSObject { +/// @objc dynamic func chirp(volume: Int, duration: Int) {} +/// } /// -/// given(bird.chirp(volume: firstArg(any()), -/// duration: secondArg(any()))).will { -/// print($0 as! Int, $1 as! Int) -/// } +/// given(bird.chirp(volume: firstArg(any()), +/// duration: secondArg(any()))).will { +/// print($0 as! Int, $1 as! Int) +/// } /// -/// bird.chirp(42, 9001) // Prints 42, 9001 +/// bird.chirp(42, 9001) // Prints 42, 9001 +/// ``` /// /// This is equivalent to the verbose form of declaring an argument position. /// -/// given(bird.chirp(volume: arg(any(), at: 0), -/// duration: arg(any(), at: 1))).will { -/// print($0 as! Int, $1 as! Int) -/// } +/// ```swift +/// given(bird.chirp(volume: arg(any(), at: 0), +/// duration: arg(any(), at: 1))).will { +/// print($0 as! Int, $1 as! Int) +/// } +/// ``` /// /// - Note: This helper has no effect on argument matchers passed to statically generated Swift /// mocks or to object parameter types. @@ -84,23 +92,27 @@ public func firstArg(_ matcher: @autoclosure () -> T) -> T { /// You must provide an explicit argument position when using argument matchers on an Objective-C /// method with multiple value type parameters. /// -/// @objc class Bird: NSObject { -/// @objc dynamic func chirp(volume: Int, duration: Int) {} -/// } +/// ```swift +/// @objc class Bird: NSObject { +/// @objc dynamic func chirp(volume: Int, duration: Int) {} +/// } /// -/// given(bird.chirp(volume: firstArg(any()), -/// duration: secondArg(any()))).will { -/// print($0 as! Int, $1 as! Int) -/// } +/// given(bird.chirp(volume: firstArg(any()), +/// duration: secondArg(any()))).will { +/// print($0 as! Int, $1 as! Int) +/// } /// -/// bird.chirp(42, 9001) // Prints 42, 9001 +/// bird.chirp(42, 9001) // Prints 42, 9001 +/// ``` /// /// This is equivalent to the verbose form of declaring an argument position. /// -/// given(bird.chirp(volume: arg(any(), at: 0), -/// duration: arg(any(), at: 1))).will { -/// print($0 as! Int, $1 as! Int) -/// } +/// ```swift +/// given(bird.chirp(volume: arg(any(), at: 0), +/// duration: arg(any(), at: 1))).will { +/// print($0 as! Int, $1 as! Int) +/// } +/// ``` /// /// - Note: This helper has no effect on argument matchers passed to statically generated Swift /// mocks or to object parameter types. @@ -116,23 +128,27 @@ public func secondArg(_ matcher: @autoclosure () -> T) -> T { /// You must provide an explicit argument position when using argument matchers on an Objective-C /// method with multiple value type parameters. /// -/// @objc class Bird: NSObject { -/// @objc dynamic func chirp(volume: Int, duration: Int) {} -/// } +/// ```swift +/// @objc class Bird: NSObject { +/// @objc dynamic func chirp(volume: Int, duration: Int) {} +/// } /// -/// given(bird.chirp(volume: firstArg(any()), -/// duration: secondArg(any()))).will { -/// print($0 as! Int, $1 as! Int) -/// } +/// given(bird.chirp(volume: firstArg(any()), +/// duration: secondArg(any()))).will { +/// print($0 as! Int, $1 as! Int) +/// } /// -/// bird.chirp(42, 9001) // Prints 42, 9001 +/// bird.chirp(42, 9001) // Prints 42, 9001 +/// ``` /// /// This is equivalent to the verbose form of declaring an argument position. /// -/// given(bird.chirp(volume: arg(any(), at: 0), -/// duration: arg(any(), at: 1))).will { -/// print($0 as! Int, $1 as! Int) -/// } +/// ```swift +/// given(bird.chirp(volume: arg(any(), at: 0), +/// duration: arg(any(), at: 1))).will { +/// print($0 as! Int, $1 as! Int) +/// } +/// ``` /// /// - Note: This helper has no effect on argument matchers passed to statically generated Swift /// mocks or to object parameter types. @@ -148,23 +164,27 @@ public func thirdArg(_ matcher: @autoclosure () -> T) -> T { /// You must provide an explicit argument position when using argument matchers on an Objective-C /// method with multiple value type parameters. /// -/// @objc class Bird: NSObject { -/// @objc dynamic func chirp(volume: Int, duration: Int) {} -/// } +/// ```swift +/// @objc class Bird: NSObject { +/// @objc dynamic func chirp(volume: Int, duration: Int) {} +/// } /// -/// given(bird.chirp(volume: firstArg(any()), -/// duration: secondArg(any()))).will { -/// print($0 as! Int, $1 as! Int) -/// } +/// given(bird.chirp(volume: firstArg(any()), +/// duration: secondArg(any()))).will { +/// print($0 as! Int, $1 as! Int) +/// } /// -/// bird.chirp(42, 9001) // Prints 42, 9001 +/// bird.chirp(42, 9001) // Prints 42, 9001 +/// ``` /// /// This is equivalent to the verbose form of declaring an argument position. /// -/// given(bird.chirp(volume: arg(any(), at: 0), -/// duration: arg(any(), at: 1))).will { -/// print($0 as! Int, $1 as! Int) -/// } +/// ```swift +/// given(bird.chirp(volume: arg(any(), at: 0), +/// duration: arg(any(), at: 1))).will { +/// print($0 as! Int, $1 as! Int) +/// } +/// ``` /// /// - Note: This helper has no effect on argument matchers passed to statically generated Swift /// mocks or to object parameter types. @@ -180,23 +200,27 @@ public func fourthArg(_ matcher: @autoclosure () -> T) -> T { /// You must provide an explicit argument position when using argument matchers on an Objective-C /// method with multiple value type parameters. /// -/// @objc class Bird: NSObject { -/// @objc dynamic func chirp(volume: Int, duration: Int) {} -/// } +/// ```swift +/// @objc class Bird: NSObject { +/// @objc dynamic func chirp(volume: Int, duration: Int) {} +/// } /// -/// given(bird.chirp(volume: firstArg(any()), -/// duration: secondArg(any()))).will { -/// print($0 as! Int, $1 as! Int) -/// } +/// given(bird.chirp(volume: firstArg(any()), +/// duration: secondArg(any()))).will { +/// print($0 as! Int, $1 as! Int) +/// } /// -/// bird.chirp(42, 9001) // Prints 42, 9001 +/// bird.chirp(42, 9001) // Prints 42, 9001 +/// ``` /// /// This is equivalent to the verbose form of declaring an argument position. /// -/// given(bird.chirp(volume: arg(any(), at: 0), -/// duration: arg(any(), at: 1))).will { -/// print($0 as! Int, $1 as! Int) -/// } +/// ```swift +/// given(bird.chirp(volume: arg(any(), at: 0), +/// duration: arg(any(), at: 1))).will { +/// print($0 as! Int, $1 as! Int) +/// } +/// ``` /// /// - Note: This helper has no effect on argument matchers passed to statically generated Swift /// mocks or to object parameter types. diff --git a/Sources/MockingbirdFramework/Matching/CollectionMatchers.swift b/Sources/MockingbirdFramework/Matching/CollectionMatchers.swift index dc56af73..376399ea 100644 --- a/Sources/MockingbirdFramework/Matching/CollectionMatchers.swift +++ b/Sources/MockingbirdFramework/Matching/CollectionMatchers.swift @@ -13,30 +13,34 @@ import Foundation /// Use the argument matcher `any(containing:)` to match collections that contain all specified /// values. /// -/// protocol Bird { -/// func send(_ messages: [String]) -/// } +/// ```swift +/// protocol Bird { +/// func send(_ messages: [String]) +/// } /// -/// given(bird.send(any(containing: "Hi", "Hello"))) -/// .will { print($0) } +/// given(bird.send(any(containing: "Hi", "Hello"))) +/// .will { print($0) } /// -/// bird.send(["Hi", "Hello"]) // Prints ["Hi", "Hello"] -/// bird.send(["Hi", "Bye"]) // Error: Missing stubbed implementation -/// bird.send(["Bye"]) // Error: Missing stubbed implementation +/// bird.send(["Hi", "Hello"]) // Prints ["Hi", "Hello"] +/// bird.send(["Hi", "Bye"]) // Error: Missing stubbed implementation +/// bird.send(["Bye"]) // Error: Missing stubbed implementation +/// ``` /// /// Methods overloaded by parameter type can be disambiguated by explicitly specifying the type. /// -/// protocol Bird { -/// func send(_ messages: [T]) // Overloaded generically -/// func send(_ messages: [String]) // Overloaded explicitly -/// func send(_ messages: [Data]) -/// } +/// ```swift +/// protocol Bird { +/// func send(_ messages: [T]) // Overloaded generically +/// func send(_ messages: [String]) // Overloaded explicitly +/// func send(_ messages: [Data]) +/// } /// -/// given(bird.send(any([String].self, containing: ["Hi", "Hello"]))) -/// .will { print($0) } +/// given(bird.send(any([String].self, containing: ["Hi", "Hello"]))) +/// .will { print($0) } /// -/// bird.send(["Hi", "Hello"]) // Prints ["Hi", "Hello"] -/// bird.send([Data([1]), Data(2)]) // Error: Missing stubbed implementation +/// bird.send(["Hi", "Hello"]) // Prints ["Hi", "Hello"] +/// bird.send([Data([1]), Data(2)]) // Error: Missing stubbed implementation +/// ``` /// /// - Parameters: /// - type: The parameter type used to disambiguate overloaded methods. @@ -61,47 +65,51 @@ public func any(_ type: T.Type = T.self, containing values: T.Ele /// Use the argument matcher `any(containing:)` to match dictionaries that contain all specified /// values. /// -/// protocol Bird { -/// func send(_ messages: [UUID: String]) -/// } +/// ```swift +/// protocol Bird { +/// func send(_ messages: [UUID: String]) +/// } /// -/// given(bird.send(any(containing: "Hi", "Hello"))) -/// .will { print($0) } +/// given(bird.send(any(containing: "Hi", "Hello"))) +/// .will { print($0) } /// -/// bird.send([ -/// UUID(): "Hi", -/// UUID(): "Hello", -/// ]) // Prints ["Hi", "Hello"] +/// bird.send([ +/// UUID(): "Hi", +/// UUID(): "Hello", +/// ]) // Prints ["Hi", "Hello"] /// -/// bird.send([ -/// UUID(): "Hi", -/// UUID(): "Bye", -/// ]) // Error: Missing stubbed implementation +/// bird.send([ +/// UUID(): "Hi", +/// UUID(): "Bye", +/// ]) // Error: Missing stubbed implementation /// -/// bird.send([ -/// UUID(): "Bye", -/// ]) // Error: Missing stubbed implementation +/// bird.send([ +/// UUID(): "Bye", +/// ]) // Error: Missing stubbed implementation +/// ``` /// /// Methods overloaded by parameter type can be disambiguated by explicitly specifying the type. /// -/// protocol Bird { -/// func send(_ messages: [UUID: T]) // Overloaded generically -/// func send(_ messages: [UUID: String]) // Overloaded explicitly -/// func send(_ messages: [UUID: Data]) -/// } +/// ```swift +/// protocol Bird { +/// func send(_ messages: [UUID: T]) // Overloaded generically +/// func send(_ messages: [UUID: String]) // Overloaded explicitly +/// func send(_ messages: [UUID: Data]) +/// } /// -/// given(bird.send(any([UUID: String].self, containing: "Hi", "Hello"))) -/// .will { print($0) } +/// given(bird.send(any([UUID: String].self, containing: "Hi", "Hello"))) +/// .will { print($0) } /// -/// bird.send([ -/// UUID(): "Hi", -/// UUID(): "Hello", -/// ]) // Prints ["Hi", "Hello"] +/// bird.send([ +/// UUID(): "Hi", +/// UUID(): "Hello", +/// ]) // Prints ["Hi", "Hello"] /// -/// bird.send([ -/// UUID(): Data([1]), -/// UUID(): Data([2]), -/// ]) // Error: Missing stubbed implementation +/// bird.send([ +/// UUID(): Data([1]), +/// UUID(): Data([2]), +/// ]) // Error: Missing stubbed implementation +/// ``` /// /// - Parameters: /// - type: The parameter type used to disambiguate overloaded methods. @@ -126,47 +134,51 @@ public func any(_ type: Dictionary.Type = Dictionary.self, /// Argument matching allows you to stub or verify specific invocations of parameterized methods. /// Use the argument matcher `any(keys:)` to match dictionaries that contain all specified keys. /// -/// protocol Bird { -/// func send(_ messages: [UUID: String]) -/// } +/// ```swift +/// protocol Bird { +/// func send(_ messages: [UUID: String]) +/// } /// -/// let messageId1 = UUID() -/// let messageId2 = UUID() -/// given(bird.send(any(keys: messageId1, messageId2))) -/// .will { print($0) } +/// let messageId1 = UUID() +/// let messageId2 = UUID() +/// given(bird.send(any(keys: messageId1, messageId2))) +/// .will { print($0) } /// -/// bird.send([ -/// messageId1: "Hi", -/// messageId2: "Hello", -/// ]) // Prints ["Hi", "Hello"] +/// bird.send([ +/// messageId1: "Hi", +/// messageId2: "Hello", +/// ]) // Prints ["Hi", "Hello"] /// -/// bird.send([ -/// UUID(): "Hi", -/// UUID(): "Hello", -/// ]) // Error: Missing stubbed implementation +/// bird.send([ +/// UUID(): "Hi", +/// UUID(): "Hello", +/// ]) // Error: Missing stubbed implementation +/// ``` /// /// Methods overloaded by parameter type can be disambiguated by explicitly specifying the type. /// -/// protocol Bird { -/// func send(_ messages: [UUID: T]) // Overloaded generically -/// func send(_ messages: [UUID: String]) // Overloaded explicitly -/// func send(_ messages: [UUID: Data]) -/// } -/// -/// let messageId1 = UUID() -/// let messageId2 = UUID() -/// given(bird.send(any([UUID: String].self, keys: messageId1, messageId2))) -/// .will { print($0) } -/// -/// bird.send([ -/// messageId1: "Hi", -/// messageId2: "Hello", -/// ]) // Prints ["Hi", "Hello"] -/// -/// bird.send([ -/// messageId1: Data([1]), -/// messageId2: Data([2]), -/// ]) // Error: Missing stubbed implementation +/// ```swift +/// protocol Bird { +/// func send(_ messages: [UUID: T]) // Overloaded generically +/// func send(_ messages: [UUID: String]) // Overloaded explicitly +/// func send(_ messages: [UUID: Data]) +/// } +/// +/// let messageId1 = UUID() +/// let messageId2 = UUID() +/// given(bird.send(any([UUID: String].self, keys: messageId1, messageId2))) +/// .will { print($0) } +/// +/// bird.send([ +/// messageId1: "Hi", +/// messageId2: "Hello", +/// ]) // Prints ["Hi", "Hello"] +/// +/// bird.send([ +/// messageId1: Data([1]), +/// messageId2: Data([2]), +/// ]) // Error: Missing stubbed implementation +/// ``` /// /// - Parameters: /// - type: The parameter type used to disambiguate overloaded methods. @@ -191,28 +203,32 @@ public func any(_ type: Dictionary.Type = Dictionary.self, /// Argument matching allows you to stub or verify specific invocations of parameterized methods. /// Use the argument matcher `any(count:)` to match collections with a specific number of elements. /// -/// protocol Bird { -/// func send(_ messages: [String]) -/// } +/// ```swift +/// protocol Bird { +/// func send(_ messages: [String]) +/// } /// -/// given(bird.send(any(count: 2))).will { print($0) } +/// given(bird.send(any(count: 2))).will { print($0) } /// -/// bird.send(["Hi", "Hello"]) // Prints ["Hi", "Hello"] -/// bird.send(["Hi"]) // Error: Missing stubbed implementation +/// bird.send(["Hi", "Hello"]) // Prints ["Hi", "Hello"] +/// bird.send(["Hi"]) // Error: Missing stubbed implementation +/// ``` /// /// Methods overloaded by parameter type can be disambiguated by explicitly specifying the type. /// -/// protocol Bird { -/// func send(_ messages: [T]) // Overloaded generically -/// func send(_ messages: [String]) // Overloaded explicitly -/// func send(_ messages: [Data]) -/// } +/// ```swift +/// protocol Bird { +/// func send(_ messages: [T]) // Overloaded generically +/// func send(_ messages: [String]) // Overloaded explicitly +/// func send(_ messages: [Data]) +/// } /// -/// given(bird.send(any([String].self, count: 2))) -/// .will { print($0) } +/// given(bird.send(any([String].self, count: 2))) +/// .will { print($0) } /// -/// bird.send(["Hi", "Hello"]) // Prints ["Hi", "Hello"] -/// bird.send([Data([1]), Data([2])]) // Error: Missing stubbed implementation +/// bird.send(["Hi", "Hello"]) // Prints ["Hi", "Hello"] +/// bird.send([Data([1]), Data([2])]) // Error: Missing stubbed implementation +/// ``` /// /// - Parameters: /// - type: The parameter type used to disambiguate overloaded methods. @@ -233,28 +249,32 @@ public func any(_ type: T.Type = T.self, count countMatcher: Coun /// Argument matching allows you to stub or verify specific invocations of parameterized methods. /// Use the argument matcher `notEmpty` to match collections with one or more elements. /// -/// protocol Bird { -/// func send(_ messages: [String]) -/// } +/// ```swift +/// protocol Bird { +/// func send(_ messages: [String]) +/// } /// -/// given(bird.send(any(count: 2))).will { print($0) } +/// given(bird.send(any(count: 2))).will { print($0) } /// -/// bird.send(["Hi"]) // Prints ["Hi"] -/// bird.send([]) // Error: Missing stubbed implementation +/// bird.send(["Hi"]) // Prints ["Hi"] +/// bird.send([]) // Error: Missing stubbed implementation +/// ``` /// /// Methods overloaded by parameter type can be disambiguated by explicitly specifying the type. /// -/// protocol Bird { -/// func send(_ messages: [T]) // Overloaded generically -/// func send(_ messages: [String]) // Overloaded explicitly -/// func send(_ messages: [Data]) -/// } +/// ```swift +/// protocol Bird { +/// func send(_ messages: [T]) // Overloaded generically +/// func send(_ messages: [String]) // Overloaded explicitly +/// func send(_ messages: [Data]) +/// } /// -/// given(bird.send(notEmpty([String].self))) -/// .will { print($0) } +/// given(bird.send(notEmpty([String].self))) +/// .will { print($0) } /// -/// bird.send(["Hi"]) // Prints ["Hi"] -/// bird.send([Data([1])]) // Error: Missing stubbed implementation +/// bird.send(["Hi"]) // Prints ["Hi"] +/// bird.send([Data([1])]) // Error: Missing stubbed implementation +/// ``` /// /// - Parameter type: The parameter type used to disambiguate overloaded methods. public func notEmpty(_ type: T.Type = T.self) -> T { @@ -267,16 +287,18 @@ public func notEmpty(_ type: T.Type = T.self) -> T { /// /// Mathematical operations on floating point numbers can cause loss of precision. Fuzzily match floating point arguments instead of using exact values to increase the robustness of tests. /// -/// protocol Bird { -/// func canChirp(volume: Double) -> Bool -/// } +/// ```swift +/// protocol Bird { +/// func canChirp(volume: Double) -> Bool +/// } /// -/// given(bird.canChirp(volume: around(42.0, tolerance: 0.1))) -/// .willReturn(true) +/// given(bird.canChirp(volume: around(42.0, tolerance: 0.1))) +/// .willReturn(true) /// -/// print(bird.canChirp(volume: 42.0)) // Prints "true" -/// print(bird.canChirp(volume: 42.0999)) // Prints "true" -/// print(bird.canChirp(volume: 42.1)) // Prints "false" +/// print(bird.canChirp(volume: 42.0)) // Prints "true" +/// print(bird.canChirp(volume: 42.0999)) // Prints "true" +/// print(bird.canChirp(volume: 42.1)) // Prints "false" +/// ``` /// /// - Parameters: /// - value: The expected value. diff --git a/Sources/MockingbirdFramework/Matching/CountMatcher.swift b/Sources/MockingbirdFramework/Matching/CountMatcher.swift index 06776094..b5f21d80 100644 --- a/Sources/MockingbirdFramework/Matching/CountMatcher.swift +++ b/Sources/MockingbirdFramework/Matching/CountMatcher.swift @@ -45,16 +45,20 @@ public let twice: Int = 2 /// The `exactly` count matcher can be used to verify that the actual number of invocations received /// by a mock equals the expected number of invocations. /// -/// // Given two invocations (n = 2) -/// bird.fly() -/// bird.fly() +/// ```swift +/// // Given two invocations (n = 2) +/// bird.fly() +/// bird.fly() /// -/// verify(bird.fly()).wasCalled(exactly(1)) // Fails (n ≠ 1) -/// verify(bird.fly()).wasCalled(exactly(2)) // Passes +/// verify(bird.fly()).wasCalled(exactly(1)) // Fails (n ≠ 1) +/// verify(bird.fly()).wasCalled(exactly(2)) // Passes +/// ``` /// /// You can combine count matchers with adverbial counts for improved readability. /// -/// verify(bird.fly()).wasCalled(exactly(once)) +/// ```swift +/// verify(bird.fly()).wasCalled(exactly(once)) +/// ``` /// /// - Parameter times: An exact integer count. /// - Returns: A count matcher. @@ -67,17 +71,21 @@ public func exactly(_ times: Int) -> CountMatcher { /// The `atLeast` count matcher can be used to verify that the actual number of invocations received /// by a mock is greater than or equal to the expected number of invocations. /// -/// // Given two invocations (n = 2) -/// bird.fly() -/// bird.fly() +/// ```swift +/// // Given two invocations (n = 2) +/// bird.fly() +/// bird.fly() /// -/// verify(bird.fly()).wasCalled(atLeast(1)) // Passes -/// verify(bird.fly()).wasCalled(atLeast(2)) // Passes -/// verify(bird.fly()).wasCalled(atLeast(3)) // Fails (n < 3) +/// verify(bird.fly()).wasCalled(atLeast(1)) // Passes +/// verify(bird.fly()).wasCalled(atLeast(2)) // Passes +/// verify(bird.fly()).wasCalled(atLeast(3)) // Fails (n < 3) +/// ``` /// /// You can combine count matchers with adverbial counts for improved readability. /// -/// verify(bird.fly()).wasCalled(atLeast(once)) +/// ```swift +/// verify(bird.fly()).wasCalled(atLeast(once)) +/// ``` /// /// - Parameter times: An inclusive lower bound. /// - Returns: A count matcher. @@ -90,17 +98,21 @@ public func atLeast(_ times: Int) -> CountMatcher { /// The `atMost` count matcher can be used to verify that the actual number of invocations received /// by a mock is less than or equal to the expected number of invocations. /// -/// // Given two invocations (n = 2) -/// bird.fly() -/// bird.fly() +/// ```swift +/// // Given two invocations (n = 2) +/// bird.fly() +/// bird.fly() /// -/// verify(bird.fly()).wasCalled(atMost(1)) // Fails (n > 1) -/// verify(bird.fly()).wasCalled(atMost(2)) // Passes -/// verify(bird.fly()).wasCalled(atMost(3)) // Passes +/// verify(bird.fly()).wasCalled(atMost(1)) // Fails (n > 1) +/// verify(bird.fly()).wasCalled(atMost(2)) // Passes +/// verify(bird.fly()).wasCalled(atMost(3)) // Passes +/// ``` /// /// You can combine count matchers with adverbial counts for improved readability. /// -/// verify(bird.fly()).wasCalled(atMost(once)) +/// ```swift +/// verify(bird.fly()).wasCalled(atMost(once)) +/// ``` /// /// - Parameter times: An inclusive upper bound. /// - Returns: A count matcher. @@ -113,16 +125,20 @@ public func atMost(_ times: Int) -> CountMatcher { /// The `between` count matcher can be used to verify that the actual number of invocations received /// by a mock is within an inclusive range of expected invocations. /// -/// // Given two invocations (n = 2) -/// bird.fly() -/// bird.fly() +/// ```swift +/// // Given two invocations (n = 2) +/// bird.fly() +/// bird.fly() /// -/// verify(bird.fly()).wasCalled(between(1...2)) // Passes -/// verify(bird.fly()).wasCalled(between(3...4)) // Fails (3 ≮ n < 4) +/// verify(bird.fly()).wasCalled(between(1...2)) // Passes +/// verify(bird.fly()).wasCalled(between(3...4)) // Fails (3 ≮ n < 4) +/// ``` /// /// You can combine count matchers with adverbial counts for improved readability. /// -/// verify(bird.fly()).wasCalled(between(once...twice)) +/// ```swift +/// verify(bird.fly()).wasCalled(between(once...twice)) +/// ``` /// /// - Parameter range: An closed integer range. /// - Returns: A count matcher. @@ -138,8 +154,10 @@ extension CountMatcher { /// Combined count matchers can be used to perform complex checks on the number of invocations /// received. /// - /// // Checks that n = 1 || n ≥ 42 - /// verify(bird.fly()).wasCalled(exactly(once).or(atLeast(42))) + /// ```swift + /// // Checks that n = 1 || n ≥ 42 + /// verify(bird.fly()).wasCalled(exactly(once).or(atLeast(42))) + /// ``` /// /// - Parameter countMatcher: Another count matcher to combine. /// - Returns: A combined count matcher. @@ -160,8 +178,10 @@ extension CountMatcher { /// Combined count matchers can be used to perform complex checks on the number of invocations /// received. /// - /// // Checks that n = 1 || n = 2 - /// verify(bird.fly()).wasCalled(exactly(once).or(twice)) + /// ```swift + /// // Checks that n = 1 || n = 2 + /// verify(bird.fly()).wasCalled(exactly(once).or(twice)) + /// ``` /// /// - Parameter times: An exact count to combine. /// - Returns: A combined count matcher. @@ -172,8 +192,10 @@ extension CountMatcher { /// Combined count matchers can be used to perform complex checks on the number of invocations /// received. /// - /// // Checks that n = 1 && n ≥ 42 - /// verify(bird.fly()).wasCalled(exactly(once).and(atLeast(42))) + /// ```swift + /// // Checks that n = 1 && n ≥ 42 + /// verify(bird.fly()).wasCalled(exactly(once).and(atLeast(42))) + /// ``` /// /// - Parameter countMatcher: Another count matcher to combine. /// - Returns: A combined count matcher. @@ -194,8 +216,10 @@ extension CountMatcher { /// Combined count matchers can be used to perform complex checks on the number of invocations /// received. /// - /// // Checks that n ≤ 2 ⊕ n ≥ 1 - /// verify(bird.fly()).wasCalled(atMost(twice).xor(atLeast(once))) + /// ```swift + /// // Checks that n ≤ 2 ⊕ n ≥ 1 + /// verify(bird.fly()).wasCalled(atMost(twice).xor(atLeast(once))) + /// ``` /// /// - Parameter countMatcher: Another count matcher to combine. /// - Returns: A combined count matcher. @@ -216,8 +240,10 @@ extension CountMatcher { /// Combined count matchers can be used to perform complex checks on the number of invocations /// received. /// - /// // Checks that n ≥ 1 ⊕ n = 2 - /// verify(bird.fly()).wasCalled(atLeast(once).xor(twice)) + /// ```swift + /// // Checks that n ≥ 1 ⊕ n = 2 + /// verify(bird.fly()).wasCalled(atLeast(once).xor(twice)) + /// ``` /// /// - Parameter times: An exact count. /// - Returns: A combined count matcher. @@ -229,8 +255,10 @@ extension CountMatcher { /// Combined count matchers can be used to perform complex checks on the number of invocations /// received. /// -/// // Checks that n ≠ 1 -/// verify(bird.fly()).wasCalled(not(exactly(once))) +/// ```swift +/// // Checks that n ≠ 1 +/// verify(bird.fly()).wasCalled(not(exactly(once))) +/// ``` /// /// - Parameter countMatcher: A count matcher to negate. /// - Returns: A negated count matcher. @@ -248,8 +276,10 @@ public func not(_ countMatcher: CountMatcher) -> CountMatcher { /// Combined count matchers can be used to perform complex checks on the number of invocations /// received. /// -/// // Checks that n ≠ 1 -/// verify(bird.fly()).wasCalled(not(once)) +/// ```swift +/// // Checks that n ≠ 1 +/// verify(bird.fly()).wasCalled(not(once)) +/// ``` /// /// - Parameter countMatcher: An exact count to negate. /// - Returns: A negated count matcher. diff --git a/Sources/MockingbirdFramework/Matching/NonEscapingType.swift b/Sources/MockingbirdFramework/Matching/NonEscapingType.swift index ee73b7e1..866e186b 100644 --- a/Sources/MockingbirdFramework/Matching/NonEscapingType.swift +++ b/Sources/MockingbirdFramework/Matching/NonEscapingType.swift @@ -15,24 +15,28 @@ protocol NonEscapingType {} /// Non-escaping closures cannot be stored in an `Invocation` so an instance of a /// `NonEscapingClosure` is stored instead. /// -/// protocol Bird { -/// func send(_ message: String, callback: (Result) -> Void) -/// } +/// ```swift +/// protocol Bird { +/// func send(_ message: String, callback: (Result) -> Void) +/// } /// -/// bird.send("Hello", callback: { print($0) }) +/// bird.send("Hello", callback: { print($0) }) /// -/// // Must use a wildcard argument matcher like `any` -/// verify(bird.send("Hello", callback: any())).wasCalled() +/// // Must use a wildcard argument matcher like `any` +/// verify(bird.send("Hello", callback: any())).wasCalled() +/// ``` /// /// Mark closure parameter types as `@escaping` to capture closures during verification. /// -/// protocol Bird { -/// func send(_ message: String, callback: @escaping (Result) -> Void) -/// } +/// ```swift +/// protocol Bird { +/// func send(_ message: String, callback: @escaping (Result) -> Void) +/// } /// -/// bird.send("Hello", callback: { print($0) }) +/// bird.send("Hello", callback: { print($0) }) /// -/// let argumentCaptor = ArgumentCaptor<(Result) -> Void>() -/// verify(bird.send("Hello", callback: argumentCaptor.matcher)).wasCalled() -/// argumentCaptor.value?(.success) // Prints Result.success +/// let argumentCaptor = ArgumentCaptor<(Result) -> Void>() +/// verify(bird.send("Hello", callback: argumentCaptor.matcher)).wasCalled() +/// argumentCaptor.value?(.success) // Prints Result.success +/// ``` public class NonEscapingClosure: NonEscapingType {} diff --git a/Sources/MockingbirdFramework/Matching/WildcardMatchers.swift b/Sources/MockingbirdFramework/Matching/WildcardMatchers.swift index 91e493f8..4deab144 100644 --- a/Sources/MockingbirdFramework/Matching/WildcardMatchers.swift +++ b/Sources/MockingbirdFramework/Matching/WildcardMatchers.swift @@ -13,24 +13,28 @@ import Foundation /// Use the wildcard argument matcher `any` as a type safe placeholder for matching any argument /// value. /// -/// given(bird.canChirp(volume: any())).willReturn(true) -/// print(bird.canChirp(volume: 10)) // Prints "true" -/// verify(bird.canChirp(volume: any())).wasCalled() +/// ```swift +/// given(bird.canChirp(volume: any())).willReturn(true) +/// print(bird.canChirp(volume: 10)) // Prints "true" +/// verify(bird.canChirp(volume: any())).wasCalled() +/// ``` /// /// Methods overloaded by parameter type can be disambiguated by explicitly specifying the type. /// -/// protocol Bird { -/// func send(_ message: T) // Overloaded generically -/// func send(_ message: String) // Overloaded explicitly -/// func send(_ message: Data) -/// } +/// ```swift +/// protocol Bird { +/// func send(_ message: T) // Overloaded generically +/// func send(_ message: String) // Overloaded explicitly +/// func send(_ message: Data) +/// } /// -/// given(bird.send(any(String.self))).will { print($0) } +/// given(bird.send(any(String.self))).will { print($0) } /// -/// bird.send("Hello") // Prints "Hello" +/// bird.send("Hello") // Prints "Hello" /// -/// verify(bird.send(any(String.self))).wasCalled() -/// verify(bird.send(any(Data.self))).wasNeverCalled() +/// verify(bird.send(any(String.self))).wasCalled() +/// verify(bird.send(any(Data.self))).wasNeverCalled() +/// ``` /// /// - Parameter type: The parameter type used to disambiguate overloaded methods. public func any(_ type: T.Type = T.self) -> T { @@ -49,30 +53,34 @@ public func any(_ type: T.Type = T.self) -> T { /// Use the wildcard argument matcher `any` as a type safe placeholder for matching any argument /// value. /// -/// // Protocol referencing Obj-C object types -/// protocol Bird { -/// func canChirp(volume: NSNumber) -> Bool -/// } +/// ```swift +/// // Protocol referencing Obj-C object types +/// protocol Bird { +/// func canChirp(volume: NSNumber) -> Bool +/// } /// -/// given(bird.canChirp(volume: any())).willReturn(true) -/// print(bird.canChirp(volume: 10)) // Prints "true" -/// verify(bird.canChirp(volume: any())).wasCalled() +/// given(bird.canChirp(volume: any())).willReturn(true) +/// print(bird.canChirp(volume: 10)) // Prints "true" +/// verify(bird.canChirp(volume: any())).wasCalled() +/// ``` /// /// Methods overloaded by parameter type can be disambiguated by explicitly specifying the type. /// -/// // Protocol referencing Obj-C object types -/// protocol Bird { -/// func send(_ message: T) // Overloaded generically -/// func send(_ message: NSString) // Overloaded explicitly -/// func send(_ message: NSData) -/// } +/// ```swift +/// // Protocol referencing Obj-C object types +/// protocol Bird { +/// func send(_ message: T) // Overloaded generically +/// func send(_ message: NSString) // Overloaded explicitly +/// func send(_ message: NSData) +/// } /// -/// given(bird.send(any(NSString.self))).will { print($0) } +/// given(bird.send(any(NSString.self))).will { print($0) } /// -/// bird.send("Hello") // Prints "Hello" +/// bird.send("Hello") // Prints "Hello" /// -/// verify(bird.send(any(NSString.self))).wasCalled() -/// verify(bird.send(any(NSData.self))).wasNeverCalled() +/// verify(bird.send(any(NSString.self))).wasCalled() +/// verify(bird.send(any(NSData.self))).wasNeverCalled() +/// ``` /// /// - Parameter type: The parameter type used to disambiguate overloaded methods. public func any(_ type: T.Type = T.self) -> T { @@ -91,31 +99,35 @@ public func any(_ type: T.Type = T.self) -> T { /// Use the argument matcher `any(of:)` to match `Equatable` argument values equal to one or more of /// the specified values. /// -/// given(bird.canChirp(volume: any(of: 1, 3))) -/// .willReturn(true) +/// ```swift +/// given(bird.canChirp(volume: any(of: 1, 3))) +/// .willReturn(true) /// -/// given(bird.canChirp(volume: any(of: 2, 4))) -/// .willReturn(false) +/// given(bird.canChirp(volume: any(of: 2, 4))) +/// .willReturn(false) /// -/// print(bird.canChirp(volume: 1)) // Prints "true" -/// print(bird.canChirp(volume: 2)) // Prints "false" -/// print(bird.canChirp(volume: 3)) // Prints "true" -/// print(bird.canChirp(volume: 4)) // Prints "false" +/// print(bird.canChirp(volume: 1)) // Prints "true" +/// print(bird.canChirp(volume: 2)) // Prints "false" +/// print(bird.canChirp(volume: 3)) // Prints "true" +/// print(bird.canChirp(volume: 4)) // Prints "false" +/// ``` /// /// Methods overloaded by parameter type can be disambiguated by explicitly specifying the type. /// -/// protocol Bird { -/// func send(_ message: T) // Overloaded generically -/// func send(_ message: String) // Overloaded explicitly -/// func send(_ message: Data) -/// } +/// ```swift +/// protocol Bird { +/// func send(_ message: T) // Overloaded generically +/// func send(_ message: String) // Overloaded explicitly +/// func send(_ message: Data) +/// } /// -/// given(bird.send(any(String.self, of: "Hi", "Hello"))) -/// .will { print($0) } +/// given(bird.send(any(String.self, of: "Hi", "Hello"))) +/// .will { print($0) } /// -/// bird.send("Hi") // Prints "Hi" -/// bird.send("Hello") // Prints "Hello" -/// bird.send("Bye") // Error: Missing stubbed implementation +/// bird.send("Hi") // Prints "Hi" +/// bird.send("Hello") // Prints "Hello" +/// bird.send("Bye") // Error: Missing stubbed implementation +/// ``` /// /// - Parameters: /// - type: The parameter type used to disambiguate overloaded methods. @@ -134,50 +146,53 @@ public func any(_ type: T.Type = T.self, of objects: T...) -> T { /// Matches argument values identical to any of the provided values. /// /// Argument matching allows you to stub or verify specific invocations of parameterized methods. -/// Use the argument matcher `any(of:)` to match objects identical to one or more of the specified -/// values. +/// Use the argument matcher `any(of:)` to match class instances by identity. /// -/// // Reference type -/// class Location { -/// let name: String -/// init(name: String) { self.name = name } -/// } +/// - Note: Only objects that don’t conform to `Equatable` are compared by reference. /// -/// protocol Bird { -/// func fly(to location: Location) -/// } +/// ```swift +/// // Reference type +/// class Location { +/// let name: String +/// init(_ name: String) { self.name = name } +/// } /// -/// let home = Location(name: "Home") -/// let work = Location("Work") -/// given(bird.fly(to: any(of: home, work))) -/// .will { print($0.name) } +/// protocol Bird { +/// func fly(to location: Location) +/// } /// -/// bird.fly(to: home) // Prints "Home" -/// bird.fly(to: work) // Prints "Work" +/// let home = Location("Home") +/// let work = Location("Work") +/// given(bird.fly(to: any(of: home, work))) +/// .will { print($0.name) } /// -/// let hawaii = Location("Hawaii") -/// bird.fly(to: hawaii)) // Error: Missing stubbed implementation +/// bird.fly(to: home) // Prints "Home" +/// bird.fly(to: work) // Prints "Work" /// -/// Methods overloaded by parameter type can be disambiguated by explicitly specifying the type. +/// let hawaii = Location("Hawaii") +/// bird.fly(to: hawaii)) // Error: Missing stubbed implementation +/// ``` /// -/// protocol Bird { -/// func fly(to location: T) // Overloaded generically -/// func fly(to location: Location) // Overloaded explicitly -/// func fly(to locationName: String) -/// } +/// Methods overloaded by parameter type can be disambiguated by explicitly specifying the type. /// -/// given(bird.fly(to: any(String.self, of: "Home", "Work"))) -/// .will { print($0) } +/// ```swift +/// protocol Bird { +/// func fly(to location: T) // Overloaded generically +/// func fly(to location: Location) // Overloaded explicitly +/// func fly(to locationName: String) +/// } /// -/// bird.send("Home") // Prints "Hi" -/// bird.send("Work") // Prints "Hello" -/// bird.send("Hawaii") // Error: Missing stubbed implementation +/// given(bird.fly(to: any(String.self, of: "Home", "Work"))) +/// .will { print($0) } /// -/// - Note: Objects are compared by reference. +/// bird.send("Home") // Prints "Hi" +/// bird.send("Work") // Prints "Hello" +/// bird.send("Hawaii") // Error: Missing stubbed implementation +/// ``` /// /// - Parameters: /// - type: The parameter type used to disambiguate overloaded methods. -/// - objects: A set of non-equatable objects that should result in a match. +/// - objects: A set of reference type objects that should result in a match. public func any(_ type: T.Type = T.self, of objects: T...) -> T { let matcher = ArgumentMatcher( nil as T?, @@ -195,38 +210,42 @@ public func any(_ type: T.Type = T.self, of objects: T...) -> T { /// Use the argument matcher `any(where:)` to match objects with custom equality logic. This is /// particularly useful for parameter types that do not conform to `Equatable`. /// -/// // Value type not explicitly conforming to `Equatable` -/// struct Fruit { -/// let size: Int -/// } +/// ```swift +/// // Value type not explicitly conforming to `Equatable` +/// struct Fruit { +/// let size: Int +/// } /// -/// protocol Bird { -/// func eat(_ fruit: Fruit) -/// } +/// protocol Bird { +/// func eat(_ fruit: Fruit) +/// } /// -/// given(bird.eat(any(where: { $0.size < 100 }))) -/// .will { print($0.size) } +/// given(bird.eat(any(where: { $0.size < 100 }))) +/// .will { print($0.size) } /// -/// let apple = Fruit(size: 42) -/// bird.eat(apple) // Prints "42" +/// let apple = Fruit(size: 42) +/// bird.eat(apple) // Prints "42" /// -/// let pear = Fruit(size: 9001) -/// bird.eat(pear) // Error: Missing stubbed implementation +/// let pear = Fruit(size: 9001) +/// bird.eat(pear) // Error: Missing stubbed implementation +/// ``` /// /// Methods overloaded by parameter type can be disambiguated by explicitly specifying the type. /// -/// protocol Bird { -/// func eat(_ object: T) // Overloaded generically -/// func eat(_ fruit: Fruit) // Overloaded explicitly -/// func eat(_ fruits: [Fruit]) -/// } +/// ```swift +/// protocol Bird { +/// func eat(_ object: T) // Overloaded generically +/// func eat(_ fruit: Fruit) // Overloaded explicitly +/// func eat(_ fruits: [Fruit]) +/// } /// -/// given(bird.eat(any(Fruit.self, where: { $0.size < 100 }))) -/// .will { print($0) } +/// given(bird.eat(any(Fruit.self, where: { $0.size < 100 }))) +/// .will { print($0) } /// -/// let apple = Fruit(size: 42) -/// bird.eat(apple) // Prints "42" -/// bird.eat("Apple") // Error: Missing stubbed implementation +/// let apple = Fruit(size: 42) +/// bird.eat(apple) // Prints "42" +/// bird.eat("Apple") // Error: Missing stubbed implementation +/// ``` /// /// - Parameters: /// - type: The parameter type used to disambiguate overloaded methods. @@ -248,39 +267,43 @@ public func any(_ type: T.Type = T.self, where predicate: @escaping (_ value: /// Use the argument matcher `any(where:)` to match objects with custom equality logic. This is /// particularly useful for parameter types that do not conform to `Equatable`. /// -/// // Non-equatable class subclassing `NSObject` -/// class Fruit: NSObject { -/// let size: Int -/// init(size: Int) { self.size = size } -/// } +/// ```swift +/// // Non-equatable class subclassing `NSObject` +/// class Fruit: NSObject { +/// let size: Int +/// init(size: Int) { self.size = size } +/// } /// -/// protocol Bird { -/// func eat(_ fruit: Fruit) -/// } +/// protocol Bird { +/// func eat(_ fruit: Fruit) +/// } /// -/// given(bird.eat(any(where: { $0.size < 100 }))) -/// .will { print($0.size) } +/// given(bird.eat(any(where: { $0.size < 100 }))) +/// .will { print($0.size) } /// -/// let apple = Fruit(size: 42) -/// bird.eat(apple) // Prints "42" +/// let apple = Fruit(size: 42) +/// bird.eat(apple) // Prints "42" /// -/// let pear = Fruit(size: 9001) -/// bird.eat(pear) // Error: Missing stubbed implementation +/// let pear = Fruit(size: 9001) +/// bird.eat(pear) // Error: Missing stubbed implementation +/// ``` /// /// Methods overloaded by parameter type can be disambiguated by explicitly specifying the type. /// -/// protocol Bird { -/// func eat(_ object: T) // Overloaded generically -/// func eat(_ fruit: Fruit) // Overloaded explicitly -/// func eat(_ fruits: [Fruit]) -/// } +/// ```swift +/// protocol Bird { +/// func eat(_ object: T) // Overloaded generically +/// func eat(_ fruit: Fruit) // Overloaded explicitly +/// func eat(_ fruits: [Fruit]) +/// } /// -/// given(bird.eat(any(Fruit.self, where: { $0.size < 100 }))) -/// .will { print($0) } +/// given(bird.eat(any(Fruit.self, where: { $0.size < 100 }))) +/// .will { print($0) } /// -/// let apple = Fruit(size: 42) -/// bird.eat(apple) // Prints "42" -/// bird.eat("Apple") // Error: Missing stubbed implementation +/// let apple = Fruit(size: 42) +/// bird.eat(apple) // Prints "42" +/// bird.eat("Apple") // Error: Missing stubbed implementation +/// ``` /// /// - Parameters: /// - type: The parameter type used to disambiguate overloaded methods. @@ -302,28 +325,32 @@ public func any(_ type: T.Type = T.self, /// Argument matching allows you to stub or verify specific invocations of parameterized methods. /// Use the argument matcher `notNil` to match non-nil argument values. /// -/// protocol Bird { -/// func send(_ message: String?) -/// } +/// ```swift +/// protocol Bird { +/// func send(_ message: String?) +/// } /// -/// given(bird.send(notNil())).will { print($0) } +/// given(bird.send(notNil())).will { print($0) } /// -/// bird.send("Hello") // Prints Optional("Hello") -/// bird.send(nil) // Error: Missing stubbed implementation +/// bird.send("Hello") // Prints Optional("Hello") +/// bird.send(nil) // Error: Missing stubbed implementation +/// ``` /// /// Methods overloaded by parameter type can be disambiguated by explicitly specifying the type. /// -/// protocol Bird { -/// func send(_ message: T?) // Overloaded generically -/// func send(_ message: String?) // Overloaded explicitly -/// func send(_ messages: Data?) -/// } +/// ```swift +/// protocol Bird { +/// func send(_ message: T?) // Overloaded generically +/// func send(_ message: String?) // Overloaded explicitly +/// func send(_ messages: Data?) +/// } /// -/// given(bird.send(notNil(String?.self))) -/// .will { print($0) } +/// given(bird.send(notNil(String?.self))) +/// .will { print($0) } /// -/// bird.send("Hello") // Prints Optional("Hello") -/// bird.send(nil) // Error: Missing stubbed implementation +/// bird.send("Hello") // Prints Optional("Hello") +/// bird.send(nil) // Error: Missing stubbed implementation +/// ``` /// /// - Parameter type: The parameter type used to disambiguate overloaded methods. public func notNil(_ type: T.Type = T.self) -> T { @@ -341,30 +368,34 @@ public func notNil(_ type: T.Type = T.self) -> T { /// Argument matching allows you to stub or verify specific invocations of parameterized methods. /// Use the argument matcher `notNil` to match non-nil argument values. /// -/// // Protocol referencing Obj-C object types -/// protocol Bird { -/// func send(_ message: NSString?) -/// } +/// ```swift +/// // Protocol referencing Obj-C object types +/// protocol Bird { +/// func send(_ message: NSString?) +/// } /// -/// given(bird.send(notNil())).will { print($0) } +/// given(bird.send(notNil())).will { print($0) } /// -/// bird.send("Hello") // Prints Optional("Hello") -/// bird.send(nil) // Error: Missing stubbed implementation +/// bird.send("Hello") // Prints Optional("Hello") +/// bird.send(nil) // Error: Missing stubbed implementation +/// ``` /// /// Methods overloaded by parameter type can be disambiguated by explicitly specifying the type. /// -/// // Protocol referencing Obj-C object types -/// protocol Bird { -/// func send(_ message: T?) // Overloaded generically -/// func send(_ message: NSString?) // Overloaded explicitly -/// func send(_ messages: NSData?) -/// } +/// ```swift +/// // Protocol referencing Obj-C object types +/// protocol Bird { +/// func send(_ message: T?) // Overloaded generically +/// func send(_ message: NSString?) // Overloaded explicitly +/// func send(_ messages: NSData?) +/// } /// -/// given(bird.send(notNil(NSString?.self))) -/// .will { print($0) } +/// given(bird.send(notNil(NSString?.self))) +/// .will { print($0) } /// -/// bird.send("Hello") // Prints Optional("Hello") -/// bird.send(nil) // Error: Missing stubbed implementation +/// bird.send("Hello") // Prints Optional("Hello") +/// bird.send(nil) // Error: Missing stubbed implementation +/// ``` /// /// - Parameter type: The parameter type used to disambiguate overloaded methods. public func notNil(_ type: T.Type = T.self) -> T { diff --git a/Sources/MockingbirdFramework/Mocking/Mocking.swift b/Sources/MockingbirdFramework/Mocking/Mocking.swift index 00a38f3b..cfc9b23d 100644 --- a/Sources/MockingbirdFramework/Mocking/Mocking.swift +++ b/Sources/MockingbirdFramework/Mocking/Mocking.swift @@ -12,21 +12,25 @@ import Foundation /// Initialized mocks can be passed in place of the original type. Protocol mocks do not require /// explicit initialization while class mocks should be created using `initialize(…)`. /// -/// protocol Bird { -/// init(name: String) -/// } -/// class Tree { -/// init(with bird: Bird) {} -/// } -/// -/// let bird = mock(Bird.self) // Protocol mock -/// let tree = mock(Tree.self).initialize(with: bird) // Class mock +/// ```swift +/// protocol Bird { +/// init(name: String) +/// } +/// class Tree { +/// init(with bird: Bird) {} +/// } +/// +/// let bird = mock(Bird.self) // Protocol mock +/// let tree = mock(Tree.self).initialize(with: bird) // Class mock +/// ``` /// /// Generated mock types are suffixed with `Mock` and should not be coerced into their supertype. /// -/// let bird: BirdMock = mock(Bird.self) // The concrete type is `BirdMock` -/// let inferredBird = mock(Bird.self) // Type inference also works -/// let coerced: Bird = mock(Bird.self) // Avoid upcasting mocks +/// ```swift +/// let bird: BirdMock = mock(Bird.self) // The concrete type is `BirdMock` +/// let inferredBird = mock(Bird.self) // Type inference also works +/// let coerced: Bird = mock(Bird.self) // Avoid upcasting mocks +/// ``` /// /// - Parameter type: The type to mock. @available(*, unavailable, message: "No generated mock for this type which might be resolved by building the test target (⇧⌘U)") @@ -37,29 +41,33 @@ public func mock(_ type: T.Type) -> T { fatalError() } /// Initialized mocks can be passed in place of the original type. Dynamic mocks use the /// Objective-C runtime and do not require explicit initialization like Swift class mocks. /// -/// // Objective-C declarations -/// @protocol Bird -/// - (instancetype)initWithName:(NSString *); -/// @end -/// @interface Tree : NSObject -/// - (instancetype)initWithHeight:(NSInteger)height; -/// @end +/// ```swift +/// // Objective-C declarations +/// @protocol Bird +/// - (instancetype)initWithName:(NSString *); +/// @end +/// @interface Tree : NSObject +/// - (instancetype)initWithHeight:(NSInteger)height; +/// @end /// -/// let bird = mock(Bird.self) // Protocol mock -/// let tree = mock(Tree.self) // Class mock +/// let bird = mock(Bird.self) // Protocol mock +/// let tree = mock(Tree.self) // Class mock +/// ``` /// /// It's also possible to mock Swift types inheriting from `NSObject` or conforming to /// `NSObjectProtocol`. Members must be dynamically dispatched and available to the Objective-C /// runtime by specifying the `objc` attribute and `dynamic` modifier. /// -/// @objc protocol Bird: NSObjectProtocol { -/// @objc dynamic func chirp() -/// @objc dynamic var name: String { get } -/// } -/// @objc class Tree: NSObject { -/// @objc dynamic func shake() {} -/// @objc dynamic var height: Int -/// } +/// ```swift +/// @objc protocol Bird: NSObjectProtocol { +/// @objc dynamic func chirp() +/// @objc dynamic var name: String { get } +/// } +/// @objc class Tree: NSObject { +/// @objc dynamic func shake() {} +/// @objc dynamic var height: Int +/// } +/// ``` /// /// - Parameter type: The type to mock. public func mock(_ type: T.Type) -> T { @@ -71,16 +79,18 @@ public func mock(_ type: T.Type) -> T { /// Fully reset a set of mocks during test runs by removing all recorded invocations and clearing /// all configurations. /// -/// let bird = mock(Bird.self) -/// given(bird.name).willReturn("Ryan") +/// ```swift +/// let bird = mock(Bird.self) +/// given(bird.name).willReturn("Ryan") /// -/// print(bird.name) // Prints "Ryan" -/// verify(bird.name).wasCalled() // Passes +/// print(bird.name) // Prints "Ryan" +/// verify(bird.name).wasCalled() // Passes /// -/// reset(bird) +/// reset(bird) /// -/// print(bird.name) // Error: Missing stubbed implementation -/// verify(bird.name).wasCalled() // Error: Got 0 invocations +/// print(bird.name) // Error: Missing stubbed implementation +/// verify(bird.name).wasCalled() // Error: Got 0 invocations +/// ``` /// /// - Parameter mocks: A set of mocks to reset. public func reset(_ mocks: Mock...) { @@ -90,23 +100,25 @@ public func reset(_ mocks: Mock...) { }) } -/// Remove all recorded invocations and configured stubs. +/// Remove all recorded invocations and configured stubs for Objective-C mocks. /// /// Fully reset a set of mocks during test runs by removing all recorded invocations and clearing /// all configurations. /// -/// let bird = mock(Bird.self) -/// given(bird.name).willReturn("Ryan") +/// ```swift +/// let bird = mock(Bird.self) +/// given(bird.name).willReturn("Ryan") /// -/// print(bird.name) // Prints "Ryan" -/// verify(bird.name).wasCalled() // Passes +/// print(bird.name) // Prints "Ryan" +/// verify(bird.name).wasCalled() // Passes /// -/// reset(bird) +/// reset(bird) /// -/// print(bird.name) // Error: Missing stubbed implementation -/// verify(bird.name).wasCalled() // Error: Got 0 invocations +/// print(bird.name) // Error: Missing stubbed implementation +/// verify(bird.name).wasCalled() // Error: Got 0 invocations +/// ``` /// -/// - Parameter mocks: A set of mocks to reset. +/// - Parameter mocks: A set of Objective-C mocks to reset. public func reset(_ mocks: NSObjectProtocol...) { mocks.forEach({ mock in clearInvocations(on: mock) @@ -118,38 +130,42 @@ public func reset(_ mocks: NSObjectProtocol...) { /// /// Partially reset a set of mocks during test runs by removing all recorded invocations. /// -/// let bird = mock(Bird.self) -/// given(bird.name).willReturn("Ryan") +/// ```swift +/// let bird = mock(Bird.self) +/// given(bird.name).willReturn("Ryan") /// -/// print(bird.name) // Prints "Ryan" -/// verify(bird.name).wasCalled() // Passes +/// print(bird.name) // Prints "Ryan" +/// verify(bird.name).wasCalled() // Passes /// -/// clearInvocations(on: bird) +/// clearInvocations(on: bird) /// -/// print(bird.name) // Prints "Ryan" -/// verify(bird.name).wasCalled() // Error: Got 0 invocations +/// print(bird.name) // Prints "Ryan" +/// verify(bird.name).wasCalled() // Error: Got 0 invocations +/// ``` /// /// - Parameter mocks: A set of mocks to reset. public func clearInvocations(on mocks: Mock...) { mocks.forEach({ $0.mockingbirdContext.mocking.clearInvocations() }) } -/// Remove all recorded invocations. +/// Remove all recorded invocations for Objective-C mocks. /// /// Partially reset a set of mocks during test runs by removing all recorded invocations. /// -/// let bird = mock(Bird.self) -/// given(bird.name).willReturn("Ryan") +/// ```swift +/// let bird = mock(Bird.self) +/// given(bird.name).willReturn("Ryan") /// -/// print(bird.name) // Prints "Ryan" -/// verify(bird.name).wasCalled() // Passes +/// print(bird.name) // Prints "Ryan" +/// verify(bird.name).wasCalled() // Passes /// -/// clearInvocations(on: bird) +/// clearInvocations(on: bird) /// -/// print(bird.name) // Prints "Ryan" -/// verify(bird.name).wasCalled() // Error: Got 0 invocations +/// print(bird.name) // Prints "Ryan" +/// verify(bird.name).wasCalled() // Error: Got 0 invocations +/// ``` /// -/// - Parameter mocks: A set of mocks to reset. +/// - Parameter mocks: A set of Objective-C mocks to reset. public func clearInvocations(on mocks: NSObjectProtocol...) { mocks.forEach({ mock in guard let context = mock.mockingbirdContext else { return } @@ -161,15 +177,17 @@ public func clearInvocations(on mocks: NSObjectProtocol...) { /// /// Partially reset a set of mocks during test runs by removing all stubs. /// -/// let bird = mock(Bird.self) -/// given(bird.name).willReturn("Ryan") +/// ```swift +/// let bird = mock(Bird.self) +/// given(bird.name).willReturn("Ryan") /// -/// print(bird.name) // Prints "Ryan" -/// verify(bird.name).wasCalled() // Passes +/// print(bird.name) // Prints "Ryan" +/// verify(bird.name).wasCalled() // Passes /// -/// clearStubs(on: bird) +/// clearStubs(on: bird) /// -/// print(bird.name) // Error: Missing stubbed implementation +/// print(bird.name) // Error: Missing stubbed implementation +/// ``` /// /// - Parameter mocks: A set of mocks to reset. public func clearStubs(on mocks: Mock...) { @@ -181,19 +199,21 @@ public func clearStubs(on mocks: Mock...) { }) } -/// Remove all concrete stubs. +/// Remove all concrete stubs for Objective-C mocks. /// /// Partially reset a set of mocks during test runs by removing all stubs. /// -/// let bird = mock(Bird.self) -/// given(bird.name).willReturn("Ryan") +/// ```swift +/// let bird = mock(Bird.self) +/// given(bird.name).willReturn("Ryan") /// -/// print(bird.name) // Prints "Ryan" -/// verify(bird.name).wasCalled() // Passes +/// print(bird.name) // Prints "Ryan" +/// verify(bird.name).wasCalled() // Passes /// -/// clearStubs(on: bird) +/// clearStubs(on: bird) /// -/// print(bird.name) // Error: Missing stubbed implementation +/// print(bird.name) // Error: Missing stubbed implementation +/// ``` /// /// - Parameter mocks: A set of mocks to reset. public func clearStubs(on mocks: NSObjectProtocol...) { @@ -209,15 +229,17 @@ public func clearStubs(on mocks: NSObjectProtocol...) { /// /// Partially reset a set of mocks during test runs by removing all registered default values. /// -/// let bird = mock(Bird.self) -/// bird.useDefaultValues(from: .standardProvider) +/// ```swift +/// let bird = mock(Bird.self) +/// bird.useDefaultValues(from: .standardProvider) /// -/// print(bird.name) // Prints "" -/// verify(bird.name).wasCalled() // Passes +/// print(bird.name) // Prints "" +/// verify(bird.name).wasCalled() // Passes /// -/// clearDefaultValues(on: bird) +/// clearDefaultValues(on: bird) /// -/// print(bird.name) // Error: Missing stubbed implementation +/// print(bird.name) // Error: Missing stubbed implementation +/// ``` /// /// - Parameter mocks: A set of mocks to reset. @available(*, deprecated, renamed: "clearStubs") diff --git a/Sources/MockingbirdFramework/Objective-C/Bridge/include/MKBTestUtils.h b/Sources/MockingbirdFramework/Objective-C/Bridge/include/MKBTestUtils.h index 8f4f9cc6..482b7511 100644 --- a/Sources/MockingbirdFramework/Objective-C/Bridge/include/MKBTestUtils.h +++ b/Sources/MockingbirdFramework/Objective-C/Bridge/include/MKBTestUtils.h @@ -21,13 +21,15 @@ NSException *_Nullable MKBTryBlock(void(^_Nonnull NS_NOESCAPE block)(void)); /// /// Fully type erased optionals in Swift causes typical `nil` checks to fail. For example: /// -/// func erase(_ value: T) { -/// print(value == nil) // false -/// print(value as Optional == nil) // false -/// print(value as? Optional == nil) // false -/// print(value as! Optional == nil) // true -/// } -/// erase(Optional(nil)) +/// ```swift +/// func erase(_ value: T) { +/// print(value == nil) // false +/// print(value as Optional == nil) // false +/// print(value as? Optional == nil) // false +/// print(value as! Optional == nil) // true +/// } +/// erase(Optional(nil)) +/// ``` /// /// Since Objective-C implicitly bridges to `NSNull`, an easy (albeit hacky) way to check if the /// value is both an `Optional` and `nil` at runtime is to pass it Objective-C. Swift does support diff --git a/Sources/MockingbirdFramework/Stubbing/DefaultValues.swift b/Sources/MockingbirdFramework/Stubbing/DefaultValues.swift index 79250377..9ce44273 100644 --- a/Sources/MockingbirdFramework/Stubbing/DefaultValues.swift +++ b/Sources/MockingbirdFramework/Stubbing/DefaultValues.swift @@ -14,32 +14,40 @@ public extension Mock { /// Mocks are strict by default, meaning that calls to unstubbed methods will trigger a test /// failure. Methods returning Void do not need to be stubbed in strict mode. /// - /// let bird = mock(Bird.self) - /// print(bird.name) // Fails because `bird.name` is not stubbed - /// bird.fly() // Okay because `fly()` has a `Void` return type + /// ```swift + /// let bird = mock(Bird.self) + /// print(bird.name) // Fails because `bird.name` is not stubbed + /// bird.fly() // Okay because `fly()` has a `Void` return type + /// ``` /// /// To return default values for unstubbed methods, use a `ValueProvider` with the initialized /// mock. Mockingbird provides preset value providers which are guaranteed to be backwards /// compatible, such as `.standardProvider`. /// - /// bird.useDefaultValues(from: .standardProvider) - /// print(bird.name) // Prints "" + /// ```swift + /// bird.useDefaultValues(from: .standardProvider) + /// print(bird.name) // Prints "" + /// ``` /// /// You can create custom value providers by registering values for types. See `Providable` for /// how to provide "wildcard" instances for generic types. /// - /// var valueProvider = ValueProvider(from: .standardProvider) - /// valueProvider.register("Ryan", for: String.self) - /// bird.useDefaultValues(from: valueProvider) - /// print(bird.name) // Prints "Ryan" + /// ```swift + /// var valueProvider = ValueProvider(from: .standardProvider) + /// valueProvider.register("Ryan", for: String.self) + /// bird.useDefaultValues(from: valueProvider) + /// print(bird.name) // Prints "Ryan" + /// ``` /// /// Values from concrete stubs always have a higher precedence than default values. /// - /// given(bird.name) ~> "Ryan" - /// print(bird.name) // Prints "Ryan" + /// ```swift + /// given(bird.name) ~> "Ryan" + /// print(bird.name) // Prints "Ryan" /// - /// bird.useDefaultValues(from: .standardProvider) - /// print(bird.name) // Prints "Ryan" + /// bird.useDefaultValues(from: .standardProvider) + /// print(bird.name) // Prints "Ryan" + /// ``` /// /// - Note: This does not remove previously added value providers. /// @@ -58,32 +66,40 @@ public extension NSObjectProtocol { /// Mocks are strict by default, meaning that calls to unstubbed methods will trigger a test /// failure. Methods returning Void do not need to be stubbed in strict mode. /// - /// let bird = mock(Bird.self) - /// print(bird.name) // Fails because `bird.name` is not stubbed - /// bird.fly() // Okay because `fly()` has a `Void` return type + /// ```swift + /// let bird = mock(Bird.self) + /// print(bird.name) // Fails because `bird.name` is not stubbed + /// bird.fly() // Okay because `fly()` has a `Void` return type + /// ``` /// /// To return default values for unstubbed methods, use a `ValueProvider` with the initialized /// mock. Mockingbird provides preset value providers which are guaranteed to be backwards /// compatible, such as `.standardProvider`. /// - /// bird.useDefaultValues(from: .standardProvider) - /// print(bird.name) // Prints "" + /// ```swift + /// bird.useDefaultValues(from: .standardProvider) + /// print(bird.name) // Prints "" + /// ``` /// /// You can create custom value providers by registering values for types. See `Providable` for /// how to provide "wildcard" instances for generic types. /// - /// var valueProvider = ValueProvider(from: .standardProvider) - /// valueProvider.register("Ryan", for: String.self) - /// bird.useDefaultValues(from: valueProvider) - /// print(bird.name) // Prints "Ryan" + /// ```swift + /// var valueProvider = ValueProvider(from: .standardProvider) + /// valueProvider.register("Ryan", for: String.self) + /// bird.useDefaultValues(from: valueProvider) + /// print(bird.name) // Prints "Ryan" + /// ``` /// /// Values from concrete stubs always have a higher precedence than default values. /// - /// given(bird.name) ~> "Ryan" - /// print(bird.name) // Prints "Ryan" + /// ```swift + /// given(bird.name) ~> "Ryan" + /// print(bird.name) // Prints "Ryan" /// - /// bird.useDefaultValues(from: .standardProvider) - /// print(bird.name) // Prints "Ryan" + /// bird.useDefaultValues(from: .standardProvider) + /// print(bird.name) // Prints "Ryan" + /// ``` /// /// - Note: This does not remove previously added value providers. /// diff --git a/Sources/MockingbirdFramework/Stubbing/DynamicStubbingManager.swift b/Sources/MockingbirdFramework/Stubbing/DynamicStubbingManager.swift index 92e92d8a..bb63a5ae 100644 --- a/Sources/MockingbirdFramework/Stubbing/DynamicStubbingManager.swift +++ b/Sources/MockingbirdFramework/Stubbing/DynamicStubbingManager.swift @@ -18,15 +18,19 @@ public class DynamicStubbingManager: /// /// Stubbing allows you to define custom behavior for mocks to perform. /// - /// given(bird.doMethod()).willReturn(someValue) - /// given(bird.property).willReturn(someValue) + /// ```swift + /// given(bird.doMethod()).willReturn(someValue) + /// given(bird.property).willReturn(someValue) + /// ``` /// /// Match exact or wildcard argument values when stubbing methods with parameters. Stubs added /// later have a higher precedence, so add stubs with specific matchers last. /// - /// given(bird.canChirp(volume: any())).willReturn(true) // Any volume - /// given(bird.canChirp(volume: notNil())).willReturn(true) // Any non-nil volume - /// given(bird.canChirp(volume: 10)).willReturn(true) // Volume = 10 + /// ```swift + /// given(bird.canChirp(volume: any())).willReturn(true) // Any volume + /// given(bird.canChirp(volume: notNil())).willReturn(true) // Any non-nil volume + /// given(bird.canChirp(volume: 10)).willReturn(true) // Volume = 10 + /// ``` /// /// - Parameter value: A stubbed value to return. /// - Returns: The current stubbing manager which can be used to chain additional stubs. @@ -40,8 +44,10 @@ public class DynamicStubbingManager: /// Stubbing allows you to define custom behavior for mocks to perform. Methods that throw or /// rethrow errors can be stubbed with a throwable object. /// - /// struct BirdError: Error {} - /// given(bird.throwingMethod()).willThrow(BirdError()) + /// ```swift + /// struct BirdError: Error {} + /// given(bird.throwingMethod()).willThrow(BirdError()) + /// ``` /// /// - Note: Methods overloaded by return type should chain `returning` with `willThrow` to /// disambiguate the mocked declaration. @@ -62,10 +68,12 @@ public class DynamicStubbingManager: /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// - /// given(bird.canChirp(volume: any())) - /// .will { volume in - /// return volume < 42 - /// } + /// ```swift + /// given(bird.canChirp(volume: any())) + /// .will { volume in + /// return volume < 42 + /// } + /// ``` /// /// - Parameter implementation: A closure implementation stub to evaluate. /// - Returns: The current stubbing manager which can be used to chain additional stubs. @@ -82,10 +90,12 @@ public class DynamicStubbingManager: /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// - /// given(bird.canChirp(volume: any())) - /// .will { volume in - /// return volume < 42 - /// } + /// ```swift + /// given(bird.canChirp(volume: any())) + /// .will { volume in + /// return volume < 42 + /// } + /// ``` /// /// - Parameter implementation: A closure implementation stub to evaluate. /// - Returns: The current stubbing manager which can be used to chain additional stubs. @@ -103,10 +113,12 @@ public class DynamicStubbingManager: /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// - /// given(bird.canChirp(volume: any())) - /// .will { volume in - /// return volume < 42 - /// } + /// ```swift + /// given(bird.canChirp(volume: any())) + /// .will { volume in + /// return volume < 42 + /// } + /// ``` /// /// - Parameter implementation: A closure implementation stub to evaluate. /// - Returns: The current stubbing manager which can be used to chain additional stubs. @@ -124,10 +136,12 @@ public class DynamicStubbingManager: /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// - /// given(bird.canChirp(volume: any())) - /// .will { volume in - /// return volume < 42 - /// } + /// ```swift + /// given(bird.canChirp(volume: any())) + /// .will { volume in + /// return volume < 42 + /// } + /// ``` /// /// - Parameter implementation: A closure implementation stub to evaluate. /// - Returns: The current stubbing manager which can be used to chain additional stubs. @@ -145,10 +159,12 @@ public class DynamicStubbingManager: /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// - /// given(bird.canChirp(volume: any())) - /// .will { volume in - /// return volume < 42 - /// } + /// ```swift + /// given(bird.canChirp(volume: any())) + /// .will { volume in + /// return volume < 42 + /// } + /// ``` /// /// - Parameter implementation: A closure implementation stub to evaluate. /// - Returns: The current stubbing manager which can be used to chain additional stubs. @@ -166,10 +182,12 @@ public class DynamicStubbingManager: /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// - /// given(bird.canChirp(volume: any())) - /// .will { volume in - /// return volume < 42 - /// } + /// ```swift + /// given(bird.canChirp(volume: any())) + /// .will { volume in + /// return volume < 42 + /// } + /// ``` /// /// - Parameter implementation: A closure implementation stub to evaluate. /// - Returns: The current stubbing manager which can be used to chain additional stubs. @@ -187,10 +205,12 @@ public class DynamicStubbingManager: /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// - /// given(bird.canChirp(volume: any())) - /// .will { volume in - /// return volume < 42 - /// } + /// ```swift + /// given(bird.canChirp(volume: any())) + /// .will { volume in + /// return volume < 42 + /// } + /// ``` /// /// - Parameter implementation: A closure implementation stub to evaluate. /// - Returns: The current stubbing manager which can be used to chain additional stubs. @@ -208,10 +228,12 @@ public class DynamicStubbingManager: /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// - /// given(bird.canChirp(volume: any())) - /// .will { volume in - /// return volume < 42 - /// } + /// ```swift + /// given(bird.canChirp(volume: any())) + /// .will { volume in + /// return volume < 42 + /// } + /// ``` /// /// - Parameter implementation: A closure implementation stub to evaluate. /// - Returns: The current stubbing manager which can be used to chain additional stubs. @@ -230,10 +252,12 @@ public class DynamicStubbingManager: /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// - /// given(bird.canChirp(volume: any())) - /// .will { volume in - /// return volume < 42 - /// } + /// ```swift + /// given(bird.canChirp(volume: any())) + /// .will { volume in + /// return volume < 42 + /// } + /// ``` /// /// - Parameter implementation: A closure implementation stub to evaluate. /// - Returns: The current stubbing manager which can be used to chain additional stubs. @@ -252,10 +276,12 @@ public class DynamicStubbingManager: /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// - /// given(bird.canChirp(volume: any())) - /// .will { volume in - /// return volume < 42 - /// } + /// ```swift + /// given(bird.canChirp(volume: any())) + /// .will { volume in + /// return volume < 42 + /// } + /// ``` /// /// - Parameter implementation: A closure implementation stub to evaluate. /// - Returns: The current stubbing manager which can be used to chain additional stubs. @@ -274,10 +300,12 @@ public class DynamicStubbingManager: /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// - /// given(bird.canChirp(volume: any())) - /// .will { volume in - /// return volume < 42 - /// } + /// ```swift + /// given(bird.canChirp(volume: any())) + /// .will { volume in + /// return volume < 42 + /// } + /// ``` /// /// - Parameter implementation: A closure implementation stub to evaluate. /// - Returns: The current stubbing manager which can be used to chain additional stubs. @@ -298,10 +326,12 @@ public class DynamicStubbingManager: /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// - /// given(bird.canChirp(volume: any())) - /// .will { volume in - /// return volume < 42 - /// } + /// ```swift + /// given(bird.canChirp(volume: any())) + /// .will { volume in + /// return volume < 42 + /// } + /// ``` /// /// - Parameter implementation: A closure implementation stub to evaluate. /// - Returns: The current stubbing manager which can be used to chain additional stubs. @@ -318,10 +348,12 @@ public class DynamicStubbingManager: /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// - /// given(bird.canChirp(volume: any())) - /// .will { volume in - /// return volume < 42 - /// } + /// ```swift + /// given(bird.canChirp(volume: any())) + /// .will { volume in + /// return volume < 42 + /// } + /// ``` /// /// - Parameter implementation: A closure implementation stub to evaluate. /// - Returns: The current stubbing manager which can be used to chain additional stubs. @@ -339,10 +371,12 @@ public class DynamicStubbingManager: /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// - /// given(bird.canChirp(volume: any())) - /// .will { volume in - /// return volume < 42 - /// } + /// ```swift + /// given(bird.canChirp(volume: any())) + /// .will { volume in + /// return volume < 42 + /// } + /// ``` /// /// - Parameter implementation: A closure implementation stub to evaluate. /// - Returns: The current stubbing manager which can be used to chain additional stubs. @@ -360,10 +394,12 @@ public class DynamicStubbingManager: /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// - /// given(bird.canChirp(volume: any())) - /// .will { volume in - /// return volume < 42 - /// } + /// ```swift + /// given(bird.canChirp(volume: any())) + /// .will { volume in + /// return volume < 42 + /// } + /// ``` /// /// - Parameter implementation: A closure implementation stub to evaluate. /// - Returns: The current stubbing manager which can be used to chain additional stubs. @@ -381,10 +417,12 @@ public class DynamicStubbingManager: /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// - /// given(bird.canChirp(volume: any())) - /// .will { volume in - /// return volume < 42 - /// } + /// ```swift + /// given(bird.canChirp(volume: any())) + /// .will { volume in + /// return volume < 42 + /// } + /// ``` /// /// - Parameter implementation: A closure implementation stub to evaluate. /// - Returns: The current stubbing manager which can be used to chain additional stubs. @@ -402,10 +440,12 @@ public class DynamicStubbingManager: /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// - /// given(bird.canChirp(volume: any())) - /// .will { volume in - /// return volume < 42 - /// } + /// ```swift + /// given(bird.canChirp(volume: any())) + /// .will { volume in + /// return volume < 42 + /// } + /// ``` /// /// - Parameter implementation: A closure implementation stub to evaluate. /// - Returns: The current stubbing manager which can be used to chain additional stubs. @@ -423,10 +463,12 @@ public class DynamicStubbingManager: /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// - /// given(bird.canChirp(volume: any())) - /// .will { volume in - /// return volume < 42 - /// } + /// ```swift + /// given(bird.canChirp(volume: any())) + /// .will { volume in + /// return volume < 42 + /// } + /// ``` /// /// - Parameter implementation: A closure implementation stub to evaluate. /// - Returns: The current stubbing manager which can be used to chain additional stubs. @@ -444,10 +486,12 @@ public class DynamicStubbingManager: /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// - /// given(bird.canChirp(volume: any())) - /// .will { volume in - /// return volume < 42 - /// } + /// ```swift + /// given(bird.canChirp(volume: any())) + /// .will { volume in + /// return volume < 42 + /// } + /// ``` /// /// - Parameter implementation: A closure implementation stub to evaluate. /// - Returns: The current stubbing manager which can be used to chain additional stubs. @@ -466,10 +510,12 @@ public class DynamicStubbingManager: /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// - /// given(bird.canChirp(volume: any())) - /// .will { volume in - /// return volume < 42 - /// } + /// ```swift + /// given(bird.canChirp(volume: any())) + /// .will { volume in + /// return volume < 42 + /// } + /// ``` /// /// - Parameter implementation: A closure implementation stub to evaluate. /// - Returns: The current stubbing manager which can be used to chain additional stubs. @@ -488,10 +534,10 @@ public class DynamicStubbingManager: /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// - /// given(bird.canChirp(volume: any())) - /// .will { volume in - /// return volume < 42 - /// } + /// given(bird.canChirp(volume: any())) + /// .will { volume in + /// return volume < 42 + /// } /// /// - Parameter implementation: A closure implementation stub to evaluate. /// - Returns: The current stubbing manager which can be used to chain additional stubs. @@ -510,10 +556,10 @@ public class DynamicStubbingManager: /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// - /// given(bird.canChirp(volume: any())) - /// .will { volume in - /// return volume < 42 - /// } + /// given(bird.canChirp(volume: any())) + /// .will { volume in + /// return volume < 42 + /// } /// /// - Parameter implementation: A closure implementation stub to evaluate. /// - Returns: The current stubbing manager which can be used to chain additional stubs. diff --git a/Sources/MockingbirdFramework/Stubbing/InvocationForwarding.swift b/Sources/MockingbirdFramework/Stubbing/InvocationForwarding.swift index f0265fcb..fd59a462 100644 --- a/Sources/MockingbirdFramework/Stubbing/InvocationForwarding.swift +++ b/Sources/MockingbirdFramework/Stubbing/InvocationForwarding.swift @@ -19,28 +19,32 @@ public struct ForwardingContext { /// Superclass forwarding persists until removed with `clearStubs` or shadowed by a forwarding /// target that was added afterwards. /// -/// class Bird { -/// let name: String -/// init(name: String) { self.name = name } -/// } +/// ```swift +/// class Bird { +/// let name: String +/// init(name: String) { self.name = name } +/// } /// -/// // `BirdMock` subclasses `Bird` -/// let bird: BirdMock = mock(Bird.self).initialize(name: "Ryan") +/// // `BirdMock` subclasses `Bird` +/// let bird: BirdMock = mock(Bird.self).initialize(name: "Ryan") /// -/// given(bird.name) ~> forwardToSuper() -/// print(bird.name) // Prints "Ryan" +/// given(bird.name) ~> forwardToSuper() +/// print(bird.name) // Prints "Ryan" +/// ``` /// /// The mocked type must be a class. Adding superclass forwarding to mocked protocol declarations /// is a no-op. /// -/// // Not a class -/// protocol AbstractBird { -/// var name: String { get } -/// } +/// ```swift +/// // Not a class +/// protocol AbstractBird { +/// var name: String { get } +/// } /// -/// let bird = mock(AbstractBird.self) -/// given(bird.name) ~> forwardToSuper() -/// print(bird.name) // Error: Missing stubbed implementation +/// let bird = mock(AbstractBird.self) +/// given(bird.name) ~> forwardToSuper() +/// print(bird.name) // Error: Missing stubbed implementation +/// ``` /// /// - Note: To forward all calls by default to the superclass, use `forwardCallsToSuper` on the mock /// instance instead. @@ -54,35 +58,41 @@ public func forwardToSuper() -> ForwardingContext { /// Targets added afterwards have a higher precedence and only pass calls down the forwarding chain /// if unable handle the invocation, such as when the target is unrelated to the mocked type. /// -/// class Crow: Bird { -/// let name: String -/// init(name: String) { self.name = name } -/// } +/// ```swift +/// class Crow: Bird { +/// let name: String +/// init(name: String) { self.name = name } +/// } /// -/// given(bird.name) ~> forward(to: Crow(name: "Ryan")) -/// print(bird.name) // Prints "Ryan" +/// given(bird.name) ~> forward(to: Crow(name: "Ryan")) +/// print(bird.name) // Prints "Ryan" /// -/// // Additional targets take precedence -/// given(bird.name) ~> forward(to: Crow(name: "Sterling")) -/// print(bird.name) // Prints "Sterling" +/// // Additional targets take precedence +/// given(bird.name) ~> forward(to: Crow(name: "Sterling")) +/// print(bird.name) // Prints "Sterling" +/// ``` /// /// Concrete stubs always have a higher priority than forwarding targets, regardless of the order /// they were added. /// -/// given(bird.name) ~> "Ryan" -/// given(bird.name) ~> forward(to: Crow(name: "Sterling")) -/// print(bird.name) // Prints "Ryan" +/// ```swift +/// given(bird.name) ~> "Ryan" +/// given(bird.name) ~> forward(to: Crow(name: "Sterling")) +/// print(bird.name) // Prints "Ryan" +/// ``` /// /// Objects must inherit from the mocked type to handle forwarded invocations, even if the /// declaration is identical. Adding an unrelated type as a forwarding target is a no-op. /// -/// // Not a `Bird` -/// class Person { -/// var name = "Ryan" -/// } +/// ```swift +/// // Not a `Bird` +/// class Person { +/// var name = "Ryan" +/// } /// -/// given(bird.name) ~> forward(to: Person()) -/// print(bird.name) // Error: Missing stubbed implementation +/// given(bird.name) ~> forward(to: Person()) +/// print(bird.name) // Error: Missing stubbed implementation +/// ``` /// /// - Note: To forward all calls to an object, use `forwardCalls` on the mock instance instead. /// @@ -98,28 +108,32 @@ public extension StubbingManager { /// receiving a matching invocation. Superclass forwarding persists until removed with /// `clearStubs` or shadowed by a forwarding target that was added afterwards. /// - /// class Bird { - /// let name: String - /// init(name: String) { self.name = name } - /// } + /// ```swift + /// class Bird { + /// let name: String + /// init(name: String) { self.name = name } + /// } /// - /// // `BirdMock` subclasses `Bird` - /// let bird: BirdMock = mock(Bird.self).initialize(name: "Ryan") + /// // `BirdMock` subclasses `Bird` + /// let bird: BirdMock = mock(Bird.self).initialize(name: "Ryan") /// - /// given(bird.name).willForwardToSuper() - /// print(bird.name) // Prints "Ryan" + /// given(bird.name).willForwardToSuper() + /// print(bird.name) // Prints "Ryan" + /// ``` /// /// The mocked type must be a class. Adding superclass forwarding to mocked protocol declarations /// is a no-op. /// - /// // Not a class - /// protocol AbstractBird { - /// var name: String { get } - /// } + /// ```swift + /// // Not a class + /// protocol AbstractBird { + /// var name: String { get } + /// } /// - /// let bird = mock(AbstractBird.self) - /// given(bird.name).willForwardToSuper() - /// print(bird.name) // Error: Missing stubbed implementation + /// let bird = mock(AbstractBird.self) + /// given(bird.name).willForwardToSuper() + /// print(bird.name) // Error: Missing stubbed implementation + /// ``` /// /// - Note: To forward all calls by default to the superclass, use `forwardCallsToSuper` on the /// mock instance instead. @@ -137,35 +151,41 @@ public extension StubbingManager { /// forwarding chain if unable handle the invocation, such as when the target is unrelated to the /// mocked type. /// - /// class Crow: Bird { - /// let name: String - /// init(name: String) { self.name = name } - /// } + /// ```swift + /// class Crow: Bird { + /// let name: String + /// init(name: String) { self.name = name } + /// } /// - /// given(bird.name).willForward(to: Crow(name: "Ryan")) - /// print(bird.name) // Prints "Ryan" + /// given(bird.name).willForward(to: Crow(name: "Ryan")) + /// print(bird.name) // Prints "Ryan" /// - /// // Additional targets take precedence - /// given(bird.name).willForward(to: Crow(name: "Sterling")) - /// print(bird.name) // Prints "Sterling" + /// // Additional targets take precedence + /// given(bird.name).willForward(to: Crow(name: "Sterling")) + /// print(bird.name) // Prints "Sterling" + /// ``` /// /// Concrete stubs always have a higher priority than forwarding targets, regardless of the order /// they were added. /// - /// given(bird.name).willReturn("Ryan") - /// given(bird.name).willForward(to: Crow(name: "Sterling")) - /// print(bird.name) // Prints "Ryan" + /// ```swift + /// given(bird.name).willReturn("Ryan") + /// given(bird.name).willForward(to: Crow(name: "Sterling")) + /// print(bird.name) // Prints "Ryan" + /// ``` /// /// Objects must inherit from the mocked type to handle forwarded invocations, even if the /// declaration is identical. Adding an unrelated type as a forwarding target is a no-op. /// - /// // Not a `Bird` - /// class Person { - /// var name = "Ryan" - /// } + /// ```swift + /// // Not a `Bird` + /// class Person { + /// var name = "Ryan" + /// } /// - /// given(bird.name).willForward(to: Person()) - /// print(bird.name) // Error: Missing stubbed implementation + /// given(bird.name).willForward(to: Person()) + /// print(bird.name) // Error: Missing stubbed implementation + /// ``` /// /// - Note: To forward all calls to an object, use `forwardCalls` on the mock instance instead. /// @@ -183,36 +203,42 @@ public extension Mock { /// forwarding persists until removed with `clearStubs` or shadowed by a forwarding target that /// was added afterwards. /// - /// class Bird { - /// let name: String - /// init(name: String) { self.name = name } - /// } + /// ```swift + /// class Bird { + /// let name: String + /// init(name: String) { self.name = name } + /// } /// - /// // `BirdMock` subclasses `Bird` - /// let bird: BirdMock = mock(Bird.self).initialize(name: "Ryan") + /// // `BirdMock` subclasses `Bird` + /// let bird: BirdMock = mock(Bird.self).initialize(name: "Ryan") /// - /// bird.forwardCallsToSuper() - /// print(bird.name) // Prints "Ryan" + /// bird.forwardCallsToSuper() + /// print(bird.name) // Prints "Ryan" + /// ``` /// /// Concrete stubs always have a higher priority than forwarding targets, regardless of the order /// they were added. /// - /// let bird = mock(Bird.self).initialize(name: "Sterling") - /// given(bird.name).willReturn("Ryan") - /// bird.forwardCallsToSuper() - /// print(bird.name) // Prints "Ryan" + /// ```swift + /// let bird = mock(Bird.self).initialize(name: "Sterling") + /// given(bird.name).willReturn("Ryan") + /// bird.forwardCallsToSuper() + /// print(bird.name) // Prints "Ryan" + /// ``` /// /// Objects must inherit from the mocked type to handle forwarded invocations, even if the /// declaration is identical. Adding an unrelated type as a forwarding target is a no-op. /// - /// // Not a class - /// protocol AbstractBird { - /// var name: String { get } - /// } + /// ```swift + /// // Not a class + /// protocol AbstractBird { + /// var name: String { get } + /// } /// - /// let bird = mock(AbstractBird.self) - /// bird.forwardCallsToSuper() - /// print(bird.name) // Error: Missing stubbed implementation + /// let bird = mock(AbstractBird.self) + /// bird.forwardCallsToSuper() + /// print(bird.name) // Error: Missing stubbed implementation + /// ``` /// /// - Returns: A partial mock using the superclass to handle invocations. @discardableResult @@ -227,36 +253,42 @@ public extension Mock { /// `clearStubs`. Targets added afterwards have a higher precedence and only pass calls down the forwarding chain if unable handle the invocation, such as when the target is unrelated to the /// mocked type. /// - /// class Crow: Bird { - /// let name: String - /// init(name: String) { self.name = name } - /// } + /// ```swift + /// class Crow: Bird { + /// let name: String + /// init(name: String) { self.name = name } + /// } /// - /// let bird = mock(Bird.self) - /// bird.forwardCalls(to: Crow(name: "Ryan")) - /// print(bird.name) // Prints "Ryan" + /// let bird = mock(Bird.self) + /// bird.forwardCalls(to: Crow(name: "Ryan")) + /// print(bird.name) // Prints "Ryan" /// - /// // Additional targets take precedence - /// bird.forwardCalls(to: Crow(name: "Sterling")) - /// print(bird.name) // Prints "Sterling" + /// // Additional targets take precedence + /// bird.forwardCalls(to: Crow(name: "Sterling")) + /// print(bird.name) // Prints "Sterling" + /// ``` /// /// Concrete stubs always have a higher priority than forwarding targets, regardless of the order /// they were added. /// - /// given(bird.name).willReturn("Ryan") - /// bird.forwardCalls(to: Crow(name: "Sterling")) - /// print(bird.name) // Prints "Ryan" + /// ```swift + /// given(bird.name).willReturn("Ryan") + /// bird.forwardCalls(to: Crow(name: "Sterling")) + /// print(bird.name) // Prints "Ryan" + /// ``` /// /// Objects must inherit from the mocked type to handle forwarded invocations, even if the /// declaration is identical. Adding an unrelated type as a forwarding target is a no-op. /// - /// // Not a `Bird` - /// class Person { - /// var name = "Ryan" - /// } + /// ```swift + /// // Not a `Bird` + /// class Person { + /// var name = "Ryan" + /// } /// - /// bird.forwardCalls(to: Person()) - /// print(bird.name) // Error: Missing stubbed implementation + /// bird.forwardCalls(to: Person()) + /// print(bird.name) // Error: Missing stubbed implementation + /// ``` /// /// - Parameter object: An object that should handle forwarded invocations. /// - Returns: A partial mock using `object` to handle invocations. @@ -274,36 +306,42 @@ public extension NSObjectProtocol { /// forwarding persists until removed with `clearStubs` or shadowed by a forwarding target that /// was added afterwards. /// - /// class Bird { - /// let name: String - /// init(name: String) { self.name = name } - /// } + /// ```swift + /// class Bird { + /// let name: String + /// init(name: String) { self.name = name } + /// } /// - /// // `BirdMock` subclasses `Bird` - /// let bird: BirdMock = mock(Bird.self).initialize(name: "Ryan") + /// // `BirdMock` subclasses `Bird` + /// let bird: BirdMock = mock(Bird.self).initialize(name: "Ryan") /// - /// bird.forwardCallsToSuper() - /// print(bird.name) // Prints "Ryan" + /// bird.forwardCallsToSuper() + /// print(bird.name) // Prints "Ryan" + /// ``` /// /// Concrete stubs always have a higher priority than forwarding targets, regardless of the order /// they were added. /// - /// let bird = mock(Bird.self).initialize(name: "Sterling") - /// given(bird.name).willReturn("Ryan") - /// bird.forwardCallsToSuper() - /// print(bird.name) // Prints "Ryan" + /// ```swift + /// let bird = mock(Bird.self).initialize(name: "Sterling") + /// given(bird.name).willReturn("Ryan") + /// bird.forwardCallsToSuper() + /// print(bird.name) // Prints "Ryan" + /// ``` /// /// Objects must inherit from the mocked type to handle forwarded invocations, even if the /// declaration is identical. Adding an unrelated type as a forwarding target is a no-op. /// - /// // Not a class - /// protocol AbstractBird { - /// var name: String { get } - /// } + /// ```swift + /// // Not a class + /// protocol AbstractBird { + /// var name: String { get } + /// } /// - /// let bird = mock(AbstractBird.self) - /// bird.forwardCallsToSuper() - /// print(bird.name) // Error: Missing stubbed implementation + /// let bird = mock(AbstractBird.self) + /// bird.forwardCallsToSuper() + /// print(bird.name) // Error: Missing stubbed implementation + /// ``` /// /// - Returns: A partial mock using the superclass to handle invocations. @discardableResult @@ -318,36 +356,42 @@ public extension NSObjectProtocol { /// `clearStubs`. Targets added afterwards have a higher precedence and only pass calls down the forwarding chain if unable handle the invocation, such as when the target is unrelated to the /// mocked type. /// - /// class Crow: Bird { - /// let name: String - /// init(name: String) { self.name = name } - /// } + /// ```swift + /// class Crow: Bird { + /// let name: String + /// init(name: String) { self.name = name } + /// } /// - /// let bird = mock(Bird.self) - /// bird.forwardCalls(to: Crow(name: "Ryan")) - /// print(bird.name) // Prints "Ryan" + /// let bird = mock(Bird.self) + /// bird.forwardCalls(to: Crow(name: "Ryan")) + /// print(bird.name) // Prints "Ryan" /// - /// // Additional targets take precedence - /// bird.forwardCalls(to: Crow(name: "Sterling")) - /// print(bird.name) // Prints "Sterling" + /// // Additional targets take precedence + /// bird.forwardCalls(to: Crow(name: "Sterling")) + /// print(bird.name) // Prints "Sterling" + /// ``` /// /// Concrete stubs always have a higher priority than forwarding targets, regardless of the order /// they were added. /// - /// given(bird.name).willReturn("Ryan") - /// bird.forwardCalls(to: Crow(name: "Sterling")) - /// print(bird.name) // Prints "Ryan" + /// ```swift + /// given(bird.name).willReturn("Ryan") + /// bird.forwardCalls(to: Crow(name: "Sterling")) + /// print(bird.name) // Prints "Ryan" + /// ``` /// /// Objects must inherit from the mocked type to handle forwarded invocations, even if the /// declaration is identical. Adding an unrelated type as a forwarding target is a no-op. /// - /// // Not a `Bird` - /// class Person { - /// var name = "Ryan" - /// } + /// ```swift + /// // Not a `Bird` + /// class Person { + /// var name = "Ryan" + /// } /// - /// bird.forwardCalls(to: Person()) - /// print(bird.name) // Error: Missing stubbed implementation + /// bird.forwardCalls(to: Person()) + /// print(bird.name) // Error: Missing stubbed implementation + /// ``` /// /// - Parameter object: An object that should handle forwarded invocations. /// - Returns: A partial mock using `object` to handle invocations. diff --git a/Sources/MockingbirdFramework/Stubbing/PropertyProviders.swift b/Sources/MockingbirdFramework/Stubbing/PropertyProviders.swift index 0c8855ed..1a25e9d5 100644 --- a/Sources/MockingbirdFramework/Stubbing/PropertyProviders.swift +++ b/Sources/MockingbirdFramework/Stubbing/PropertyProviders.swift @@ -12,10 +12,12 @@ import Foundation /// Getters can be stubbed to automatically save and return values. /// with property getters to automatically save and return values. /// -/// given(bird.name).willReturn(lastSetValue(initial: "")) -/// print(bird.name) // Prints "" -/// bird.name = "Ryan" -/// print(bird.name) // Prints "Ryan" +/// ```swift +/// given(bird.name).willReturn(lastSetValue(initial: "")) +/// print(bird.name) // Prints "" +/// bird.name = "Ryan" +/// print(bird.name) // Prints "Ryan" +/// ``` /// /// - Parameter initial: The initial value to return. public func lastSetValue( diff --git a/Sources/MockingbirdFramework/Stubbing/SequenceProviders.swift b/Sources/MockingbirdFramework/Stubbing/SequenceProviders.swift index 92da6045..48ff9d76 100644 --- a/Sources/MockingbirdFramework/Stubbing/SequenceProviders.swift +++ b/Sources/MockingbirdFramework/Stubbing/SequenceProviders.swift @@ -34,12 +34,14 @@ enum SequenceType { /// Provide one or more values which will be returned sequentially for each invocation. The last /// value will be used if the number of invocations is greater than the number of values provided. /// -/// given(bird.name) -/// .willReturn(sequence(of: "Ryan", "Sterling")) +/// ```swift +/// given(bird.name) +/// .willReturn(sequence(of: "Ryan", "Sterling")) /// -/// print(bird.name) // Prints "Ryan" -/// print(bird.name) // Prints "Sterling" -/// print(bird.name) // Prints "Sterling" +/// print(bird.name) // Prints "Ryan" +/// print(bird.name) // Prints "Sterling" +/// print(bird.name) // Prints "Sterling" +/// ``` /// /// - Parameter values: A sequence of values to stub. public func sequence( @@ -54,15 +56,17 @@ public func sequence( /// last implementation will be used if the number of invocations is greater than the number of /// implementations provided. /// -/// given(bird.name).willReturn(sequence(of: { -/// return Bool.random() ? "Ryan" : "Meisters" -/// }, { -/// return Bool.random() ? "Sterling" : "Hackley" -/// })) +/// ```swift +/// given(bird.name).willReturn(sequence(of: { +/// return Bool.random() ? "Ryan" : "Meisters" +/// }, { +/// return Bool.random() ? "Sterling" : "Hackley" +/// })) /// -/// print(bird.name) // Prints "Ryan" -/// print(bird.name) // Prints "Sterling" -/// print(bird.name) // Prints "Hackley" +/// print(bird.name) // Prints "Ryan" +/// print(bird.name) // Prints "Sterling" +/// print(bird.name) // Prints "Hackley" +/// ``` /// /// - Parameter implementations: A sequence of implementations to stub. public func sequence( @@ -77,13 +81,15 @@ public func sequence( /// will loop from the beginning if the number of invocations is greater than the number of values /// provided. /// -/// given(bird.name) -/// .willReturn(loopingSequence(of: "Ryan", "Sterling")) +/// ```swift +/// given(bird.name) +/// .willReturn(loopingSequence(of: "Ryan", "Sterling")) /// -/// print(bird.name) // Prints "Ryan" -/// print(bird.name) // Prints "Sterling" -/// print(bird.name) // Prints "Ryan" -/// print(bird.name) // Prints "Sterling" +/// print(bird.name) // Prints "Ryan" +/// print(bird.name) // Prints "Sterling" +/// print(bird.name) // Prints "Ryan" +/// print(bird.name) // Prints "Sterling" +/// ``` /// /// - Parameter values: A sequence of values to stub. public func loopingSequence( @@ -98,16 +104,18 @@ public func loopingSequence( @@ -121,12 +129,14 @@ public func loopingSequence( @@ -141,15 +151,17 @@ public func finiteSequence( diff --git a/Sources/MockingbirdFramework/Stubbing/Stubbing+ObjC.swift b/Sources/MockingbirdFramework/Stubbing/Stubbing+ObjC.swift index 78611efc..4a1f00fc 100644 --- a/Sources/MockingbirdFramework/Stubbing/Stubbing+ObjC.swift +++ b/Sources/MockingbirdFramework/Stubbing/Stubbing+ObjC.swift @@ -7,19 +7,23 @@ import Foundation -/// Stub a mocked method or property by returning a single value. +/// Stub a mocked Objective-C method or property by returning a single value. /// /// Stubbing allows you to define custom behavior for mocks to perform. /// -/// given(bird.doMethod()) ~> someValue -/// given(bird.property) ~> someValue +/// ```swift +/// given(bird.doMethod()) ~> someValue +/// given(bird.property) ~> someValue +/// ``` /// /// Match exact or wildcard argument values when stubbing methods with parameters. Stubs added /// later have a higher precedence, so add stubs with specific matchers last. /// -/// given(bird.canChirp(volume: any())) ~> true // Any volume -/// given(bird.canChirp(volume: notNil())) ~> true // Any non-nil volume -/// given(bird.canChirp(volume: 10)) ~> true // Volume = 10 +/// ```swift +/// given(bird.canChirp(volume: any())) ~> true // Any volume +/// given(bird.canChirp(volume: notNil())) ~> true // Any non-nil volume +/// given(bird.canChirp(volume: 10)) ~> true // Volume = 10 +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -34,13 +38,15 @@ public func ~> ( // MARK: - Non-throwing -/// Stub a mocked method or property with a closure implementation. +/// Stub a mocked Objective-C method or property with a closure implementation. /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// -/// given(bird.canChirp(volume: any())) ~> { volume in -/// return volume < 42 -/// } +/// ```swift +/// given(bird.canChirp(volume: any())) ~> { volume in +/// return volume < 42 +/// } +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -54,13 +60,15 @@ public func ~> ( }) } -/// Stub a mocked method or property with a closure implementation. +/// Stub a mocked Objective-C method or property with a closure implementation. /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// -/// given(bird.canChirp(volume: any())) ~> { volume in -/// return volume < 42 -/// } +/// ```swift +/// given(bird.canChirp(volume: any())) ~> { volume in +/// return volume < 42 +/// } +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -75,13 +83,15 @@ public func ~> ( }) } -/// Stub a mocked method or property with a closure implementation. +/// Stub a mocked Objective-C method or property with a closure implementation. /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// -/// given(bird.canChirp(volume: any())) ~> { volume in -/// return volume < 42 -/// } +/// ```swift +/// given(bird.canChirp(volume: any())) ~> { volume in +/// return volume < 42 +/// } +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -96,13 +106,15 @@ public func ~> ( }) } -/// Stub a mocked method or property with a closure implementation. +/// Stub a mocked Objective-C method or property with a closure implementation. /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// -/// given(bird.canChirp(volume: any())) ~> { volume in -/// return volume < 42 -/// } +/// ```swift +/// given(bird.canChirp(volume: any())) ~> { volume in +/// return volume < 42 +/// } +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -117,13 +129,15 @@ public func ~> ( }) } -/// Stub a mocked method or property with a closure implementation. +/// Stub a mocked Objective-C method or property with a closure implementation. /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// -/// given(bird.canChirp(volume: any())) ~> { volume in -/// return volume < 42 -/// } +/// ```swift +/// given(bird.canChirp(volume: any())) ~> { volume in +/// return volume < 42 +/// } +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -138,13 +152,15 @@ public func ~> ( }) } -/// Stub a mocked method or property with a closure implementation. +/// Stub a mocked Objective-C method or property with a closure implementation. /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// -/// given(bird.canChirp(volume: any())) ~> { volume in -/// return volume < 42 -/// } +/// ```swift +/// given(bird.canChirp(volume: any())) ~> { volume in +/// return volume < 42 +/// } +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -159,13 +175,15 @@ public func ~> ( }) } -/// Stub a mocked method or property with a closure implementation. +/// Stub a mocked Objective-C method or property with a closure implementation. /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// -/// given(bird.canChirp(volume: any())) ~> { volume in -/// return volume < 42 -/// } +/// ```swift +/// given(bird.canChirp(volume: any())) ~> { volume in +/// return volume < 42 +/// } +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -180,13 +198,15 @@ public func ~> ( }) } -/// Stub a mocked method or property with a closure implementation. +/// Stub a mocked Objective-C method or property with a closure implementation. /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// -/// given(bird.canChirp(volume: any())) ~> { volume in -/// return volume < 42 -/// } +/// ```swift +/// given(bird.canChirp(volume: any())) ~> { volume in +/// return volume < 42 +/// } +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -202,13 +222,15 @@ public func ~> ( }) } -/// Stub a mocked method or property with a closure implementation. +/// Stub a mocked Objective-C method or property with a closure implementation. /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// -/// given(bird.canChirp(volume: any())) ~> { volume in -/// return volume < 42 -/// } +/// ```swift +/// given(bird.canChirp(volume: any())) ~> { volume in +/// return volume < 42 +/// } +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -224,13 +246,15 @@ public func ~> ( }) } -/// Stub a mocked method or property with a closure implementation. +/// Stub a mocked Objective-C method or property with a closure implementation. /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// -/// given(bird.canChirp(volume: any())) ~> { volume in -/// return volume < 42 -/// } +/// ```swift +/// given(bird.canChirp(volume: any())) ~> { volume in +/// return volume < 42 +/// } +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -246,13 +270,15 @@ public func ~> ( }) } -/// Stub a mocked method or property with a closure implementation. +/// Stub a mocked Objective-C method or property with a closure implementation. /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// -/// given(bird.canChirp(volume: any())) ~> { volume in -/// return volume < 42 -/// } +/// ```swift +/// given(bird.canChirp(volume: any())) ~> { volume in +/// return volume < 42 +/// } +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -272,13 +298,15 @@ public func ~> ( // MARK: - Throwing -/// Stub a mocked method or property with a closure implementation. +/// Stub a mocked Objective-C method or property with a closure implementation. /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// -/// given(bird.canChirp(volume: any())) ~> { volume in -/// return volume < 42 -/// } +/// ```swift +/// given(bird.canChirp(volume: any())) ~> { volume in +/// return volume < 42 +/// } +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -292,13 +320,15 @@ public func ~> ( }) } -/// Stub a mocked method or property with a closure implementation. +/// Stub a mocked Objective-C method or property with a closure implementation. /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// -/// given(bird.canChirp(volume: any())) ~> { volume in -/// return volume < 42 -/// } +/// ```swift +/// given(bird.canChirp(volume: any())) ~> { volume in +/// return volume < 42 +/// } +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -313,13 +343,15 @@ public func ~> ( }) } -/// Stub a mocked method or property with a closure implementation. +/// Stub a mocked Objective-C method or property with a closure implementation. /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// -/// given(bird.canChirp(volume: any())) ~> { volume in -/// return volume < 42 -/// } +/// ```swift +/// given(bird.canChirp(volume: any())) ~> { volume in +/// return volume < 42 +/// } +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -334,13 +366,15 @@ public func ~> ( }) } -/// Stub a mocked method or property with a closure implementation. +/// Stub a mocked Objective-C method or property with a closure implementation. /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// -/// given(bird.canChirp(volume: any())) ~> { volume in -/// return volume < 42 -/// } +/// ```swift +/// given(bird.canChirp(volume: any())) ~> { volume in +/// return volume < 42 +/// } +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -355,13 +389,15 @@ public func ~> ( }) } -/// Stub a mocked method or property with a closure implementation. +/// Stub a mocked Objective-C method or property with a closure implementation. /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// -/// given(bird.canChirp(volume: any())) ~> { volume in -/// return volume < 42 -/// } +/// ```swift +/// given(bird.canChirp(volume: any())) ~> { volume in +/// return volume < 42 +/// } +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -376,13 +412,15 @@ public func ~> ( }) } -/// Stub a mocked method or property with a closure implementation. +/// Stub a mocked Objective-C method or property with a closure implementation. /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// -/// given(bird.canChirp(volume: any())) ~> { volume in -/// return volume < 42 -/// } +/// ```swift +/// given(bird.canChirp(volume: any())) ~> { volume in +/// return volume < 42 +/// } +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -397,13 +435,15 @@ public func ~> ( }) } -/// Stub a mocked method or property with a closure implementation. +/// Stub a mocked Objective-C method or property with a closure implementation. /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// -/// given(bird.canChirp(volume: any())) ~> { volume in -/// return volume < 42 -/// } +/// ```swift +/// given(bird.canChirp(volume: any())) ~> { volume in +/// return volume < 42 +/// } +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -418,13 +458,15 @@ public func ~> ( }) } -/// Stub a mocked method or property with a closure implementation. +/// Stub a mocked Objective-C method or property with a closure implementation. /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// -/// given(bird.canChirp(volume: any())) ~> { volume in -/// return volume < 42 -/// } +/// ```swift +/// given(bird.canChirp(volume: any())) ~> { volume in +/// return volume < 42 +/// } +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -440,13 +482,15 @@ public func ~> ( }) } -/// Stub a mocked method or property with a closure implementation. +/// Stub a mocked Objective-C method or property with a closure implementation. /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// -/// given(bird.canChirp(volume: any())) ~> { volume in -/// return volume < 42 -/// } +/// ```swift +/// given(bird.canChirp(volume: any())) ~> { volume in +/// return volume < 42 +/// } +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -462,13 +506,15 @@ public func ~> ( }) } -/// Stub a mocked method or property with a closure implementation. +/// Stub a mocked Objective-C method or property with a closure implementation. /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// -/// given(bird.canChirp(volume: any())) ~> { volume in -/// return volume < 42 -/// } +/// ```swift +/// given(bird.canChirp(volume: any())) ~> { volume in +/// return volume < 42 +/// } +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -484,13 +530,15 @@ public func ~> ( }) } -/// Stub a mocked method or property with a closure implementation. +/// Stub a mocked Objective-C method or property with a closure implementation. /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// -/// given(bird.canChirp(volume: any())) ~> { volume in -/// return volume < 42 -/// } +/// ```swift +/// given(bird.canChirp(volume: any())) ~> { volume in +/// return volume < 42 +/// } +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. diff --git a/Sources/MockingbirdFramework/Stubbing/Stubbing.swift b/Sources/MockingbirdFramework/Stubbing/Stubbing.swift index fa750b3a..7e9a0d19 100644 --- a/Sources/MockingbirdFramework/Stubbing/Stubbing.swift +++ b/Sources/MockingbirdFramework/Stubbing/Stubbing.swift @@ -13,44 +13,52 @@ import XCTest /// /// Stubbing allows you to define custom behavior for mocks to perform. /// -/// protocol Bird { -/// var name: String { get } -/// func chirp(at volume: Int) throws -> Bool -/// } -/// -/// given(bird.name).willReturn("Ryan") -/// given(bird.chirp(at: 42)).willThrow(BirdError()) -/// given(bird.chirp(at: any())).will { volume in -/// return volume < 42 -/// } +/// ```swift +/// protocol Bird { +/// var name: String { get } +/// func chirp(at volume: Int) throws -> Bool +/// } +/// +/// given(bird.name).willReturn("Ryan") +/// given(bird.chirp(at: 42)).willThrow(BirdError()) +/// given(bird.chirp(at: any())).will { volume in +/// return volume < 42 +/// } +/// ``` /// /// This is equivalent to the shorthand syntax using the stubbing operator `~>`. /// -/// given(bird.name) ~> "Ryan" -/// given(bird.chirp(at: 42)) ~> { throw BirdError() } -/// given(bird.chirp(at: any())) ~> { volume in -/// return volume < 42 -/// } +/// ```swift +/// given(bird.name) ~> "Ryan" +/// given(bird.chirp(at: 42)) ~> { throw BirdError() } +/// given(bird.chirp(at: any())) ~> { volume in +/// return volume < 42 +/// } +/// ``` /// /// Properties can have stubs on both their getters and setters. /// -/// given(bird.name).willReturn("Ryan") -/// given(bird.name = any()).will { -/// print("Hello \($0)") -/// } +/// ```swift +/// given(bird.name).willReturn("Ryan") +/// given(bird.name = any()).will { +/// print("Hello \($0)") +/// } /// -/// print(bird.name) // Prints "Ryan" -/// bird.name = "Sterling" // Prints "Hello Sterling" +/// print(bird.name) // Prints "Ryan" +/// bird.name = "Sterling" // Prints "Hello Sterling" +/// ``` /// /// This is equivalent to using the synthesized getter and setter methods. /// -/// given(bird.getName()).willReturn("Ryan") -/// given(bird.setName(any())).will { -/// print("Hello \($0)") -/// } +/// ```swift +/// given(bird.getName()).willReturn("Ryan") +/// given(bird.setName(any())).will { +/// print("Hello \($0)") +/// } /// -/// print(bird.name) // Prints "Ryan" -/// bird.name = "Sterling" // Prints "Hello Sterling" +/// print(bird.name) // Prints "Ryan" +/// bird.name = "Sterling" // Prints "Hello Sterling" +/// ``` /// /// - Parameter declaration: A stubbable declaration. public func given( @@ -60,33 +68,39 @@ public func given( context: declaration.mock.mockingbirdContext) } -/// Stub a declaration to return a value or perform an operation. +/// Stub an Objective-C or property declaration to return a value or perform an operation. /// /// Stubbing allows you to define custom behavior for mocks to perform. /// -/// given(bird.canChirp()).willReturn(true) -/// given(bird.canChirp()).willThrow(BirdError()) -/// given(bird.canChirp(volume: any())).will { volume in -/// return volume as Int < 42 -/// } +/// ```swift +/// given(bird.canChirp()).willReturn(true) +/// given(bird.canChirp()).willThrow(BirdError()) +/// given(bird.canChirp(volume: any())).will { volume in +/// return volume as Int < 42 +/// } +/// ``` /// /// This is equivalent to the shorthand syntax using the stubbing operator `~>`. /// -/// given(bird.canChirp()) ~> true -/// given(bird.canChirp()) ~> { throw BirdError() } -/// given(bird.canChirp(volume: any()) ~> { volume in -/// return volume as Int < 42 -/// } +/// ```swift +/// given(bird.canChirp()) ~> true +/// given(bird.canChirp()) ~> { throw BirdError() } +/// given(bird.canChirp(volume: any()) ~> { volume in +/// return volume as Int < 42 +/// } +/// ``` /// /// Properties can have stubs on both their getters and setters. /// -/// given(bird.name).willReturn("Ryan") -/// given(bird.name = any()).will { (name: String) in -/// print("Hello \(name)") -/// } +/// ```swift +/// given(bird.name).willReturn("Ryan") +/// given(bird.name = any()).will { (name: String) in +/// print("Hello \(name)") +/// } /// -/// print(bird.name) // Prints "Ryan" -/// bird.name = "Sterling" // Prints "Hello Sterling" +/// print(bird.name) // Prints "Ryan" +/// bird.name = "Sterling" // Prints "Hello Sterling" +/// ``` /// /// - Parameter declaration: A stubbable declaration. public func given( @@ -136,14 +150,16 @@ public class StubbingManager Void) - /// } + /// ```swift + /// protocol Bird { + /// func send(_ message: inout String) + /// func fly(callback: (Result) -> Void) + /// } /// - /// // Inout parameter type - /// var message = "Hello!" - /// given(bird.send(message: any())).will { message in - /// message = message.uppercased() - /// } - /// bird.send(&message) - /// print(message) // Prints "HELLO!" + /// // Inout parameter type + /// var message = "Hello!" + /// given(bird.send(message: any())).will { message in + /// message = message.uppercased() + /// } + /// bird.send(&message) + /// print(message) // Prints "HELLO!" /// - /// // Closure parameter type - /// given(bird.fly(callback: any())).will { callback in - /// callback(.success) - /// } - /// bird.fly(callback: { result in - /// print(result) // Prints Result.success - /// }) + /// // Closure parameter type + /// given(bird.fly(callback: any())).will { callback in + /// callback(.success) + /// } + /// bird.fly(callback: { result in + /// print(result) // Prints Result.success + /// }) + /// ``` /// /// - Parameter implementation: A closure implementation stub to evaluate. /// - Returns: The current stubbing manager which can be used to chain additional stubs. @@ -328,8 +358,10 @@ extension StubbingManager where DeclarationType == ThrowingFunctionDeclaration { /// Stubbing allows you to define custom behavior for mocks to perform. Methods that throw or /// rethrow errors can be stubbed with a throwable object. /// - /// struct BirdError: Error {} - /// given(bird.throwingMethod()).willThrow(BirdError()) + /// ```swift + /// struct BirdError: Error {} + /// given(bird.throwingMethod()).willThrow(BirdError()) + /// ``` /// /// - Note: Methods overloaded by return type should chain `returning` with `willThrow` to /// disambiguate the mocked declaration. @@ -346,15 +378,17 @@ extension StubbingManager where DeclarationType == ThrowingFunctionDeclaration { /// Declarations for methods overloaded by return type and stubbed with `willThrow` cannot use /// type inference and should be disambiguated. /// - /// protocol Bird { - /// func getMessage() throws -> T // Overloaded generically - /// func getMessage() throws -> String // Overloaded explicitly - /// func getMessage() throws -> Data - /// } + /// ```swift + /// protocol Bird { + /// func getMessage() throws -> T // Overloaded generically + /// func getMessage() throws -> String // Overloaded explicitly + /// func getMessage() throws -> Data + /// } /// - /// given(bird.send(any())) - /// .returning(String.self) - /// .willThrow(BirdError()) + /// given(bird.send(any())) + /// .returning(String.self) + /// .willThrow(BirdError()) + /// ``` /// /// - Parameter type: The return type of the declaration to stub. public func returning(_ type: ReturnType.Type = ReturnType.self) -> Self { @@ -368,8 +402,10 @@ extension StubbingManager where ReturnType == Void { /// /// Stubbing allows you to define custom behavior for mocks to perform. /// - /// given(bird.doVoidMethod()).willReturn() - /// given(bird.setProperty(any())).willReturn() + /// ```swift + /// given(bird.doVoidMethod()).willReturn() + /// given(bird.setProperty(any())).willReturn() + /// ``` /// /// - Note: Methods returning `Void` do not need to be explicitly stubbed. /// @@ -389,15 +425,19 @@ infix operator ~> /// /// Stubbing allows you to define custom behavior for mocks to perform. /// -/// given(bird.doMethod()) ~> someValue -/// given(bird.property) ~> someValue +/// ```swift +/// given(bird.doMethod()) ~> someValue +/// given(bird.property) ~> someValue +/// ``` /// /// Match exact or wildcard argument values when stubbing methods with parameters. Stubs added /// later have a higher precedence, so add stubs with specific matchers last. /// -/// given(bird.canChirp(volume: any())) ~> true // Any volume -/// given(bird.canChirp(volume: notNil())) ~> true // Any non-nil volume -/// given(bird.canChirp(volume: 10)) ~> true // Volume = 10 +/// ```swift +/// given(bird.canChirp(volume: any())) ~> true // Any volume +/// given(bird.canChirp(volume: notNil())) ~> true // Any non-nil volume +/// given(bird.canChirp(volume: 10)) ~> true // Volume = 10 +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -413,29 +453,33 @@ public func ~> ( /// /// Use a closure to implement stubs that contain logic, interact with arguments, or throw errors. /// -/// given(bird.canChirp(volume: any())) ~> { volume in -/// return volume < 42 -/// } +/// ```swift +/// given(bird.canChirp(volume: any())) ~> { volume in +/// return volume < 42 +/// } +/// ``` /// /// Stubs are type safe and work with inout and closure parameter types. /// -/// protocol Bird { -/// func send(_ message: inout String) -/// func fly(callback: (Result) -> Void) -/// } -/// -/// // Inout parameter type -/// var message = "Hello!" -/// bird.send(&message) -/// print(message) // Prints "HELLO!" -/// -/// // Closure parameter type -/// given(bird.fly(callback: any())).will { callback in -/// callback(.success) -/// } -/// bird.fly(callback: { result in -/// print(result) // Prints Result.success -/// }) +/// ```swift +/// protocol Bird { +/// func send(_ message: inout String) +/// func fly(callback: (Result) -> Void) +/// } +/// +/// // Inout parameter type +/// var message = "Hello!" +/// bird.send(&message) +/// print(message) // Prints "HELLO!" +/// +/// // Closure parameter type +/// given(bird.fly(callback: any())).will { callback in +/// callback(.success) +/// } +/// bird.fly(callback: { result in +/// print(result) // Prints Result.success +/// }) +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -452,10 +496,12 @@ public func ~> ( /// There are several preset implementation providers such as `lastSetValue`, which can be used /// with property getters to automatically save and return values. /// -/// given(bird.name) ~> lastSetValue(initial: "") -/// print(bird.name) // Prints "" -/// bird.name = "Ryan" -/// print(bird.name) // Prints "Ryan" +/// ```swift +/// given(bird.name) ~> lastSetValue(initial: "") +/// print(bird.name) // Prints "" +/// bird.name = "Ryan" +/// print(bird.name) // Prints "Ryan" +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. @@ -471,13 +517,15 @@ public func ~> ( /// /// Use the stubbing operator to bind a specific mocked declaration to a forwarding context. /// -/// class Crow { -/// let name: String -/// init(name: String) { self.name = name } -/// } +/// ```swift +/// class Crow { +/// let name: String +/// init(name: String) { self.name = name } +/// } /// -/// given(bird.name) ~> forward(to: Crow(name: "Ryan")) -/// print(bird.name) // Prints "Ryan" +/// given(bird.name) ~> forward(to: Crow(name: "Ryan")) +/// print(bird.name) // Prints "Ryan" +/// ``` /// /// - Parameters: /// - manager: A stubbing manager containing declaration and argument metadata for stubbing. diff --git a/Sources/MockingbirdFramework/Stubbing/ValueProvider.swift b/Sources/MockingbirdFramework/Stubbing/ValueProvider.swift index e3b5eb94..6efcb32e 100644 --- a/Sources/MockingbirdFramework/Stubbing/ValueProvider.swift +++ b/Sources/MockingbirdFramework/Stubbing/ValueProvider.swift @@ -12,23 +12,25 @@ import Foundation /// Provide wildcard instances for generic types by conforming the base type to `Providable` and /// registering the type. Non-wildcard instances have precedence over wildcard instances. /// -/// extension Array: Providable { -/// public static func createInstance() -> Self? { -/// return Array() -/// } -/// } +/// ```swift +/// extension Array: Providable { +/// public static func createInstance() -> Self? { +/// return Array() +/// } +/// } /// -/// var valueProvider = ValueProvider() -/// valueProvider.registerType(Array.self) +/// var valueProvider = ValueProvider() +/// valueProvider.registerType(Array.self) /// -/// // All specializations of `Array` return an empty array -/// print(valueProvider.provideValue(for: Array.self)) // Prints [] -/// print(valueProvider.provideValue(for: Array.self)) // Prints [] +/// // All specializations of `Array` return an empty array +/// print(valueProvider.provideValue(for: Array.self)) // Prints [] +/// print(valueProvider.provideValue(for: Array.self)) // Prints [] /// -/// // Register a non-wildcard instance of `Array` -/// valueProvider.register(["A", "B"], for: Array.self) -/// print(valueProvider.provideValue(for: Array.self)) // Prints ["A", "B"] -/// print(valueProvider.provideValue(for: Array.self)) // Prints [] +/// // Register a non-wildcard instance of `Array` +/// valueProvider.register(["A", "B"], for: Array.self) +/// print(valueProvider.provideValue(for: Array.self)) // Prints ["A", "B"] +/// print(valueProvider.provideValue(for: Array.self)) // Prints [] +/// ``` /// /// - Note: This can only be used for Swift types due to limitations with Objective-C generics in /// Swift extensions. @@ -56,17 +58,21 @@ extension Providable { /// Mockingbird provides preset value providers which are guaranteed to be backwards compatible, /// such as `.standardProvider`. /// -/// let bird = mock(Bird.self) -/// bird.useDefaultValues(from: .standardProvider) -/// print(bird.name) // Prints "" +/// ```swift +/// let bird = mock(Bird.self) +/// bird.useDefaultValues(from: .standardProvider) +/// print(bird.name) // Prints "" +/// ``` /// /// You can create custom value providers by registering values for types. /// -/// var valueProvider = ValueProvider() -/// valueProvider.register("Ryan", for: String.self) -/// -/// bird.useDefaultValues(from: valueProvider) -/// print(bird.name) // Prints "Ryan" +/// ```swift +/// var valueProvider = ValueProvider() +/// valueProvider.register("Ryan", for: String.self) +/// +/// bird.useDefaultValues(from: valueProvider) +/// print(bird.name) // Prints "Ryan" +/// ``` public struct ValueProvider { var storedValues = [ObjectIdentifier: Any]() var enabledIdentifiers = Set() @@ -92,9 +98,11 @@ public struct ValueProvider { /// Value providers can be composed by adding values from another provider. Values in the other /// provider have precedence and will overwrite existing values in this provider. /// - /// var valueProvider = ValueProvider() - /// valueProvider.add(.standardProvider) - /// print(valueProvider.provideValue(for: String.self)) // Prints "" + /// ```swift + /// var valueProvider = ValueProvider() + /// valueProvider.add(.standardProvider) + /// print(valueProvider.provideValue(for: String.self)) // Prints "" + /// ``` /// /// - Parameter other: A value provider to combine. mutating public func add(_ other: Self) { @@ -107,9 +115,11 @@ public struct ValueProvider { /// Value providers can be composed by adding values from another provider. Values in the added /// provider have precendence over those in base provider. /// - /// let valueProvider = ValueProvider.collectionsProvider.adding(.primitivesProvider) - /// print(valueProvider.provideValue(for: [Bool].self)) // Prints [] - /// print(valueProvider.provideValue(for: Int.self)) // Prints 0 + /// ```swift + /// let valueProvider = ValueProvider.collectionsProvider.adding(.primitivesProvider) + /// print(valueProvider.provideValue(for: [Bool].self)) // Prints [] + /// print(valueProvider.provideValue(for: Int.self)) // Prints 0 + /// ``` /// /// - Parameter other: A value provider to combine. /// - Returns: A new value provider with the values of `lhs` and `rhs`. @@ -124,9 +134,11 @@ public struct ValueProvider { /// Value providers can be composed by adding values from other providers. Values in the second /// provider have precendence over those in first provider. /// - /// let valueProvider = .collectionsProvider + .primitivesProvider - /// print(valueProvider.provideValue(for: [Bool].self)) // Prints [] - /// print(valueProvider.provideValue(for: Int.self)) // Prints 0 + /// ```swift + /// let valueProvider = .collectionsProvider + .primitivesProvider + /// print(valueProvider.provideValue(for: [Bool].self)) // Prints [] + /// print(valueProvider.provideValue(for: Int.self)) // Prints 0 + /// ``` /// /// - Parameters: /// - lhs: A value provider. @@ -142,9 +154,11 @@ public struct ValueProvider { /// /// Create custom value providers by registering values for types. /// - /// var valueProvider = ValueProvider() - /// valueProvider.register("Ryan", for: String.self) - /// print(valueProvider.provideValue(for: String.self)) // Prints "Ryan" + /// ```swift + /// var valueProvider = ValueProvider() + /// valueProvider.register("Ryan", for: String.self) + /// print(valueProvider.provideValue(for: String.self)) // Prints "Ryan" + /// ``` /// /// - Parameters: /// - value: The value to register. @@ -159,23 +173,25 @@ public struct ValueProvider { /// Provide wildcard instances for generic types by conforming the base type to `Providable` and /// registering the type. Non-wildcard instances have precedence over wildcard instances. /// - /// extension Array: Providable { - /// public static func createInstance() -> Self? { - /// return Array() - /// } - /// } + /// ```swift + /// extension Array: Providable { + /// public static func createInstance() -> Self? { + /// return Array() + /// } + /// } /// - /// var valueProvider = ValueProvider() - /// valueProvider.registerType(Array.self) + /// var valueProvider = ValueProvider() + /// valueProvider.registerType(Array.self) /// - /// // All specializations of `Array` return an empty array - /// print(valueProvider.provideValue(for: Array.self)) // Prints [] - /// print(valueProvider.provideValue(for: Array.self)) // Prints [] + /// // All specializations of `Array` return an empty array + /// print(valueProvider.provideValue(for: Array.self)) // Prints [] + /// print(valueProvider.provideValue(for: Array.self)) // Prints [] /// - /// // Register a non-wildcard instance of `Array` - /// valueProvider.register(["A", "B"], for: Array.self) - /// print(valueProvider.provideValue(for: Array.self)) // Prints ["A", "B"] - /// print(valueProvider.provideValue(for: Array.self)) // Prints [] + /// // Register a non-wildcard instance of `Array` + /// valueProvider.register(["A", "B"], for: Array.self) + /// print(valueProvider.provideValue(for: Array.self)) // Prints ["A", "B"] + /// print(valueProvider.provideValue(for: Array.self)) // Prints [] + /// ``` /// /// - Parameter type: A `Providable` type to register. mutating public func registerType(_ type: T.Type = T.self) { @@ -187,16 +203,18 @@ public struct ValueProvider { /// Previously registered values can be removed from the top-level value provider. This does not /// affect values provided by subproviders. /// - /// var valueProvider = ValueProvider(from: .standardProvider) - /// print(valueProvider.provideValue(for: String.self)) // Prints "" + /// ```swift + /// var valueProvider = ValueProvider(from: .standardProvider) + /// print(valueProvider.provideValue(for: String.self)) // Prints "" /// - /// // Override the subprovider value - /// valueProvider.register("Ryan", for: String.self) - /// print(valueProvider.provideValue(for: String.self)) // Prints "Ryan" + /// // Override the subprovider value + /// valueProvider.register("Ryan", for: String.self) + /// print(valueProvider.provideValue(for: String.self)) // Prints "Ryan" /// - /// // Remove the registered value - /// valueProvider.remove(String.self) - /// print(valueProvider.provideValue(for: String.self)) // Prints "" + /// // Remove the registered value + /// valueProvider.remove(String.self) + /// print(valueProvider.provideValue(for: String.self)) // Prints "" + /// ``` /// /// - Parameter type: The type to remove a previously registered value for. mutating public func remove(_ type: T.Type) { @@ -208,13 +226,15 @@ public struct ValueProvider { /// Previously registered wildcard instances for generic types can be removed from the top-level /// value provider. /// - /// var valueProvider = ValueProvider() + /// ```swift + /// var valueProvider = ValueProvider() /// - /// valueProvider.registerType(Array.self) - /// print(valueProvider.provideValue(for: Array.self)) // Prints [] + /// valueProvider.registerType(Array.self) + /// print(valueProvider.provideValue(for: Array.self)) // Prints [] /// - /// valueProvider.remove(Array.self) - /// print(valueProvider.provideValue(for: Array.self)) // Prints nil + /// valueProvider.remove(Array.self) + /// print(valueProvider.provideValue(for: Array.self)) // Prints nil + /// ``` /// /// - Parameter type: A `Providable` type to remove. mutating public func remove(_ type: T.Type = T.self) { diff --git a/Sources/MockingbirdFramework/Verification/AsyncVerification.swift b/Sources/MockingbirdFramework/Verification/AsyncVerification.swift index 5eee7dbd..dd433aa3 100644 --- a/Sources/MockingbirdFramework/Verification/AsyncVerification.swift +++ b/Sources/MockingbirdFramework/Verification/AsyncVerification.swift @@ -13,17 +13,19 @@ import XCTest /// Mocked methods that are invoked asynchronously can be verified using an `eventually` block which /// returns an `XCTestExpectation`. /// -/// DispatchQueue.main.async { -/// Tree(with: bird).shake() -/// } +/// ```swift +/// DispatchQueue.main.async { +/// Tree(with: bird).shake() +/// } /// -/// let expectation = -/// eventually { -/// verify(bird.fly()).wasCalled() -/// verify(bird.chirp()).wasCalled() -/// } +/// let expectation = +/// eventually { +/// verify(bird.fly()).wasCalled() +/// verify(bird.chirp()).wasCalled() +/// } /// -/// wait(for: [expectation], timeout: 1.0) +/// wait(for: [expectation], timeout: 1.0) +/// ``` /// /// - Parameters: /// - description: An optional description for the created `XCTestExpectation`. diff --git a/Sources/MockingbirdFramework/Verification/OrderedVerification.swift b/Sources/MockingbirdFramework/Verification/OrderedVerification.swift index f2af5519..b4b83fc3 100644 --- a/Sources/MockingbirdFramework/Verification/OrderedVerification.swift +++ b/Sources/MockingbirdFramework/Verification/OrderedVerification.swift @@ -13,38 +13,44 @@ import XCTest /// Calls to `verify` within the scope of an `inOrder` verification block are checked relative to /// each other. /// -/// // Verify that `canFly` was called before `fly` -/// inOrder { -/// verify(bird.canFly).wasCalled() -/// verify(bird.fly()).wasCalled() -/// } +/// ```swift +/// // Verify that `canFly` was called before `fly` +/// inOrder { +/// verify(bird.canFly).wasCalled() +/// verify(bird.fly()).wasCalled() +/// } +/// ``` /// /// Pass options to `inOrder` verification blocks for stricter checks with additional invariants. /// -/// inOrder(with: .noInvocationsAfter) { -/// verify(bird.canFly).wasCalled() -/// verify(bird.fly()).wasCalled() -/// } +/// ```swift +/// inOrder(with: .noInvocationsAfter) { +/// verify(bird.canFly).wasCalled() +/// verify(bird.fly()).wasCalled() +/// } +/// ``` /// /// An `inOrder` block is resolved greedily, such that each verification must happen from the oldest /// remaining unsatisfied invocations. /// -/// // Given these unsatisfied invocations -/// bird.canFly -/// bird.canFly -/// bird.fly() +/// ```swift +/// // Given these unsatisfied invocations +/// bird.canFly +/// bird.canFly +/// bird.fly() /// -/// // Greedy strategy _must_ start from the first `canFly` -/// inOrder { -/// verify(bird.canFly).wasCalled(twice) -/// verify(bird.fly()).wasCalled() -/// } +/// // Greedy strategy _must_ start from the first `canFly` +/// inOrder { +/// verify(bird.canFly).wasCalled(twice) +/// verify(bird.fly()).wasCalled() +/// } /// -/// // Non-greedy strategy can start from the second `canFly` -/// inOrder { -/// verify(bird.canFly).wasCalled() -/// verify(bird.fly()).wasCalled() -/// } +/// // Non-greedy strategy can start from the second `canFly` +/// inOrder { +/// verify(bird.canFly).wasCalled() +/// verify(bird.fly()).wasCalled() +/// } +/// ``` /// /// - Parameters: /// - options: Options to use when verifying invocations. @@ -66,63 +72,69 @@ public struct OrderedVerificationOptions: OptionSet { /// /// Use this option to disallow invocations prior to those satisfying the first verification. /// - /// bird.name - /// bird.canFly - /// bird.fly() + /// ```swift + /// bird.name + /// bird.canFly + /// bird.fly() /// - /// // Passes _without_ the option - /// inOrder { - /// verify(bird.canFly).wasCalled() - /// verify(bird.fly()).wasCalled() - /// } + /// // Passes _without_ the option + /// inOrder { + /// verify(bird.canFly).wasCalled() + /// verify(bird.fly()).wasCalled() + /// } /// - /// // Fails with the option - /// inOrder(with: .noInvocationsBefore) { - /// verify(bird.canFly).wasCalled() - /// verify(bird.fly()).wasCalled() - /// } + /// // Fails with the option + /// inOrder(with: .noInvocationsBefore) { + /// verify(bird.canFly).wasCalled() + /// verify(bird.fly()).wasCalled() + /// } + /// ``` public static let noInvocationsBefore = OrderedVerificationOptions(rawValue: 1 << 0) /// Check that there are no recorded invocations after those explicitly verified in the block. /// /// Use this option to disallow subsequent invocations to those satisfying the last verification. /// - /// bird.name - /// bird.canFly - /// bird.fly() + /// ```swift + /// bird.name + /// bird.canFly + /// bird.fly() /// - /// // Passes _without_ the option - /// inOrder { - /// verify(bird.name).wasCalled() - /// verify(bird.canFly).wasCalled() - /// } + /// // Passes _without_ the option + /// inOrder { + /// verify(bird.name).wasCalled() + /// verify(bird.canFly).wasCalled() + /// } /// - /// // Fails with the option - /// inOrder(with: .noInvocationsAfter) { - /// verify(bird.name).wasCalled() - /// verify(bird.canFly).wasCalled() - /// } + /// // Fails with the option + /// inOrder(with: .noInvocationsAfter) { + /// verify(bird.name).wasCalled() + /// verify(bird.canFly).wasCalled() + /// } + /// ``` public static let noInvocationsAfter = OrderedVerificationOptions(rawValue: 1 << 1) /// Check that there are no recorded invocations between those explicitly verified in the block. /// /// Use this option to disallow non-consecutive invocations to each verification. /// - /// bird.name - /// bird.canFly - /// bird.fly() + /// ```swift + /// bird.name + /// bird.canFly + /// bird.fly() /// - /// // Passes _without_ the option - /// inOrder { - /// verify(bird.name).wasCalled() - /// verify(bird.fly()).wasCalled() - /// } + /// // Passes _without_ the option + /// inOrder { + /// verify(bird.name).wasCalled() + /// verify(bird.fly()).wasCalled() + /// } /// - /// // Fails with the option - /// inOrder(with: .onlyConsecutiveInvocations) { - /// verify(bird.name).wasCalled() - /// verify(bird.fly()).wasCalled() - /// } + /// // Fails with the option + /// inOrder(with: .onlyConsecutiveInvocations) { + /// verify(bird.name).wasCalled() + /// verify(bird.fly()).wasCalled() + /// } + /// ``` public static let onlyConsecutiveInvocations = OrderedVerificationOptions(rawValue: 1 << 2) } diff --git a/Sources/MockingbirdFramework/Verification/Verification.swift b/Sources/MockingbirdFramework/Verification/Verification.swift index 763d1e3d..5e4c6363 100644 --- a/Sources/MockingbirdFramework/Verification/Verification.swift +++ b/Sources/MockingbirdFramework/Verification/Verification.swift @@ -8,19 +8,23 @@ import Foundation import XCTest -/// Verify that a mock recieved a specific invocation some number of times. +/// Verify that a declaration was called. /// /// Verification lets you assert that a mock received a particular invocation during its lifetime. /// -/// verify(bird.doMethod()).wasCalled() -/// verify(bird.getProperty()).wasCalled() -/// verify(bird.setProperty(any())).wasCalled() +/// ```swift +/// verify(bird.doMethod()).wasCalled() +/// verify(bird.getProperty()).wasCalled() +/// verify(bird.setProperty(any())).wasCalled() +/// ``` /// /// Match exact or wildcard argument values when verifying methods with parameters. /// -/// verify(bird.canChirp(volume: any())).wasCalled() // Called with any volume -/// verify(bird.canChirp(volume: notNil())).wasCalled() // Called with any non-nil volume -/// verify(bird.canChirp(volume: 10)).wasCalled() // Called with volume = 10 +/// ```swift +/// verify(bird.canChirp(volume: any())).wasCalled() // Called with any volume +/// verify(bird.canChirp(volume: notNil())).wasCalled() // Called with any non-nil volume +/// verify(bird.canChirp(volume: 10)).wasCalled() // Called with volume = 10 +/// ``` /// /// - Parameters: /// - mock: A mocked declaration to verify. @@ -31,19 +35,23 @@ public func verify( return VerificationManager(with: declaration, at: SourceLocation(file, line)) } -/// Verify that a mock recieved a specific invocation some number of times. +/// Verify that an Objective-C mock or property declaration was called. /// /// Verification lets you assert that a mock received a particular invocation during its lifetime. /// -/// verify(bird.doMethod()).wasCalled() -/// verify(bird.getProperty()).wasCalled() -/// verify(bird.setProperty(any())).wasCalled() +/// ```swift +/// verify(bird.doMethod()).wasCalled() +/// verify(bird.getProperty()).wasCalled() +/// verify(bird.setProperty(any())).wasCalled() +/// ``` /// /// Match exact or wildcard argument values when verifying methods with parameters. /// -/// verify(bird.canChirp(volume: any())).wasCalled() // Called with any volume -/// verify(bird.canChirp(volume: notNil())).wasCalled() // Called with any non-nil volume -/// verify(bird.canChirp(volume: 10)).wasCalled() // Called with volume = 10 +/// ```swift +/// verify(bird.canChirp(volume: any())).wasCalled() // Called with any volume +/// verify(bird.canChirp(volume: notNil())).wasCalled() // Called with any non-nil volume +/// verify(bird.canChirp(volume: 10)).wasCalled() // Called with volume = 10 +/// ``` /// /// - Parameters: /// - mock: A mocked declaration to verify. @@ -114,15 +122,17 @@ public class VerificationManager { /// Declarations for methods overloaded by return type cannot type inference and should be /// disambiguated. /// - /// protocol Bird { - /// func getMessage() throws -> T // Overloaded generically - /// func getMessage() throws -> String // Overloaded explicitly - /// func getMessage() throws -> Data - /// } + /// ```swift + /// protocol Bird { + /// func getMessage() throws -> T // Overloaded generically + /// func getMessage() throws -> String // Overloaded explicitly + /// func getMessage() throws -> Data + /// } /// - /// verify(bird.send(any())) - /// .returning(String.self) - /// .wasCalled() + /// verify(bird.send(any())) + /// .returning(String.self) + /// .wasCalled() + /// ``` /// /// - Parameter type: The return type of the declaration to verify. public func returning(_ type: ReturnType.Type = ReturnType.self) -> Self { From 850bb734cebfc9752a5a532ab177074ee872e968 Mon Sep 17 00:00:00 2001 From: Andrew Chang Date: Thu, 30 Dec 2021 19:36:11 -1000 Subject: [PATCH 02/20] Remove versioned README --- README-0.19.md | 824 ------------------------------------------------- README.md | 199 +++++++----- 2 files changed, 121 insertions(+), 902 deletions(-) delete mode 100644 README-0.19.md diff --git a/README-0.19.md b/README-0.19.md deleted file mode 100644 index f4149416..00000000 --- a/README-0.19.md +++ /dev/null @@ -1,824 +0,0 @@ -

- Mockingbird - Swift Mocking Framework -

Mockingbird

-

- -

- Package managers - License - Slack channel -

- -Mockingbird lets you mock, stub, and verify objects written in either Swift or Objective-C. The syntax takes inspiration from (OC)Mockito but was designed to be “Swifty” in terms of type safety and expressiveness. - -```swift -// Mocking -let bird = mock(Bird.self) - -// Stubbing -given(bird.name).willReturn("Ryan") - -// Verification -verify(bird.fly()).wasCalled() -``` - -Mockingbird was built to reduce the number of “artisanal” hand-written mocks and make it easier to write tests at Bird. Conceptually, Mockingbird uses codegen to statically mock Swift types and `NSProxy` to dynamically mock Objective-C types. The approach is similar to other automatic Swift mocking frameworks and is unlikely to change due to Swift’s limited runtime introspection capabilities. - -That said, there are a few key differences from other frameworks: - -- Generating mocks takes seconds instead of minutes on large codebases with thousands of mocked types. -- Stubbing and verification failures appear inline and don’t abort the entire test run. -- Production code is kept separate from tests and never modified with annotations. -- Xcode projects can be used as the source of truth to automatically determine source files. - -See a detailed [feature comparison table](https://github.com/birdrides/mockingbird/wiki/Alternatives-to-Mockingbird#feature-comparison) and [known limitations](https://github.com/birdrides/mockingbird/wiki/Known-Limitations). - -### Who Uses Mockingbird? - -Mockingbird powers thousands of tests at companies including [Meta](https://meta.com), [Amazon](https://amazon.com), [Twilio](https://twilio.com), and [Bird](https://bird.co). Using Mockingbird to improve your testing workflow? Consider dropping us a line on the [#mockingbird Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw). - -### An Example - -Let’s say we wanted to test a `Person` class with a method that takes a `Bird`. - -```swift -protocol Bird { - var canFly: Bool { get } - func fly() -} - -class Person { - func release(_ bird: Bird) { - guard bird.canFly else { return } - bird.fly() - } -} -``` - -With Mockingbird, it’s easy to stub return values and verify that mocked methods were called. - -```swift -// Given a bird that can fly -let bird = mock(Bird.self) -given(bird.canFly).willReturn(true) - -// When a person releases the bird -Person().release(bird) - -// Then the bird flies away -verify(bird.fly()).wasCalled() -``` - -## Quick Start - -Select your preferred dependency manager below to get started. - -
CocoaPods - -Add the framework to a test target in your `Podfile`, making sure to include the `use_frameworks!` option. - -```ruby -target 'MyAppTests' do - use_frameworks! - pod 'MockingbirdFramework', '~> 0.19' -end -``` - -In your project directory, initialize the pod. - -```console -$ pod install -``` - -Finally, configure the test target to generate mocks for specific modules or libraries. - -> The configurator adds a build phase to the test target which automatically calls [`mockingbird generate`](#generate). You can pass additional arguments to the generator after the double-dash (`--`) or [manually set up targets](https://github.com/birdrides/mockingbird/wiki/Manual-Setup). - -```console -$ Pods/MockingbirdFramework/mockingbird configure MyAppTests -- --targets MyApp MyLibrary1 MyLibrary2 -``` - -Optional but recommended: - -- [Exclude generated files from source control](https://github.com/birdrides/mockingbird/wiki/Integration-Tips#source-control-exclusion) -- [Add supporting source files for compatibility with external dependencies](https://github.com/birdrides/mockingbird/wiki/Supporting-Source-Files) - -Have questions or issues? - -- [Join the Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) -- [Search the troubleshooting guide](https://github.com/birdrides/mockingbird/wiki/Troubleshooting) -- [Check out the CocoaPods example project](/Examples/CocoaPodsExample) - -
- -
Carthage - -Add the framework to your `Cartfile`. - -``` -github "birdrides/mockingbird" ~> 0.19 -``` - -In your project directory, build the framework and [link it to your test target](https://github.com/birdrides/mockingbird/wiki/Linking-Test-Targets). - -```console -$ carthage update --use-xcframeworks -``` - -Finally, configure the test target to generate mocks for specific modules or libraries. - -> The configurator adds a build phase to the test target which automatically calls [`mockingbird generate`](#generate). You can pass additional arguments to the generator after the double-dash (`--`) or [manually set up targets](https://github.com/birdrides/mockingbird/wiki/Manual-Setup). - -```console -$ Carthage/Checkouts/mockingbird/mockingbird configure MyAppTests -- --targets MyApp MyLibrary1 MyLibrary2 -``` - -Optional but recommended: - -- [Exclude generated files from source control](https://github.com/birdrides/mockingbird/wiki/Integration-Tips#source-control-exclusion) -- [Add supporting source files for compatibility with external dependencies](https://github.com/birdrides/mockingbird/wiki/Supporting-Source-Files) - -Have questions or issues? - -- [Join the Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) -- [Search the troubleshooting guide](https://github.com/birdrides/mockingbird/wiki/Troubleshooting) -- [Check out the Carthage example project](/Examples/CarthageExample) - -
- -
SwiftPM - Xcode Project - -Add the framework to your project: - -1. Navigate to **File › Add Packages…** and enter `https://github.com/birdrides/mockingbird` -2. Change **Dependency Rule** to “Up to Next Minor Version” and enter `0.19.0` -3. Click **Add Package** -4. Select your test target and click **Add Package** - -In your project directory, resolve the derived data path. This can take a few moments. - -```console -$ DERIVED_DATA="$(xcodebuild -showBuildSettings | sed -n 's|.*BUILD_ROOT = \(.*\)/Build/.*|\1|p' -``` - -Finally, configure the test target to generate mocks for specific modules or libraries. - -> The configurator adds a build phase to the test target which automatically calls [`mockingbird generate`](#generate). You can pass additional arguments to the generator after the double-dash (`--`) or [manually set up targets](https://github.com/birdrides/mockingbird/wiki/Manual-Setup). - -```console -$ "${DERIVED_DATA}/SourcePackages/checkouts/mockingbird/mockingbird" configure MyPackageTests -- --targets MyPackage MyLibrary1 MyLibrary2 -``` - -Optional but recommended: - -- [Exclude generated files from source control](https://github.com/birdrides/mockingbird/wiki/Integration-Tips#source-control-exclusion) -- [Add supporting source files for compatibility with external dependencies](https://github.com/birdrides/mockingbird/wiki/Supporting-Source-Files) - -Have questions or issues? - -- [Join the Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) -- [Search the troubleshooting guide](https://github.com/birdrides/mockingbird/wiki/Troubleshooting) -- [Check out the SwiftPM Xcode project example](/Examples/SPMProjectExample) - -
- -
SwiftPM - Package Manifest - -Add Mockingbird as a package and test target dependency in your `Package.swift` manifest. - -```swift -let package = Package( - name: "MyPackage", - dependencies: [ - .package(name: "Mockingbird", url: "https://github.com/birdrides/mockingbird.git", .upToNextMinor(from: "0.19.0")), - ], - targets: [ - .testTarget(name: "MyPackageTests", dependencies: ["Mockingbird"]), - ] -) -``` - -In your package directory, initialize the dependency. - -```console -$ swift package update Mockingbird -``` - -Next, create a Bash script named `gen-mocks.sh` in the same directory as your package manifest. Copy the example below, making sure to change the lines marked with `FIXME`. - -```bash -#!/bin/bash -set -eu -cd "$(dirname "$0")" -swift package describe --type json > project.json -.build/checkouts/mockingbird/mockingbird generate --project project.json \ - --output-dir Sources/MyPackageTests/MockingbirdMocks \ # FIXME: Where mocks should be generated. - --testbundle MyPackageTests \ # FIXME: Name of your test target. - --targets MyPackage MyLibrary1 MyLibrary2 # FIXME: Specific modules or libraries that should be mocked. -``` - -Ensure that the script runs and generates mock files. - -```console -$ chmod u+x gen-mocks.sh -$ ./gen-mocks.sh -Generated file to MockingbirdMocks/MyPackageTests-MyPackage.generated.swift -Generated file to MockingbirdMocks/MyPackageTests-MyLibrary1.generated.swift -Generated file to MockingbirdMocks/MyPackageTests-MyLibrary2.generated.swift -``` - -Finally, add each generated mock file to your test target sources. - -```swift -.testTarget( - name: "MyPackageTests", - dependencies: ["Mockingbird"], - sources: [ - "Tests/MyPackageTests", - "MockingbirdMocks/MyPackageTests-MyPackage.generated.swift", - "MockingbirdMocks/MyPackageTests-MyLibrary1.generated.swift", - "MockingbirdMocks/MyPackageTests-MyLibrary2.generated.swift", - ]), -``` - -Optional but recommended: - -- [Exclude generated files from source control](https://github.com/birdrides/mockingbird/wiki/Integration-Tips#source-control-exclusion) -- [Add supporting source files for compatibility with external dependencies](https://github.com/birdrides/mockingbird/wiki/Supporting-Source-Files) - -Have questions or issues? - -- [Join the Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) -- [Search the troubleshooting guide](https://github.com/birdrides/mockingbird/wiki/Troubleshooting) -- [Check out the SwiftPM package manifest example](/Examples/SPMPackageExample) - -
- -## Usage - -Mockingbird provides a comprehensive [API reference](https://birdrides.github.io/mockingbird/latest/) generated with [SwiftDoc](https://github.com/SwiftDocOrg/swift-doc). - -1. [Mocking](#1-mocking) -2. [Stubbing](#2-stubbing) -3. [Verification](#3-verification) -4. [Argument Matching](#4-argument-matching) -5. [Advanced Topics](#5-advanced-topics) - -### 1. Mocking - -Mocks can be passed as instances of the original type, recording any calls they receive for later verification. Note that mocks are strict by default, meaning that calls to unstubbed non-void methods will trigger a test failure. To create a relaxed or “loose” mock, use a [default value provider](#stub-as-a-relaxed-mock). - -```swift -// Swift types -let protocolMock = mock(MyProtocol.self) -let classMock = mock(MyClass.self).initialize(…) - -// Objective-C types -let protocolMock = mock(MyProtocol.self) -let classMock = mock(MyClass.self) -``` - -#### Mock Swift Classes - -Swift class mocks rely on subclassing the original type which comes with a few [known limitations](https://github.com/birdrides/mockingbird/wiki/Known-Limitations). When creating a Swift class mock, you must initialize the instance by calling `initialize(…)` with appropriate values. - -```swift -class Tree { - init(height: Int) { assert(height > 0) } -} - -let tree = mock(Tree.self).initialize(height: 42) // Initialized -let tree = mock(Tree.self).initialize(height: 0) // Assertion failed (height ≤ 0) -``` - -#### Store Mocks - -Generated Swift mock types are suffixed with `Mock`. Avoid coercing mocks into their original type as stubbing and verification will no longer work. - -```swift -// Good -let bird: BirdMock = mock(Bird.self) // Concrete type is `BirdMock` -let bird = mock(Bird.self) // Inferred type is `BirdMock` - -// Avoid -let bird: Bird = mock(Bird.self) // Type is coerced into `Bird` -``` - -#### Reset Mocks - -You can reset mocks and clear specific metadata during test runs. However, resetting mocks isn’t usually necessary in well-constructed tests. - -```swift -reset(bird) // Reset everything -clearStubs(on: bird) // Only remove stubs -clearInvocations(on: bird) // Only remove recorded invocations -``` - -### 2. Stubbing - -Stubbing allows you to define custom behavior for mocks to perform. - -```swift -given(bird.name).willReturn("Ryan") // Return a value -given(bird.chirp()).willThrow(BirdError()) // Throw an error -given(bird.chirp(volume: any())).will { volume in // Call a closure - return volume < 42 -} -``` - -This is equivalent to the shorthand syntax using the stubbing operator `~>`. - -```swift -given(bird.name) ~> "Ryan" // Return a value -given(bird.chirp()) ~> { throw BirdError() } // Throw an error -given(bird.chirp(volume: any())) ~> { volume in // Call a closure - return volume < 42 -} -``` - -#### Stub Methods with Parameters - -[Match argument values](#4-argument-matching) to stub parameterized methods. Stubs added later have a higher precedence, so add stubs with specific matchers last. - -```swift -given(bird.chirp(volume: any())).willReturn(true) // Any volume -given(bird.chirp(volume: notNil())).willReturn(true) // Any non-nil volume -given(bird.chirp(volume: 10)).willReturn(true) // Volume = 10 -``` - -#### Stub Properties - -Properties can have stubs on both their getters and setters. - -```swift -given(bird.name).willReturn("Ryan") -given(bird.name = any()).will { (name: String) in - print("Hello \(name)") -} - -print(bird.name) // Prints "Ryan" -bird.name = "Sterling" // Prints "Hello Sterling" -``` - -This is equivalent to using the synthesized getter and setter methods. - -```swift -given(bird.getName()).willReturn("Ryan") -given(bird.setName(any())).will { (name: String) in - print("Hello \(name)") -} - -print(bird.name) // Prints "Ryan" -bird.name = "Sterling" // Prints "Hello Sterling" -``` - -Readwrite properties can be stubbed to automatically save and return values. - -```swift -given(bird.name).willReturn(lastSetValue(initial: "")) -print(bird.name) // Prints "" -bird.name = "Ryan" -print(bird.name) // Prints "Ryan" -``` - -#### Stub as a Relaxed Mock - -Use a `ValueProvider` to create a relaxed mock that returns default values for unstubbed methods. Mockingbird provides preset value providers which are guaranteed to be backwards compatible, such as `.standardProvider`. - -```swift -let bird = mock(Bird.self) -bird.useDefaultValues(from: .standardProvider) -print(bird.name) // Prints "" -``` - -You can create custom value providers by registering values for specific types. - -```swift -var valueProvider = ValueProvider() -valueProvider.register("Ryan", for: String.self) -bird.useDefaultValues(from: valueProvider) -print(bird.name) // Prints "Ryan" -``` - -Values from concrete stubs always have a higher precedence than default values. - -```swift -given(bird.name).willReturn("Ryan") -print(bird.name) // Prints "Ryan" - -bird.useDefaultValues(from: .standardProvider) -print(bird.name) // Prints "Ryan" -``` - -Provide wildcard instances for generic types by conforming the base type to `Providable` and registering the type. - -```swift -extension Array: Providable { - public static func createInstance() -> Self? { - return Array() - } -} - -// Provide an empty array for all specialized `Array` types -valueProvider.registerType(Array.self) -``` - -#### Stub as a Partial Mock - -Partial mocks can be created by forwarding all calls to a specific object. Forwarding targets are strongly referenced and receive invocations until removed with `clearStubs`. - -```swift -class Crow: Bird { - let name: String - init(name: String) { self.name = name } -} - -let bird = mock(Bird.self) -bird.forwardCalls(to: Crow(name: "Ryan")) -print(bird.name) // Prints "Ryan" -``` - -Swift class mocks can also forward invocations to its underlying superclass. - -```swift -let tree = mock(Tree.self).initialize(height: 42) -tree.forwardCallsToSuper() -print(tree.height) // Prints "42" -``` - -For more granular stubbing, it’s possible to scope both object and superclass forwarding targets to a specific declaration. - -```swift -given(bird.name).willForward(to: Crow(name: "Ryan")) // Object target -given(tree.height).willForwardToSuper() // Superclass target -``` - -Concrete stubs always have a higher priority than forwarding targets, regardless of the order -they were added. - -```swift -given(bird.name).willReturn("Ryan") -given(bird.name).willForward(to: Crow(name: "Sterling")) -print(bird.name) // Prints "Ryan" -``` - -#### Stub a Sequence of Values - -Methods that return a different value each time can be stubbed with a sequence of values. The last value will be used for all subsequent invocations. - -```swift -given(bird.name).willReturn(sequence(of: "Ryan", "Sterling")) -print(bird.name) // Prints "Ryan" -print(bird.name) // Prints "Sterling" -print(bird.name) // Prints "Sterling" -``` - -It’s also possible to stub a sequence of arbitrary behaviors. - -```swift -given(bird.name) - .willReturn("Ryan") - .willReturn("Sterling") - .will { return Bool.random() ? "Ryan" : "Sterling" } -``` - -### 3. Verification - -Verification lets you assert that a mock received a particular invocation during its lifetime. - -```swift -verify(bird.fly()).wasCalled() -``` - -Verifying doesn’t remove recorded invocations, so it’s safe to call `verify` multiple times. - -```swift -verify(bird.fly()).wasCalled() // If this succeeds... -verify(bird.fly()).wasCalled() // ...this also succeeds -``` - -#### Verify Methods with Parameters - -[Match argument values](#4-argument-matching) to verify methods with parameters. - -```swift -verify(bird.chirp(volume: any())).wasCalled() // Any volume -verify(bird.chirp(volume: notNil())).wasCalled() // Any non-nil volume -verify(bird.chirp(volume: 10)).wasCalled() // Volume = 10 -``` - -#### Verify Properties - -Verify property invocations using their getter and setter methods. - -```swift -verify(bird.name).wasCalled() -verify(bird.name = any()).wasCalled() -``` - -#### Verify the Number of Invocations - -It’s possible to verify that an invocation was called a specific number of times with a count matcher. - -```swift -verify(bird.fly()).wasNeverCalled() // n = 0 -verify(bird.fly()).wasCalled(exactly(10)) // n = 10 -verify(bird.fly()).wasCalled(atLeast(10)) // n ≥ 10 -verify(bird.fly()).wasCalled(atMost(10)) // n ≤ 10 -verify(bird.fly()).wasCalled(between(5...10)) // 5 ≤ n ≤ 10 -``` - -Count matchers also support chaining and negation using logical operators. - -```swift -verify(bird.fly()).wasCalled(not(exactly(10))) // n ≠ 10 -verify(bird.fly()).wasCalled(exactly(10).or(atMost(5))) // n = 10 || n ≤ 5 -``` - -#### Capture Argument Values - -An argument captor extracts received argument values which can be used in other parts of the test. - -```swift -let bird = mock(Bird.self) -bird.name = "Ryan" - -let nameCaptor = ArgumentCaptor() -verify(bird.name = nameCaptor.any()).wasCalled() - -print(nameCaptor.value) // Prints "Ryan" -``` - -#### Verify Invocation Order - -Enforce the relative order of invocations with an `inOrder` verification block. - -```swift -// Verify that `canFly` was called before `fly` -inOrder { - verify(bird.canFly).wasCalled() - verify(bird.fly()).wasCalled() -} -``` - -Pass options to `inOrder` verification blocks for stricter checks with additional invariants. - -```swift -inOrder(with: .noInvocationsAfter) { - verify(bird.canFly).wasCalled() - verify(bird.fly()).wasCalled() -} -``` - -#### Verify Asynchronous Calls - -Mocked methods that are invoked asynchronously can be verified using an `eventually` block which returns an `XCTestExpectation`. - -```swift -DispatchQueue.main.async { - guard bird.canFly else { return } - bird.fly() -} - -let expectation = - eventually { - verify(bird.canFly).wasCalled() - verify(bird.fly()).wasCalled() - } - -wait(for: [expectation], timeout: 1.0) -``` - -#### Verify Overloaded Methods - -Use the `returning` modifier to disambiguate methods overloaded by return type. Methods overloaded by parameter types do not require disambiguation. - -```swift -protocol Bird { - func getMessage() -> T // Overloaded generically - func getMessage() -> String // Overloaded explicitly - func getMessage() -> Data -} - -verify(bird.getMessage()).returning(String.self).wasCalled() -``` - -### 4. Argument Matching - -Argument matching allows you to stub or verify specific invocations of parameterized methods. - -#### Match Exact Values - -Types that explicitly conform to `Equatable` work out of the box, such as `String`. - -```swift -given(bird.chirp(volume: 42)).willReturn(true) -print(bird.chirp(volume: 42)) // Prints "true" -verify(bird.chirp(volume: 42)).wasCalled() // Passes -``` - -Structs able to synthesize `Equatable` conformance must explicitly declare conformance to enable exact argument matching. - -```swift -struct Fruit: Equatable { - let size: Int -} - -bird.eat(Fruit(size: 42)) -verify(bird.eat(Fruit(size: 42))).wasCalled() -``` - -Non-equatable classes are compared by reference instead. - -```swift -class Fruit {} -let fruit = Fruit() - -bird.eat(fruit) -verify(bird.eat(fruit)).wasCalled() -``` - -#### Match Wildcard Values and Non-Equatable Types - -Argument matchers allow for wildcard or custom matching of arguments that are not `Equatable`. - -```swift -any() // Any value -any(of: 1, 2, 3) // Any value in {1, 2, 3} -any(where: { $0 > 42 }) // Any number greater than 42 -notNil() // Any non-nil value -``` - -For methods overloaded by parameter type, you should help the compiler by specifying an explicit type in the matcher. - -```swift -any(Int.self) -any(Int.self, of: 1, 2, 3) -any(Int.self, where: { $0 > 42 }) -notNil(String?.self) -``` - -You can also match elements or keys within collection types. - -```swift -any(containing: 1, 2, 3) // Any collection with values {1, 2, 3} -any(keys: "a", "b", "c") // Any dictionary with keys {"a", "b", "c"} -any(count: atMost(42)) // Any collection with at most 42 elements -notEmpty() // Any non-empty collection -``` - -#### Match Value Types in Objective-C - -You must specify an argument position when matching an Objective-C method with multiple value type parameters. Mockingbird will raise a test failure if the argument position is not inferrable and no explicit position was provided. - -```swift -@objc class Bird: NSObject { - @objc dynamic func chirp(volume: Int, duration: Int) {} -} - -verify(bird.chirp(volume: firstArg(any()), - duration: secondArg(any())).wasCalled() - -// Equivalent verbose syntax -verify(bird.chirp(volume: arg(any(), at: 1), - duration: arg(any(), at: 2)).wasCalled() -``` - -#### Match Floating Point Values - -Mathematical operations on floating point numbers can cause loss of precision. Fuzzily match floating point arguments instead of using exact values to increase the robustness of tests. - -```swift -around(10.0, tolerance: 0.01) -``` - -### 5. Advanced Topics - -#### Excluding Files - -You can exclude unwanted or problematic sources from being mocked by adding a `.mockingbird-ignore` file. Mockingbird follows the same pattern format as [`.gitignore`](https://git-scm.com/docs/gitignore#_pattern_format) and scopes ignore files to their enclosing directory. - -#### Using Supporting Source Files - -Supporting source files are used by the generator to resolve inherited types defined outside of your project. Although Mockingbird provides a preset “starter pack” for basic compatibility with common system frameworks, you will occasionally need to add your own definitions for third-party library types. Please see [Supporting Source Files](https://github.com/birdrides/mockingbird/wiki/Supporting-Source-Files) for more information. - -#### Thunk Pruning - -To improve compilation times for large projects, Mockingbird only generates mocking code (known as thunks) for types used in tests. Unused types can either produce “thunk stubs” or no code at all depending on the pruning level specified. - -| Level | Description | -| --- | --- | -| `disable` | Always generate full thunks regardless of usage in tests. | -| `stub` | Generate partial definitions filled with `fatalError`. | -| `omit` | Don’t generate any definitions for unused types. | - -Usage is determined by statically analyzing test target sources for calls to `mock(SomeType.self)`, which may not work out of the box for projects that indirectly synthesize types such as through Objective-C based dependency injection. - -- **Option 1:** Explicitly reference each indirectly synthesized type in your tests, e.g. `_ = mock(SomeType.self)`. References can be placed anywhere in the test target sources, such as in the `setUp` method of a test case or in a single file. -- **Option 2:** Disable pruning entirely by setting the prune level with `--prune disable`. Note that this may increase compilation times for large projects. - -## Mockingbird CLI - -### Generate - -Generate mocks for a set of targets in a project. - -`mockingbird generate` - -| Option | Default Value | Description | -| --- | --- | --- | -| `-t, --targets` | *(required)* | List of target names to generate mocks for. | -| `-o, --outputs` | [`(inferred)`](#--outputs) | List of output file paths corresponding to each target. | -| `-p, --project` | [`(inferred)`](#--project) | Path to an Xcode project or a [JSON project description](https://github.com/birdrides/mockingbird/wiki/Manual-Setup#generating-mocks-for-non-xcode-projects). | -| `--output-dir` | [`(inferred)`](#--outputs) | The directory where generated files should be output. | -| `--srcroot` | [`(inferred)`](#--srcroot) | The directory containing your project’s source files. | -| `--support` | [`(inferred)`](#--support) | The directory containing [supporting source files](https://github.com/birdrides/mockingbird/wiki/Supporting-Source-Files). | -| `--testbundle` | [`(inferred)`](#--testbundle) | The name of the test bundle using the mocks. | -| `--header` | `(none)` | Content to add at the beginning of each generated mock file. | -| `--condition` | `(none)` | [Compilation condition](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID538) to wrap all generated mocks in, e.g. `DEBUG`. | -| `--diagnostics` | `(none)` | List of [diagnostic generator warnings](https://github.com/birdrides/mockingbird/wiki/Diagnostic-Warnings-and-Errors) to enable. | -| `--prune` | `omit` | The [pruning method](#thunk-pruning) to use on unreferenced types. | - -| Flag | Description | -| --- | --- | -| `--only-protocols` | Only generate mocks for protocols. | -| `--disable-swiftlint` | Disable all SwiftLint rules in generated mocks. | -| `--disable-cache` | Ignore cached mock information stored on disk. | -| `--disable-relaxed-linking` | Only search explicitly imported modules. | - -### Configure - -Configure a test target to generate mocks. - -`mockingbird configure -- ` - -| Argument | Description | -| --- | --- | -| `test-target` | The name of a test target to configure. | -| `generator-options` | Arguments to use when running the generator. See the 'generate' command for all options. | - -| Option | Default Value | Description | -| --- | --- | --- | -| `-p, --project` | [`(inferred)`](#--project) | Path to an Xcode project. | -| `--srcproject` | [`(inferred)`](#--project) | Path to the Xcode project with source modules, if separate from tests. | -| `--generator` | [`(inferred)`](#--generator) | Path to the Mockingbird generator executable. | -| `--url` | [`(inferred)`](#--url) | The base URL hosting downloadable asset bundles. | - -| Flag | Description | -| --- | --- | -| `--preserve-existing` | Keep previously added Mockingbird build phases. | - -### Global Options - -| Flag | Description | -| --- | --- | -| `--verbose` | Log all errors, warnings, and debug messages. | -| `--quiet` | Only log error messages. | -| `--version` | Show the version. | -| `-h, --help` | Show help information. | - -### Default Inferred Values - -#### `--project` - -Mockingbird first checks the environment variable `PROJECT_FILE_PATH` set by the Xcode build context and then performs a shallow search of the current working directory for an `.xcodeproj` file. If multiple `.xcodeproj` files exist then you must explicitly provide a project file path. - -#### `--srcroot` - -Mockingbird checks the environment variables `SRCROOT` and `SOURCE_ROOT` set by the Xcode build context and then falls back to the directory containing the `.xcodeproj` project file. Note that source root is ignored when using JSON project descriptions. - -#### `--outputs` - -Mockingbird generates mocks into the directory `$(SRCROOT)/MockingbirdMocks` with the file name `$(PRODUCT_MODULE_NAME)Mocks-$(TEST_TARGET_NAME).generated.swift`. - -#### `--support` - -Mockingbird recursively looks for [supporting source files](https://github.com/birdrides/mockingbird/wiki/Supporting-Source-Files) in the directory `$(SRCROOT)/MockingbirdSupport`. - -#### `--testbundle` - -Mockingbird checks the environment variables `TARGET_NAME` and `TARGETNAME` set by the Xcode build context and verifies that it refers to a valid Swift unit test target. The test bundle option must be set when using [JSON project descriptions](https://github.com/birdrides/mockingbird/wiki/Manual-Setup#generating-mocks-for-non-xcode-projects) in order to enable thunk stubs. - -### `--generator` - -Mockingbird uses the current executable path and attempts to make it relative to the project’s `SRCROOT` or derived data. To improve portability across development environments, avoid linking executables outside of project-specific directories. - -### `--url` - -Mockingbird uses the GitHub release artifacts located at `https://github.com/birdrides/mockingbird/releases/download`. Note that asset bundles are versioned by release. - -## Additional Resources - -### Example Projects - -- [CocoaPods](/Examples/CocoaPodsExample) -- [Carthage](/Examples/CarthageExample) -- [SwiftPM - Xcode Project](/Examples/SPMProjectExample) -- [SwiftPM - Package Manifest](/Examples/SPMPackageExample) - -### Help and Documentation - -- [API reference](https://birdrides.github.io/mockingbird/latest/) -- [Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) -- [Troubleshooting guide](https://github.com/birdrides/mockingbird/wiki/Troubleshooting) -- [Mockingbird wiki](https://github.com/birdrides/mockingbird/wiki/) diff --git a/README.md b/README.md index 8b867f79..4380bfb3 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@

- Package managers + Package managers License Slack channel

@@ -39,7 +39,7 @@ Mockingbird powers thousands of tests at companies including [Meta](https://meta ### An Example -Let’s say we wanted to test a `Person` class with a function that takes in a `Bird`. +Let’s say we wanted to test a `Person` class with a method that takes a `Bird`. ```swift protocol Bird { @@ -69,7 +69,7 @@ Person().release(bird) verify(bird.fly()).wasCalled() ``` -## Installation +## Quick Start Select your preferred dependency manager below to get started. @@ -80,7 +80,7 @@ Add the framework to a test target in your `Podfile`, making sure to include the ```ruby target 'MyAppTests' do use_frameworks! - pod 'MockingbirdFramework', '~> 0.18' + pod 'MockingbirdFramework', '~> 0.19' end ``` @@ -90,10 +90,12 @@ In your project directory, initialize the pod. $ pod install ``` -Finally, configure a test target to generate mocks for each listed source module. This adds a build phase to the test target which calls [`mockingbird generate`](#generate). For advanced usages, modify the installed build phase or [set up targets manually](https://github.com/birdrides/mockingbird/wiki/Manual-Setup). +Finally, configure the test target to generate mocks for specific modules or libraries. + +> The configurator adds a build phase to the test target which automatically calls [`mockingbird generate`](#generate). You can pass additional arguments to the generator after the double-dash (`--`) or [manually set up targets](https://github.com/birdrides/mockingbird/wiki/Manual-Setup). ```console -$ Pods/MockingbirdFramework/mockingbird install --target MyAppTests --sources MyApp MyLibrary1 MyLibrary2 +$ Pods/MockingbirdFramework/mockingbird configure MyAppTests -- --targets MyApp MyLibrary1 MyLibrary2 ``` Optional but recommended: @@ -105,7 +107,7 @@ Have questions or issues? - [Join the Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) - [Search the troubleshooting guide](https://github.com/birdrides/mockingbird/wiki/Troubleshooting) -- [Check out the CocoaPods example project](/Examples/iOSMockingbirdExample-CocoaPods) +- [Check out the CocoaPods example project](/Examples/CocoaPodsExample) @@ -114,7 +116,7 @@ Have questions or issues? Add the framework to your `Cartfile`. ``` -github "birdrides/mockingbird" ~> 0.18 +github "birdrides/mockingbird" ~> 0.19 ``` In your project directory, build the framework and [link it to your test target](https://github.com/birdrides/mockingbird/wiki/Linking-Test-Targets). @@ -123,10 +125,12 @@ In your project directory, build the framework and [link it to your test target] $ carthage update --use-xcframeworks ``` -Finally, configure a test target to generate mocks for each listed source module. This adds a build phase to the test target which calls [`mockingbird generate`](#generate). For advanced usages, modify the installed build phase or [set up targets manually](https://github.com/birdrides/mockingbird/wiki/Manual-Setup). +Finally, configure the test target to generate mocks for specific modules or libraries. + +> The configurator adds a build phase to the test target which automatically calls [`mockingbird generate`](#generate). You can pass additional arguments to the generator after the double-dash (`--`) or [manually set up targets](https://github.com/birdrides/mockingbird/wiki/Manual-Setup). ```console -$ mockingbird install --target MyAppTests --sources MyApp MyLibrary1 MyLibrary2 +$ Carthage/Checkouts/mockingbird/mockingbird configure MyAppTests -- --targets MyApp MyLibrary1 MyLibrary2 ``` Optional but recommended: @@ -138,11 +142,47 @@ Have questions or issues? - [Join the Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) - [Search the troubleshooting guide](https://github.com/birdrides/mockingbird/wiki/Troubleshooting) -- [Check out the Carthage example project](/Examples/iOSMockingbirdExample-Carthage) +- [Check out the Carthage example project](/Examples/CarthageExample) -
Swift Package Manager +
SwiftPM - Xcode Project + +Add the framework to your project: + +1. Navigate to **File › Add Packages…** and enter `https://github.com/birdrides/mockingbird` +2. Change **Dependency Rule** to “Up to Next Minor Version” and enter `0.19.0` +3. Click **Add Package** +4. Select your test target and click **Add Package** + +In your project directory, resolve the derived data path. This can take a few moments. + +```console +$ DERIVED_DATA="$(xcodebuild -showBuildSettings | sed -n 's|.*BUILD_ROOT = \(.*\)/Build/.*|\1|p' +``` + +Finally, configure the test target to generate mocks for specific modules or libraries. + +> The configurator adds a build phase to the test target which automatically calls [`mockingbird generate`](#generate). You can pass additional arguments to the generator after the double-dash (`--`) or [manually set up targets](https://github.com/birdrides/mockingbird/wiki/Manual-Setup). + +```console +$ "${DERIVED_DATA}/SourcePackages/checkouts/mockingbird/mockingbird" configure MyPackageTests -- --targets MyPackage MyLibrary1 MyLibrary2 +``` + +Optional but recommended: + +- [Exclude generated files from source control](https://github.com/birdrides/mockingbird/wiki/Integration-Tips#source-control-exclusion) +- [Add supporting source files for compatibility with external dependencies](https://github.com/birdrides/mockingbird/wiki/Supporting-Source-Files) + +Have questions or issues? + +- [Join the Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) +- [Search the troubleshooting guide](https://github.com/birdrides/mockingbird/wiki/Troubleshooting) +- [Check out the SwiftPM Xcode project example](/Examples/SPMProjectExample) + +
+ +
SwiftPM - Package Manifest Add Mockingbird as a package and test target dependency in your `Package.swift` manifest. @@ -150,7 +190,7 @@ Add Mockingbird as a package and test target dependency in your `Package.swift` let package = Package( name: "MyPackage", dependencies: [ - .package(name: "Mockingbird", url: "https://github.com/birdrides/mockingbird.git", .upToNextMinor(from: "0.18.0")), + .package(name: "Mockingbird", url: "https://github.com/birdrides/mockingbird.git", .upToNextMinor(from: "0.19.0")), ], targets: [ .testTarget(name: "MyPackageTests", dependencies: ["Mockingbird"]), @@ -158,22 +198,47 @@ let package = Package( ) ``` -In your project directory, initialize the package dependency. - -> Parsing the `DERIVED_DATA` path can take a minute. +In your package directory, initialize the dependency. ```console -$ xcodebuild -resolvePackageDependencies -$ DERIVED_DATA="$(xcodebuild -showBuildSettings | pcregrep -o1 'OBJROOT = (/.*)/Build')" -$ REPO_PATH="${DERIVED_DATA}/SourcePackages/checkouts/mockingbird" +$ swift package update Mockingbird ``` -Finally, configure a test target to generate mocks for each listed source module. This adds a build phase to the test target which calls [`mockingbird generate`](#generate). For advanced usages, modify the installed build phase or [set up targets manually](https://github.com/birdrides/mockingbird/wiki/Manual-Setup). +Next, create a Bash script named `gen-mocks.sh` in the same directory as your package manifest. Copy the example below, making sure to change the lines marked with `FIXME`. -> Not using an Xcode project? Generate mocks from the command line by calling [`mockingbird generate`](#generate). +```bash +#!/bin/bash +set -eu +cd "$(dirname "$0")" +swift package describe --type json > project.json +.build/checkouts/mockingbird/mockingbird generate --project project.json \ + --output-dir Sources/MyPackageTests/MockingbirdMocks \ # FIXME: Where mocks should be generated. + --testbundle MyPackageTests \ # FIXME: Name of your test target. + --targets MyPackage MyLibrary1 MyLibrary2 # FIXME: Specific modules or libraries that should be mocked. +``` + +Ensure that the script runs and generates mock files. ```console -$ "${REPO_PATH}/mockingbird" install --target MyPackageTests --sources MyPackage MyLibrary1 MyLibrary2 +$ chmod u+x gen-mocks.sh +$ ./gen-mocks.sh +Generated file to MockingbirdMocks/MyPackageTests-MyPackage.generated.swift +Generated file to MockingbirdMocks/MyPackageTests-MyLibrary1.generated.swift +Generated file to MockingbirdMocks/MyPackageTests-MyLibrary2.generated.swift +``` + +Finally, add each generated mock file to your test target sources. + +```swift +.testTarget( + name: "MyPackageTests", + dependencies: ["Mockingbird"], + sources: [ + "Tests/MyPackageTests", + "MockingbirdMocks/MyPackageTests-MyPackage.generated.swift", + "MockingbirdMocks/MyPackageTests-MyLibrary1.generated.swift", + "MockingbirdMocks/MyPackageTests-MyLibrary2.generated.swift", + ]), ``` Optional but recommended: @@ -185,7 +250,7 @@ Have questions or issues? - [Join the Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) - [Search the troubleshooting guide](https://github.com/birdrides/mockingbird/wiki/Troubleshooting) -- [Check out the Swift Package Manager example project](/Examples/iOSMockingbirdExample-SPM) +- [Check out the SwiftPM package manifest example](/Examples/SPMPackageExample)
@@ -662,10 +727,11 @@ Generate mocks for a set of targets in a project. | Option | Default Value | Description | | --- | --- | --- | -| `--targets` | *(required)* | List of target names to generate mocks for. | -| `--project` | [`(inferred)`](#--project) | Path to an `.xcodeproj` file or a [JSON project description](https://github.com/birdrides/mockingbird/wiki/Manual-Setup#generating-mocks-for-non-xcode-projects). | +| `-t, --targets` | *(required)* | List of target names to generate mocks for. | +| `-o, --outputs` | [`(inferred)`](#--outputs) | List of output file paths corresponding to each target. | +| `-p, --project` | [`(inferred)`](#--project) | Path to an Xcode project or a [JSON project description](https://github.com/birdrides/mockingbird/wiki/Manual-Setup#generating-mocks-for-non-xcode-projects). | +| `--output-dir` | [`(inferred)`](#--outputs) | The directory where generated files should be output. | | `--srcroot` | [`(inferred)`](#--srcroot) | The directory containing your project’s source files. | -| `--outputs` | [`(inferred)`](#--outputs) | List of mock output file paths for each target. | | `--support` | [`(inferred)`](#--support) | The directory containing [supporting source files](https://github.com/birdrides/mockingbird/wiki/Supporting-Source-Files). | | `--testbundle` | [`(inferred)`](#--testbundle) | The name of the test bundle using the mocks. | | `--header` | `(none)` | Content to add at the beginning of each generated mock file. | @@ -676,65 +742,31 @@ Generate mocks for a set of targets in a project. | Flag | Description | | --- | --- | | `--only-protocols` | Only generate mocks for protocols. | -| `--disable-module-import` | Omit `@testable import ` from generated mocks. | | `--disable-swiftlint` | Disable all SwiftLint rules in generated mocks. | | `--disable-cache` | Ignore cached mock information stored on disk. | | `--disable-relaxed-linking` | Only search explicitly imported modules. | -### Install +### Configure -Configure a test target to use mocks. +Configure a test target to generate mocks. -`mockingbird install` - -| Option | Default Value | Description | -| --- | --- | --- | -| `--target` | *(required)* | The name of a test target to configure. | -| `--sources` | *(required)* | List of target names to generate mocks for. | -| `--project` | [`(inferred)`](#--project) | Path to an `.xcodeproj` file or a [JSON project description](https://github.com/birdrides/mockingbird/wiki/Manual-Setup#generating-mocks-for-non-xcode-projects). | -| `--srcroot` | [`(inferred)`](#--srcroot) | The directory containing your project’s source files. | -| `--outputs` | [`(inferred)`](#--outputs) | List of mock output file paths for each target. | -| `--support` | [`(inferred)`](#--support) | The directory containing [supporting source files](https://github.com/birdrides/mockingbird/wiki/Supporting-Source-Files). | -| `--header` | `(none)` | Content to add at the beginning of each generated mock file. | -| `--condition` | `(none)` | [Compilation condition](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID538) to wrap all generated mocks in, e.g. `DEBUG`. | -| `--diagnostics` | `(none)` | List of [diagnostic generator warnings](https://github.com/birdrides/mockingbird/wiki/Diagnostic-Warnings-and-Errors) to enable. | -| `--loglevel` | `(none)` | The log level to use when generating mocks, `quiet` or `verbose`. | -| `--prune` | `omit` | The [pruning method](#thunk-pruning) to use on unreferenced types. | +`mockingbird configure -- ` -| Flag | Description | +| Argument | Description | | --- | --- | -| `--preserve-existing` | Don’t overwrite previously installed configurations. | -| `--asynchronous` | Generate mocks asynchronously in the background when building. | -| `--only-protocols` | Only generate mocks for protocols. | -| `--disable-swiftlint` | Disable all SwiftLint rules in generated mocks. | -| `--disable-cache` | Ignore cached mock information stored on disk. | -| `--disable-relaxed-linking` | Only search explicitly imported modules. | - -### Uninstall - -Remove Mockingbird from a test target. - -`mockingbird uninstall` +| `test-target` | The name of a test target to configure. | +| `generator-options` | Arguments to use when running the generator. See the 'generate' command for all options. | | Option | Default Value | Description | | --- | --- | --- | -| `--targets` | *(required)* | List of target names to uninstall the Run Script Phase. | -| `--project` | [`(inferred)`](#--project) | Your project’s `.xcodeproj` file. | -| `--srcroot` | [`(inferred)`](#--srcroot) | The directory containing your project’s source files. | +| `-p, --project` | [`(inferred)`](#--project) | Path to an Xcode project. | +| `--srcproject` | [`(inferred)`](#--project) | Path to the Xcode project with source modules, if separate from tests. | +| `--generator` | [`(inferred)`](#--generator) | Path to the Mockingbird generator executable. | +| `--url` | [`(inferred)`](#--url) | The base URL hosting downloadable asset bundles. | -### Download - -Download and unpack a compatible asset bundle. Bundles will never overwrite existing files on disk. - -`mockingbird download ` - -| Asset | Description | +| Flag | Description | | --- | --- | -| `starter-pack` | Starter [supporting source files](https://github.com/birdrides/mockingbird/wiki/Supporting-Source-Files). | - -| Option | Default Value | Description | -| --- | --- | --- | -| `--url` | `https://github.com/birdrides/mockingbird/releases/download` | The base URL containing downloadable asset bundles. | +| `--preserve-existing` | Keep previously added Mockingbird build phases. | ### Global Options @@ -742,8 +774,10 @@ Download and unpack a compatible asset bundle. Bundles will never overwrite exis | --- | --- | | `--verbose` | Log all errors, warnings, and debug messages. | | `--quiet` | Only log error messages. | +| `--version` | Show the version. | +| `-h, --help` | Show help information. | -### Inferred Paths +### Default Inferred Values #### `--project` @@ -755,7 +789,7 @@ Mockingbird checks the environment variables `SRCROOT` and `SOURCE_ROOT` set by #### `--outputs` -By Mockingbird generates mocks into the directory `$(SRCROOT)/MockingbirdMocks` with the file name `$(PRODUCT_MODULE_NAME)Mocks.generated.swift`. +Mockingbird generates mocks into the directory `$(SRCROOT)/MockingbirdMocks` with the file name `$(PRODUCT_MODULE_NAME)Mocks-$(TEST_TARGET_NAME).generated.swift`. #### `--support` @@ -765,13 +799,22 @@ Mockingbird recursively looks for [supporting source files](https://github.com/b Mockingbird checks the environment variables `TARGET_NAME` and `TARGETNAME` set by the Xcode build context and verifies that it refers to a valid Swift unit test target. The test bundle option must be set when using [JSON project descriptions](https://github.com/birdrides/mockingbird/wiki/Manual-Setup#generating-mocks-for-non-xcode-projects) in order to enable thunk stubs. +#### `--generator` + +Mockingbird uses the current executable path and attempts to make it relative to the project’s `SRCROOT` or derived data. To improve portability across development environments, avoid linking executables outside of project-specific directories. + +#### `--url` + +Mockingbird uses the GitHub release artifacts located at `https://github.com/birdrides/mockingbird/releases/download`. Note that asset bundles are versioned by release. + ## Additional Resources -### Examples and Tutorials +### Example Projects -- [CocoaPods tutorial + example project](/Examples/iOSMockingbirdExample-CocoaPods) -- [Carthage tutorial + example project](/Examples/iOSMockingbirdExample-Carthage) -- [Swift Package Manager tutorial + example project](/Examples/iOSMockingbirdExample-SPM) +- [CocoaPods](/Examples/CocoaPodsExample) +- [Carthage](/Examples/CarthageExample) +- [SwiftPM - Xcode Project](/Examples/SPMProjectExample) +- [SwiftPM - Package Manifest](/Examples/SPMPackageExample) ### Help and Documentation From fc729dd7f634263ccd17888dea71ef3c7902a37e Mon Sep 17 00:00:00 2001 From: Andrew Chang Date: Tue, 4 Jan 2022 11:36:11 -1000 Subject: [PATCH 03/20] Remove Swift Doc --- .gitmodules | 3 - docs/0.14.0/ArgumentCaptor-1017688/index.html | 181 --- .../0.14.0/ArgumentMatcher-f013d1a/index.html | 151 -- docs/0.14.0/CountMatcher-4be5ae3/index.html | 262 --- docs/0.14.0/Declaration-f6338ac/index.html | 129 -- .../FunctionDeclaration-2ccea11/index.html | 119 -- .../ImplementationProvider-c664b1e/index.html | 91 -- .../index.html | 91 -- docs/0.14.0/Mock-28ffcc3/index.html | 146 -- docs/0.14.0/MockMetadata-36657c4/index.html | 59 - docs/0.14.0/Mockable-9a5a67c/index.html | 59 - docs/0.14.0/MockingContext-c5faed5/index.html | 59 - .../NonEscapingClosure-e61507c/index.html | 85 - .../index.html | 210 --- .../index.html | 103 -- .../index.html | 103 -- docs/0.14.0/Providable-7bc5aa7/index.html | 105 -- docs/0.14.0/SourceLocation-656fd60/index.html | 59 - docs/0.14.0/StaticMock-882efeb/index.html | 146 -- .../0.14.0/StubbingContext-794fb76/index.html | 59 - .../0.14.0/StubbingManager-761d798/index.html | 238 --- .../index.html | 118 -- .../SubscriptDeclaration-38e94f4/index.html | 132 -- .../index.html | 103 -- .../index.html | 103 -- docs/0.14.0/TestFailer-4ae7a4d/index.html | 109 -- .../index.html | 103 -- docs/0.14.0/ValueProvider-7c6afc8/index.html | 583 ------- .../VariableDeclaration-c075015/index.html | 132 -- .../VerificationManager-94d5cc8/index.html | 174 -- docs/0.14.0/all.css | 1 - docs/0.14.0/any(_:)-da61986/index.html | 103 -- .../any(_:containing:)-0e18f78/index.html | 110 -- .../any(_:containing:)-365e26e/index.html | 127 -- docs/0.14.0/any(_:count:)-860fd11/index.html | 107 -- docs/0.14.0/any(_:keys:)-e7f89d4/index.html | 126 -- docs/0.14.0/any(_:of:)-89cb3ec/index.html | 125 -- docs/0.14.0/any(_:of:)-e376f19/index.html | 111 -- docs/0.14.0/any(_:where:)-ea2d92e/index.html | 118 -- .../around(_:tolerance:)-831b19f/index.html | 94 -- docs/0.14.0/atLeast(_:)-c832002/index.html | 93 -- docs/0.14.0/atMost(_:)-a2b82d3/index.html | 93 -- docs/0.14.0/between(_:)-cfca747/index.html | 92 -- .../index.html | 88 - .../clearInvocations(on:)-4120e8f/index.html | 88 - .../0.14.0/clearStubs(on:)-f985ed7/index.html | 88 - .../eventually(_:_:)-28d4191/index.html | 99 -- docs/0.14.0/exactly(_:)-47abdfc/index.html | 92 -- .../finiteSequence(of:)-9390bb3/index.html | 85 - .../finiteSequence(of:)-ff3ed8b/index.html | 89 -- docs/0.14.0/given(_:)-05dd78f/index.html | 96 -- .../index.html | 117 -- docs/0.14.0/index.html | 677 -------- .../lastSetValue(initial:)-576c55c/index.html | 73 - .../loopingSequence(of:)-8ab9cb4/index.html | 87 - .../loopingSequence(of:)-9da831b/index.html | 90 -- docs/0.14.0/never-9661ceb/index.html | 54 - docs/0.14.0/not(_:)-3f926b2/index.html | 84 - docs/0.14.0/not(_:)-cf99a2a/index.html | 84 - docs/0.14.0/notEmpty(_:)-3cab350/index.html | 101 -- docs/0.14.0/notNil(_:)-42278eb/index.html | 101 -- docs/0.14.0/once-3db83dd/index.html | 54 - docs/0.14.0/reset(_:)-2a0feaf/index.html | 89 -- docs/0.14.0/sequence(of:)-c40bb93/index.html | 89 -- docs/0.14.0/sequence(of:)-d9da3e4/index.html | 85 - .../swizzleTestFailer(_:)-d923326/index.html | 73 - docs/0.14.0/twice-f36cfd6/index.html | 54 - .../index.html | 115 -- .../index.html | 122 -- .../verify(_:file:line:)-a722fba/index.html | 87 - docs/0.15.0/ArgumentCaptor-1017688/index.html | 181 --- .../0.15.0/ArgumentMatcher-f013d1a/index.html | 151 -- docs/0.15.0/CountMatcher-4be5ae3/index.html | 262 --- docs/0.15.0/Declaration-f6338ac/index.html | 129 -- .../FunctionDeclaration-2ccea11/index.html | 119 -- .../ImplementationProvider-c664b1e/index.html | 91 -- .../index.html | 91 -- docs/0.15.0/Mock-28ffcc3/index.html | 146 -- docs/0.15.0/MockMetadata-36657c4/index.html | 59 - docs/0.15.0/Mockable-9a5a67c/index.html | 59 - docs/0.15.0/MockingContext-c5faed5/index.html | 59 - .../NonEscapingClosure-e61507c/index.html | 85 - .../index.html | 210 --- .../index.html | 103 -- .../index.html | 103 -- docs/0.15.0/Providable-7bc5aa7/index.html | 105 -- docs/0.15.0/SourceLocation-656fd60/index.html | 59 - docs/0.15.0/StaticMock-882efeb/index.html | 146 -- .../0.15.0/StubbingContext-794fb76/index.html | 59 - .../0.15.0/StubbingManager-761d798/index.html | 238 --- .../index.html | 118 -- .../SubscriptDeclaration-38e94f4/index.html | 132 -- .../index.html | 72 - .../index.html | 103 -- docs/0.15.0/SwiftSymbol-df7f148/index.html | 181 --- .../SwiftSymbolParseError-99165a5/index.html | 170 -- .../SwiftSymbol_Contents-7f818fc/index.html | 84 - .../SwiftSymbol_Kind-a459168/index.html | 1356 ---------------- .../SymbolPrintOptions-8c5ff04/index.html | 228 --- docs/0.15.0/TestFailer-4ae7a4d/index.html | 109 -- .../index.html | 103 -- docs/0.15.0/ValueProvider-54037ad/index.html | 550 ------- .../VariableDeclaration-c075015/index.html | 132 -- .../VerificationManager-94d5cc8/index.html | 174 -- docs/0.15.0/all.css | 1 - docs/0.15.0/any(_:)-da61986/index.html | 103 -- .../any(_:containing:)-0e18f78/index.html | 110 -- .../any(_:containing:)-365e26e/index.html | 127 -- docs/0.15.0/any(_:count:)-860fd11/index.html | 107 -- docs/0.15.0/any(_:keys:)-e7f89d4/index.html | 126 -- docs/0.15.0/any(_:of:)-89cb3ec/index.html | 125 -- docs/0.15.0/any(_:of:)-e376f19/index.html | 111 -- docs/0.15.0/any(_:where:)-ea2d92e/index.html | 118 -- .../around(_:tolerance:)-831b19f/index.html | 94 -- docs/0.15.0/atLeast(_:)-c832002/index.html | 93 -- docs/0.15.0/atMost(_:)-a2b82d3/index.html | 93 -- docs/0.15.0/between(_:)-cfca747/index.html | 92 -- .../index.html | 88 - .../clearInvocations(on:)-4120e8f/index.html | 88 - .../0.15.0/clearStubs(on:)-f985ed7/index.html | 88 - .../eventually(_:_:)-28d4191/index.html | 99 -- docs/0.15.0/exactly(_:)-47abdfc/index.html | 92 -- .../finiteSequence(of:)-9390bb3/index.html | 85 - .../finiteSequence(of:)-ff3ed8b/index.html | 89 -- docs/0.15.0/given(_:)-05dd78f/index.html | 96 -- .../index.html | 117 -- docs/0.15.0/index.html | 746 --------- .../lastSetValue(initial:)-576c55c/index.html | 73 - .../loopingSequence(of:)-8ab9cb4/index.html | 87 - .../loopingSequence(of:)-9da831b/index.html | 90 -- docs/0.15.0/mock(_:)-b93ee0e/index.html | 94 -- docs/0.15.0/never-9661ceb/index.html | 54 - docs/0.15.0/not(_:)-3f926b2/index.html | 84 - docs/0.15.0/not(_:)-cf99a2a/index.html | 84 - docs/0.15.0/notEmpty(_:)-3cab350/index.html | 101 -- docs/0.15.0/notNil(_:)-42278eb/index.html | 101 -- docs/0.15.0/once-3db83dd/index.html | 54 - .../index.html | 85 - .../index.html | 85 - docs/0.15.0/reset(_:)-2a0feaf/index.html | 89 -- docs/0.15.0/sequence(of:)-c40bb93/index.html | 89 -- docs/0.15.0/sequence(of:)-d9da3e4/index.html | 85 - .../swizzleTestFailer(_:)-d923326/index.html | 73 - docs/0.15.0/twice-f36cfd6/index.html | 54 - .../index.html | 115 -- .../index.html | 122 -- .../verify(_:file:line:)-a722fba/index.html | 87 - docs/0.16.0/ArgumentCaptor-1017688/index.html | 181 --- .../0.16.0/ArgumentMatcher-f013d1a/index.html | 151 -- docs/0.16.0/CountMatcher-4be5ae3/index.html | 262 --- docs/0.16.0/Declaration-f6338ac/index.html | 129 -- .../FunctionDeclaration-2ccea11/index.html | 119 -- .../ImplementationProvider-c664b1e/index.html | 91 -- .../index.html | 91 -- docs/0.16.0/Mock-28ffcc3/index.html | 146 -- docs/0.16.0/MockMetadata-36657c4/index.html | 59 - docs/0.16.0/Mockable-9a5a67c/index.html | 59 - docs/0.16.0/MockingContext-c5faed5/index.html | 59 - .../NonEscapingClosure-e61507c/index.html | 85 - .../index.html | 210 --- .../index.html | 103 -- .../index.html | 103 -- docs/0.16.0/Providable-7bc5aa7/index.html | 105 -- docs/0.16.0/SourceLocation-656fd60/index.html | 59 - docs/0.16.0/StaticMock-882efeb/index.html | 146 -- .../0.16.0/StubbingContext-794fb76/index.html | 59 - .../0.16.0/StubbingManager-761d798/index.html | 238 --- .../index.html | 118 -- .../SubscriptDeclaration-38e94f4/index.html | 132 -- .../index.html | 103 -- .../index.html | 103 -- docs/0.16.0/TestFailer-4ae7a4d/index.html | 109 -- .../index.html | 103 -- docs/0.16.0/ValueProvider-54037ad/index.html | 550 ------- .../VariableDeclaration-c075015/index.html | 132 -- .../VerificationManager-94d5cc8/index.html | 174 -- docs/0.16.0/all.css | 1 - docs/0.16.0/any(_:)-da61986/index.html | 103 -- .../any(_:containing:)-0e18f78/index.html | 110 -- .../any(_:containing:)-365e26e/index.html | 127 -- docs/0.16.0/any(_:count:)-860fd11/index.html | 107 -- docs/0.16.0/any(_:keys:)-e7f89d4/index.html | 126 -- docs/0.16.0/any(_:of:)-89cb3ec/index.html | 125 -- docs/0.16.0/any(_:of:)-e376f19/index.html | 111 -- docs/0.16.0/any(_:where:)-ea2d92e/index.html | 118 -- .../around(_:tolerance:)-831b19f/index.html | 94 -- docs/0.16.0/atLeast(_:)-c832002/index.html | 93 -- docs/0.16.0/atMost(_:)-a2b82d3/index.html | 93 -- docs/0.16.0/between(_:)-cfca747/index.html | 92 -- .../index.html | 88 - .../clearInvocations(on:)-4120e8f/index.html | 88 - .../0.16.0/clearStubs(on:)-f985ed7/index.html | 88 - .../eventually(_:_:)-28d4191/index.html | 99 -- docs/0.16.0/exactly(_:)-47abdfc/index.html | 92 -- .../finiteSequence(of:)-9390bb3/index.html | 85 - .../finiteSequence(of:)-ff3ed8b/index.html | 89 -- docs/0.16.0/given(_:)-05dd78f/index.html | 96 -- .../index.html | 117 -- docs/0.16.0/index.html | 686 -------- .../lastSetValue(initial:)-576c55c/index.html | 73 - .../loopingSequence(of:)-8ab9cb4/index.html | 87 - .../loopingSequence(of:)-9da831b/index.html | 90 -- docs/0.16.0/mock(_:)-b93ee0e/index.html | 94 -- docs/0.16.0/never-9661ceb/index.html | 54 - docs/0.16.0/not(_:)-3f926b2/index.html | 84 - docs/0.16.0/not(_:)-cf99a2a/index.html | 84 - docs/0.16.0/notEmpty(_:)-3cab350/index.html | 101 -- docs/0.16.0/notNil(_:)-42278eb/index.html | 101 -- docs/0.16.0/once-3db83dd/index.html | 54 - docs/0.16.0/reset(_:)-2a0feaf/index.html | 89 -- docs/0.16.0/sequence(of:)-c40bb93/index.html | 89 -- docs/0.16.0/sequence(of:)-d9da3e4/index.html | 85 - .../swizzleTestFailer(_:)-d923326/index.html | 73 - docs/0.16.0/twice-f36cfd6/index.html | 54 - .../index.html | 115 -- .../index.html | 122 -- .../verify(_:file:line:)-a722fba/index.html | 87 - docs/0.17.0/ArgumentCaptor-94fb876/index.html | 196 --- .../0.17.0/ArgumentMatcher-1c43b93/index.html | 166 -- docs/0.17.0/Array/index.html | 60 - docs/0.17.0/CountMatcher-6825dbf/index.html | 274 ---- docs/0.17.0/Declaration-61b39f6/index.html | 146 -- docs/0.17.0/Dictionary/index.html | 60 - .../FunctionDeclaration-9288d96/index.html | 131 -- .../ImplementationProvider-ebb9664/index.html | 95 -- .../index.html | 94 -- docs/0.17.0/Mock-1448bd4/index.html | 232 --- docs/0.17.0/MockMetadata-491926a/index.html | 61 - docs/0.17.0/Mockable-92ced01/index.html | 61 - docs/0.17.0/MockingContext-e8084fb/index.html | 61 - .../NonEscapingClosure-ac8dd96/index.html | 87 - docs/0.17.0/Optional/index.html | 60 - .../index.html | 224 --- .../index.html | 110 -- .../index.html | 110 -- docs/0.17.0/Providable-fd593f8/index.html | 109 -- docs/0.17.0/Set/index.html | 60 - docs/0.17.0/SourceLocation-e12b876/index.html | 61 - docs/0.17.0/StaticMock-a04a7c2/index.html | 161 -- .../0.17.0/StubbingContext-c368434/index.html | 61 - .../0.17.0/StubbingManager-c41b02a/index.html | 252 --- .../index.html | 124 -- .../SubscriptDeclaration-c38cdc6/index.html | 149 -- .../index.html | 110 -- .../index.html | 110 -- docs/0.17.0/TestFailer-f9088cc/index.html | 113 -- .../index.html | 110 -- docs/0.17.0/ValueProvider-242b058/index.html | 593 ------- .../VariableDeclaration-f83ff6c/index.html | 149 -- .../VerificationManager-0d29384/index.html | 184 --- docs/0.17.0/all.css | 1 - docs/0.17.0/any(_:)-57c9fd0/index.html | 105 -- .../any(_:containing:)-095611c/index.html | 130 -- .../any(_:containing:)-44dd020/index.html | 112 -- docs/0.17.0/any(_:count:)-dbbc1fd/index.html | 109 -- docs/0.17.0/any(_:keys:)-8ca4847/index.html | 129 -- docs/0.17.0/any(_:of:)-0eb9154/index.html | 127 -- docs/0.17.0/any(_:of:)-64e400e/index.html | 113 -- docs/0.17.0/any(_:where:)-aeec51b/index.html | 120 -- .../around(_:tolerance:)-00be404/index.html | 96 -- docs/0.17.0/atLeast(_:)-898a2b0/index.html | 95 -- docs/0.17.0/atMost(_:)-3e1c32b/index.html | 95 -- docs/0.17.0/between(_:)-d57ee49/index.html | 94 -- .../index.html | 90 -- .../clearInvocations(on:)-c035ab0/index.html | 90 -- .../0.17.0/clearStubs(on:)-733a109/index.html | 90 -- .../eventually(_:_:)-4bc028a/index.html | 102 -- docs/0.17.0/exactly(_:)-c366d42/index.html | 94 -- .../finiteSequence(of:)-4225436/index.html | 93 -- .../finiteSequence(of:)-b90973c/index.html | 89 -- docs/0.17.0/given(_:)-8e1ce81/index.html | 100 -- .../index.html | 121 -- docs/0.17.0/index.html | 721 --------- .../lastSetValue(initial:)-d6a1a47/index.html | 77 - .../loopingSequence(of:)-8c11ab6/index.html | 91 -- .../loopingSequence(of:)-cc3f2b3/index.html | 94 -- docs/0.17.0/mock(_:)-40a8117/index.html | 97 -- docs/0.17.0/never-657a74c/index.html | 56 - docs/0.17.0/not(_:)-12c53a2/index.html | 86 - docs/0.17.0/not(_:)-90155c4/index.html | 86 - docs/0.17.0/notEmpty(_:)-42ce3f8/index.html | 103 -- docs/0.17.0/notNil(_:)-4da033f/index.html | 103 -- docs/0.17.0/once-dc7031f/index.html | 56 - docs/0.17.0/reset(_:)-5654439/index.html | 91 -- docs/0.17.0/sequence(of:)-8b3c523/index.html | 89 -- docs/0.17.0/sequence(of:)-af09516/index.html | 93 -- .../swizzleTestFailer(_:)-8147916/index.html | 75 - docs/0.17.0/twice-b13bfea/index.html | 56 - .../index.html | 117 -- .../index.html | 124 -- .../verify(_:file:line:)-a5a6b2f/index.html | 92 -- docs/0.18.0/AnyDeclaration-762b5df/index.html | 110 -- docs/0.18.0/ArgumentCaptor-94fb876/index.html | 225 --- .../0.18.0/ArgumentMatcher-e2bb17a/index.html | 171 -- docs/0.18.0/Array/index.html | 60 - docs/0.18.0/Context-67f9dcd/index.html | 156 -- docs/0.18.0/CountMatcher-6825dbf/index.html | 274 ---- docs/0.18.0/Declaration-61b39f6/index.html | 164 -- docs/0.18.0/Dictionary/index.html | 60 - .../DynamicStubbingManager-824a4fd/index.html | 1226 -------------- docs/0.18.0/ErrorBox-1b2dcf7/index.html | 144 -- .../ForwardingContext-feff474/index.html | 61 - .../FunctionDeclaration-9288d96/index.html | 131 -- .../ImplementationProvider-ebb9664/index.html | 95 -- .../InvocationRecorder-7d70b12/index.html | 154 -- .../index.html | 138 -- docs/0.18.0/Mock-ad39d03/index.html | 337 ---- docs/0.18.0/MockMetadata-491926a/index.html | 61 - docs/0.18.0/Mockable-92ced01/index.html | 61 - docs/0.18.0/MockingContext-c31b095/index.html | 121 -- docs/0.18.0/NSObjectProtocol/index.html | 245 --- .../NonEscapingClosure-ac8dd96/index.html | 87 - docs/0.18.0/ObjCErrorBox-ece9985/index.html | 121 -- docs/0.18.0/ObjCInvocation-9ef7ffe/index.html | 144 -- docs/0.18.0/Optional/index.html | 60 - .../index.html | 224 --- .../index.html | 110 -- .../index.html | 110 -- docs/0.18.0/Providable-fd593f8/index.html | 109 -- docs/0.18.0/ProxyContext-67feefc/index.html | 120 -- docs/0.18.0/SelectorType-d2b8230/index.html | 173 -- docs/0.18.0/Set/index.html | 60 - docs/0.18.0/SourceLocation-e12b876/index.html | 61 - docs/0.18.0/StaticMock-a04a7c2/index.html | 125 -- .../StaticStubbingManager-5a4489d/index.html | 106 -- .../0.18.0/StubbingContext-d729e61/index.html | 204 --- .../0.18.0/StubbingManager-c41b02a/index.html | 393 ----- .../index.html | 124 -- .../SubscriptDeclaration-c38cdc6/index.html | 149 -- .../index.html | 110 -- .../index.html | 110 -- docs/0.18.0/SwiftErrorBox-a9850af/index.html | 121 -- docs/0.18.0/TestFailer-f9088cc/index.html | 113 -- .../index.html | 110 -- docs/0.18.0/ValueProvider-242b058/index.html | 559 ------- .../VariableDeclaration-f83ff6c/index.html | 149 -- .../VerificationManager-4f75443/index.html | 184 --- docs/0.18.0/all.css | 1 - docs/0.18.0/any(_:)-04561d1/index.html | 106 -- docs/0.18.0/any(_:)-57c9fd0/index.html | 100 -- .../any(_:containing:)-095611c/index.html | 130 -- .../any(_:containing:)-44dd020/index.html | 112 -- docs/0.18.0/any(_:count:)-dbbc1fd/index.html | 109 -- docs/0.18.0/any(_:keys:)-8ca4847/index.html | 129 -- docs/0.18.0/any(_:of:)-0eb9154/index.html | 127 -- docs/0.18.0/any(_:of:)-64e400e/index.html | 113 -- docs/0.18.0/any(_:where:)-aeec51b/index.html | 120 -- docs/0.18.0/any(_:where:)-faad7a5/index.html | 122 -- docs/0.18.0/arg(_:at:)-e5b4d4c/index.html | 108 -- .../around(_:tolerance:)-00be404/index.html | 96 -- docs/0.18.0/atLeast(_:)-898a2b0/index.html | 95 -- docs/0.18.0/atMost(_:)-3e1c32b/index.html | 95 -- docs/0.18.0/between(_:)-d57ee49/index.html | 94 -- .../index.html | 90 -- .../clearInvocations(on:)-3b83feb/index.html | 90 -- .../clearInvocations(on:)-c035ab0/index.html | 90 -- .../0.18.0/clearStubs(on:)-343b2f1/index.html | 89 -- .../0.18.0/clearStubs(on:)-733a109/index.html | 89 -- .../eventually(_:_:)-4bc028a/index.html | 102 -- docs/0.18.0/exactly(_:)-c366d42/index.html | 94 -- docs/0.18.0/fifthArg(_:)-b65d250/index.html | 102 -- .../finiteSequence(of:)-4225436/index.html | 93 -- .../finiteSequence(of:)-b90973c/index.html | 89 -- docs/0.18.0/firstArg(_:)-ca2e527/index.html | 102 -- docs/0.18.0/forward(to:)-28668e8/index.html | 115 -- .../forwardToSuper()-5c5eb13/index.html | 89 -- docs/0.18.0/fourthArg(_:)-17b6638/index.html | 102 -- docs/0.18.0/given(_:)-8aeefd4/index.html | 120 -- docs/0.18.0/given(_:)-a96595c/index.html | 105 -- .../index.html | 121 -- docs/0.18.0/index.html | 968 ----------- .../lastSetValue(initial:)-d6a1a47/index.html | 87 - .../loopingSequence(of:)-8c11ab6/index.html | 91 -- .../loopingSequence(of:)-cc3f2b3/index.html | 94 -- docs/0.18.0/mock(_:)-40a8117/index.html | 97 -- docs/0.18.0/mock(_:)-b58cf6a/index.html | 104 -- docs/0.18.0/never-657a74c/index.html | 56 - docs/0.18.0/not(_:)-12c53a2/index.html | 86 - docs/0.18.0/not(_:)-90155c4/index.html | 86 - docs/0.18.0/notEmpty(_:)-42ce3f8/index.html | 103 -- docs/0.18.0/notNil(_:)-4c25f3f/index.html | 105 -- docs/0.18.0/notNil(_:)-4da033f/index.html | 103 -- docs/0.18.0/once-dc7031f/index.html | 56 - docs/0.18.0/reset(_:)-5654439/index.html | 91 -- docs/0.18.0/reset(_:)-76ccf89/index.html | 91 -- docs/0.18.0/secondArg(_:)-39c95e2/index.html | 102 -- docs/0.18.0/sequence(of:)-8b3c523/index.html | 89 -- docs/0.18.0/sequence(of:)-af09516/index.html | 93 -- .../swizzleTestFailer(_:)-8147916/index.html | 75 - docs/0.18.0/thirdArg(_:)-4eaa586/index.html | 102 -- docs/0.18.0/twice-b13bfea/index.html | 56 - .../verify(_:file:line:)-023a535/index.html | 92 -- .../verify(_:file:line:)-a5a6b2f/index.html | 92 -- docs/0.18.0/~>-561b2ad/index.html | 1420 ----------------- docs/Mockingbird.docc/Info.plist | 14 + docs/images/mockingbird-hero-image.png | Bin 57444 -> 0 bytes docs/index.html | 1 - docs/latest/index.html | 1 - docs/swift-doc | 1 - 399 files changed, 14 insertions(+), 51867 deletions(-) delete mode 100644 .gitmodules delete mode 100755 docs/0.14.0/ArgumentCaptor-1017688/index.html delete mode 100755 docs/0.14.0/ArgumentMatcher-f013d1a/index.html delete mode 100755 docs/0.14.0/CountMatcher-4be5ae3/index.html delete mode 100755 docs/0.14.0/Declaration-f6338ac/index.html delete mode 100755 docs/0.14.0/FunctionDeclaration-2ccea11/index.html delete mode 100755 docs/0.14.0/ImplementationProvider-c664b1e/index.html delete mode 100755 docs/0.14.0/MKBFail(_:isFatal:file:line:)-c41bd8d/index.html delete mode 100755 docs/0.14.0/Mock-28ffcc3/index.html delete mode 100755 docs/0.14.0/MockMetadata-36657c4/index.html delete mode 100755 docs/0.14.0/Mockable-9a5a67c/index.html delete mode 100755 docs/0.14.0/MockingContext-c5faed5/index.html delete mode 100755 docs/0.14.0/NonEscapingClosure-e61507c/index.html delete mode 100755 docs/0.14.0/OrderedVerificationOptions-77823cc/index.html delete mode 100755 docs/0.14.0/PropertyGetterDeclaration-db9ea0d/index.html delete mode 100755 docs/0.14.0/PropertySetterDeclaration-7cfb3cc/index.html delete mode 100755 docs/0.14.0/Providable-7bc5aa7/index.html delete mode 100755 docs/0.14.0/SourceLocation-656fd60/index.html delete mode 100755 docs/0.14.0/StaticMock-882efeb/index.html delete mode 100755 docs/0.14.0/StubbingContext-794fb76/index.html delete mode 100755 docs/0.14.0/StubbingManager-761d798/index.html delete mode 100755 docs/0.14.0/StubbingManager_TransitionStrategy-9f44b8f/index.html delete mode 100755 docs/0.14.0/SubscriptDeclaration-38e94f4/index.html delete mode 100755 docs/0.14.0/SubscriptGetterDeclaration-2324199/index.html delete mode 100755 docs/0.14.0/SubscriptSetterDeclaration-a66f358/index.html delete mode 100755 docs/0.14.0/TestFailer-4ae7a4d/index.html delete mode 100755 docs/0.14.0/ThrowingFunctionDeclaration-9b512dc/index.html delete mode 100755 docs/0.14.0/ValueProvider-7c6afc8/index.html delete mode 100755 docs/0.14.0/VariableDeclaration-c075015/index.html delete mode 100755 docs/0.14.0/VerificationManager-94d5cc8/index.html delete mode 100755 docs/0.14.0/all.css delete mode 100755 docs/0.14.0/any(_:)-da61986/index.html delete mode 100755 docs/0.14.0/any(_:containing:)-0e18f78/index.html delete mode 100755 docs/0.14.0/any(_:containing:)-365e26e/index.html delete mode 100755 docs/0.14.0/any(_:count:)-860fd11/index.html delete mode 100755 docs/0.14.0/any(_:keys:)-e7f89d4/index.html delete mode 100755 docs/0.14.0/any(_:of:)-89cb3ec/index.html delete mode 100755 docs/0.14.0/any(_:of:)-e376f19/index.html delete mode 100755 docs/0.14.0/any(_:where:)-ea2d92e/index.html delete mode 100755 docs/0.14.0/around(_:tolerance:)-831b19f/index.html delete mode 100755 docs/0.14.0/atLeast(_:)-c832002/index.html delete mode 100755 docs/0.14.0/atMost(_:)-a2b82d3/index.html delete mode 100755 docs/0.14.0/between(_:)-cfca747/index.html delete mode 100755 docs/0.14.0/clearDefaultValues(on:)-112773d/index.html delete mode 100755 docs/0.14.0/clearInvocations(on:)-4120e8f/index.html delete mode 100755 docs/0.14.0/clearStubs(on:)-f985ed7/index.html delete mode 100755 docs/0.14.0/eventually(_:_:)-28d4191/index.html delete mode 100755 docs/0.14.0/exactly(_:)-47abdfc/index.html delete mode 100755 docs/0.14.0/finiteSequence(of:)-9390bb3/index.html delete mode 100755 docs/0.14.0/finiteSequence(of:)-ff3ed8b/index.html delete mode 100755 docs/0.14.0/given(_:)-05dd78f/index.html delete mode 100755 docs/0.14.0/inOrder(with:file:line:_:)-3c038cb/index.html delete mode 100755 docs/0.14.0/index.html delete mode 100755 docs/0.14.0/lastSetValue(initial:)-576c55c/index.html delete mode 100755 docs/0.14.0/loopingSequence(of:)-8ab9cb4/index.html delete mode 100755 docs/0.14.0/loopingSequence(of:)-9da831b/index.html delete mode 100755 docs/0.14.0/never-9661ceb/index.html delete mode 100755 docs/0.14.0/not(_:)-3f926b2/index.html delete mode 100755 docs/0.14.0/not(_:)-cf99a2a/index.html delete mode 100755 docs/0.14.0/notEmpty(_:)-3cab350/index.html delete mode 100755 docs/0.14.0/notNil(_:)-42278eb/index.html delete mode 100755 docs/0.14.0/once-3db83dd/index.html delete mode 100755 docs/0.14.0/reset(_:)-2a0feaf/index.html delete mode 100755 docs/0.14.0/sequence(of:)-c40bb93/index.html delete mode 100755 docs/0.14.0/sequence(of:)-d9da3e4/index.html delete mode 100755 docs/0.14.0/swizzleTestFailer(_:)-d923326/index.html delete mode 100755 docs/0.14.0/twice-f36cfd6/index.html delete mode 100755 docs/0.14.0/useDefaultValues(from:on:)-5df93fa/index.html delete mode 100755 docs/0.14.0/useDefaultValues(from:on:)-7eb6cc5/index.html delete mode 100755 docs/0.14.0/verify(_:file:line:)-a722fba/index.html delete mode 100755 docs/0.15.0/ArgumentCaptor-1017688/index.html delete mode 100755 docs/0.15.0/ArgumentMatcher-f013d1a/index.html delete mode 100755 docs/0.15.0/CountMatcher-4be5ae3/index.html delete mode 100755 docs/0.15.0/Declaration-f6338ac/index.html delete mode 100755 docs/0.15.0/FunctionDeclaration-2ccea11/index.html delete mode 100755 docs/0.15.0/ImplementationProvider-c664b1e/index.html delete mode 100755 docs/0.15.0/MKBFail(_:isFatal:file:line:)-c41bd8d/index.html delete mode 100755 docs/0.15.0/Mock-28ffcc3/index.html delete mode 100755 docs/0.15.0/MockMetadata-36657c4/index.html delete mode 100755 docs/0.15.0/Mockable-9a5a67c/index.html delete mode 100755 docs/0.15.0/MockingContext-c5faed5/index.html delete mode 100755 docs/0.15.0/NonEscapingClosure-e61507c/index.html delete mode 100755 docs/0.15.0/OrderedVerificationOptions-77823cc/index.html delete mode 100755 docs/0.15.0/PropertyGetterDeclaration-db9ea0d/index.html delete mode 100755 docs/0.15.0/PropertySetterDeclaration-7cfb3cc/index.html delete mode 100755 docs/0.15.0/Providable-7bc5aa7/index.html delete mode 100755 docs/0.15.0/SourceLocation-656fd60/index.html delete mode 100755 docs/0.15.0/StaticMock-882efeb/index.html delete mode 100755 docs/0.15.0/StubbingContext-794fb76/index.html delete mode 100755 docs/0.15.0/StubbingManager-761d798/index.html delete mode 100755 docs/0.15.0/StubbingManager_TransitionStrategy-9f44b8f/index.html delete mode 100755 docs/0.15.0/SubscriptDeclaration-38e94f4/index.html delete mode 100755 docs/0.15.0/SubscriptGetterDeclaration-2324199/index.html delete mode 100755 docs/0.15.0/SubscriptSetterDeclaration-a66f358/index.html delete mode 100755 docs/0.15.0/SwiftSymbol-df7f148/index.html delete mode 100755 docs/0.15.0/SwiftSymbolParseError-99165a5/index.html delete mode 100755 docs/0.15.0/SwiftSymbol_Contents-7f818fc/index.html delete mode 100755 docs/0.15.0/SwiftSymbol_Kind-a459168/index.html delete mode 100755 docs/0.15.0/SymbolPrintOptions-8c5ff04/index.html delete mode 100755 docs/0.15.0/TestFailer-4ae7a4d/index.html delete mode 100755 docs/0.15.0/ThrowingFunctionDeclaration-9b512dc/index.html delete mode 100755 docs/0.15.0/ValueProvider-54037ad/index.html delete mode 100755 docs/0.15.0/VariableDeclaration-c075015/index.html delete mode 100755 docs/0.15.0/VerificationManager-94d5cc8/index.html delete mode 100755 docs/0.15.0/all.css delete mode 100755 docs/0.15.0/any(_:)-da61986/index.html delete mode 100755 docs/0.15.0/any(_:containing:)-0e18f78/index.html delete mode 100755 docs/0.15.0/any(_:containing:)-365e26e/index.html delete mode 100755 docs/0.15.0/any(_:count:)-860fd11/index.html delete mode 100755 docs/0.15.0/any(_:keys:)-e7f89d4/index.html delete mode 100755 docs/0.15.0/any(_:of:)-89cb3ec/index.html delete mode 100755 docs/0.15.0/any(_:of:)-e376f19/index.html delete mode 100755 docs/0.15.0/any(_:where:)-ea2d92e/index.html delete mode 100755 docs/0.15.0/around(_:tolerance:)-831b19f/index.html delete mode 100755 docs/0.15.0/atLeast(_:)-c832002/index.html delete mode 100755 docs/0.15.0/atMost(_:)-a2b82d3/index.html delete mode 100755 docs/0.15.0/between(_:)-cfca747/index.html delete mode 100755 docs/0.15.0/clearDefaultValues(on:)-112773d/index.html delete mode 100755 docs/0.15.0/clearInvocations(on:)-4120e8f/index.html delete mode 100755 docs/0.15.0/clearStubs(on:)-f985ed7/index.html delete mode 100755 docs/0.15.0/eventually(_:_:)-28d4191/index.html delete mode 100755 docs/0.15.0/exactly(_:)-47abdfc/index.html delete mode 100755 docs/0.15.0/finiteSequence(of:)-9390bb3/index.html delete mode 100755 docs/0.15.0/finiteSequence(of:)-ff3ed8b/index.html delete mode 100755 docs/0.15.0/given(_:)-05dd78f/index.html delete mode 100755 docs/0.15.0/inOrder(with:file:line:_:)-3c038cb/index.html delete mode 100755 docs/0.15.0/index.html delete mode 100755 docs/0.15.0/lastSetValue(initial:)-576c55c/index.html delete mode 100755 docs/0.15.0/loopingSequence(of:)-8ab9cb4/index.html delete mode 100755 docs/0.15.0/loopingSequence(of:)-9da831b/index.html delete mode 100755 docs/0.15.0/mock(_:)-b93ee0e/index.html delete mode 100755 docs/0.15.0/never-9661ceb/index.html delete mode 100755 docs/0.15.0/not(_:)-3f926b2/index.html delete mode 100755 docs/0.15.0/not(_:)-cf99a2a/index.html delete mode 100755 docs/0.15.0/notEmpty(_:)-3cab350/index.html delete mode 100755 docs/0.15.0/notNil(_:)-42278eb/index.html delete mode 100755 docs/0.15.0/once-3db83dd/index.html delete mode 100755 docs/0.15.0/parseMangledSwiftSymbol(_:isType:)-3be6b73/index.html delete mode 100755 docs/0.15.0/parseMangledSwiftSymbol(_:isType:symbolicReferenceResolver:)-111617a/index.html delete mode 100755 docs/0.15.0/reset(_:)-2a0feaf/index.html delete mode 100755 docs/0.15.0/sequence(of:)-c40bb93/index.html delete mode 100755 docs/0.15.0/sequence(of:)-d9da3e4/index.html delete mode 100755 docs/0.15.0/swizzleTestFailer(_:)-d923326/index.html delete mode 100755 docs/0.15.0/twice-f36cfd6/index.html delete mode 100755 docs/0.15.0/useDefaultValues(from:on:)-5df93fa/index.html delete mode 100755 docs/0.15.0/useDefaultValues(from:on:)-7eb6cc5/index.html delete mode 100755 docs/0.15.0/verify(_:file:line:)-a722fba/index.html delete mode 100755 docs/0.16.0/ArgumentCaptor-1017688/index.html delete mode 100755 docs/0.16.0/ArgumentMatcher-f013d1a/index.html delete mode 100755 docs/0.16.0/CountMatcher-4be5ae3/index.html delete mode 100755 docs/0.16.0/Declaration-f6338ac/index.html delete mode 100755 docs/0.16.0/FunctionDeclaration-2ccea11/index.html delete mode 100755 docs/0.16.0/ImplementationProvider-c664b1e/index.html delete mode 100755 docs/0.16.0/MKBFail(_:isFatal:file:line:)-c41bd8d/index.html delete mode 100755 docs/0.16.0/Mock-28ffcc3/index.html delete mode 100755 docs/0.16.0/MockMetadata-36657c4/index.html delete mode 100755 docs/0.16.0/Mockable-9a5a67c/index.html delete mode 100755 docs/0.16.0/MockingContext-c5faed5/index.html delete mode 100755 docs/0.16.0/NonEscapingClosure-e61507c/index.html delete mode 100755 docs/0.16.0/OrderedVerificationOptions-77823cc/index.html delete mode 100755 docs/0.16.0/PropertyGetterDeclaration-db9ea0d/index.html delete mode 100755 docs/0.16.0/PropertySetterDeclaration-7cfb3cc/index.html delete mode 100755 docs/0.16.0/Providable-7bc5aa7/index.html delete mode 100755 docs/0.16.0/SourceLocation-656fd60/index.html delete mode 100755 docs/0.16.0/StaticMock-882efeb/index.html delete mode 100755 docs/0.16.0/StubbingContext-794fb76/index.html delete mode 100755 docs/0.16.0/StubbingManager-761d798/index.html delete mode 100755 docs/0.16.0/StubbingManager_TransitionStrategy-9f44b8f/index.html delete mode 100755 docs/0.16.0/SubscriptDeclaration-38e94f4/index.html delete mode 100755 docs/0.16.0/SubscriptGetterDeclaration-2324199/index.html delete mode 100755 docs/0.16.0/SubscriptSetterDeclaration-a66f358/index.html delete mode 100755 docs/0.16.0/TestFailer-4ae7a4d/index.html delete mode 100755 docs/0.16.0/ThrowingFunctionDeclaration-9b512dc/index.html delete mode 100755 docs/0.16.0/ValueProvider-54037ad/index.html delete mode 100755 docs/0.16.0/VariableDeclaration-c075015/index.html delete mode 100755 docs/0.16.0/VerificationManager-94d5cc8/index.html delete mode 100755 docs/0.16.0/all.css delete mode 100755 docs/0.16.0/any(_:)-da61986/index.html delete mode 100755 docs/0.16.0/any(_:containing:)-0e18f78/index.html delete mode 100755 docs/0.16.0/any(_:containing:)-365e26e/index.html delete mode 100755 docs/0.16.0/any(_:count:)-860fd11/index.html delete mode 100755 docs/0.16.0/any(_:keys:)-e7f89d4/index.html delete mode 100755 docs/0.16.0/any(_:of:)-89cb3ec/index.html delete mode 100755 docs/0.16.0/any(_:of:)-e376f19/index.html delete mode 100755 docs/0.16.0/any(_:where:)-ea2d92e/index.html delete mode 100755 docs/0.16.0/around(_:tolerance:)-831b19f/index.html delete mode 100755 docs/0.16.0/atLeast(_:)-c832002/index.html delete mode 100755 docs/0.16.0/atMost(_:)-a2b82d3/index.html delete mode 100755 docs/0.16.0/between(_:)-cfca747/index.html delete mode 100755 docs/0.16.0/clearDefaultValues(on:)-112773d/index.html delete mode 100755 docs/0.16.0/clearInvocations(on:)-4120e8f/index.html delete mode 100755 docs/0.16.0/clearStubs(on:)-f985ed7/index.html delete mode 100755 docs/0.16.0/eventually(_:_:)-28d4191/index.html delete mode 100755 docs/0.16.0/exactly(_:)-47abdfc/index.html delete mode 100755 docs/0.16.0/finiteSequence(of:)-9390bb3/index.html delete mode 100755 docs/0.16.0/finiteSequence(of:)-ff3ed8b/index.html delete mode 100755 docs/0.16.0/given(_:)-05dd78f/index.html delete mode 100755 docs/0.16.0/inOrder(with:file:line:_:)-3c038cb/index.html delete mode 100755 docs/0.16.0/index.html delete mode 100755 docs/0.16.0/lastSetValue(initial:)-576c55c/index.html delete mode 100755 docs/0.16.0/loopingSequence(of:)-8ab9cb4/index.html delete mode 100755 docs/0.16.0/loopingSequence(of:)-9da831b/index.html delete mode 100755 docs/0.16.0/mock(_:)-b93ee0e/index.html delete mode 100755 docs/0.16.0/never-9661ceb/index.html delete mode 100755 docs/0.16.0/not(_:)-3f926b2/index.html delete mode 100755 docs/0.16.0/not(_:)-cf99a2a/index.html delete mode 100755 docs/0.16.0/notEmpty(_:)-3cab350/index.html delete mode 100755 docs/0.16.0/notNil(_:)-42278eb/index.html delete mode 100755 docs/0.16.0/once-3db83dd/index.html delete mode 100755 docs/0.16.0/reset(_:)-2a0feaf/index.html delete mode 100755 docs/0.16.0/sequence(of:)-c40bb93/index.html delete mode 100755 docs/0.16.0/sequence(of:)-d9da3e4/index.html delete mode 100755 docs/0.16.0/swizzleTestFailer(_:)-d923326/index.html delete mode 100755 docs/0.16.0/twice-f36cfd6/index.html delete mode 100755 docs/0.16.0/useDefaultValues(from:on:)-5df93fa/index.html delete mode 100755 docs/0.16.0/useDefaultValues(from:on:)-7eb6cc5/index.html delete mode 100755 docs/0.16.0/verify(_:file:line:)-a722fba/index.html delete mode 100644 docs/0.17.0/ArgumentCaptor-94fb876/index.html delete mode 100644 docs/0.17.0/ArgumentMatcher-1c43b93/index.html delete mode 100644 docs/0.17.0/Array/index.html delete mode 100644 docs/0.17.0/CountMatcher-6825dbf/index.html delete mode 100644 docs/0.17.0/Declaration-61b39f6/index.html delete mode 100644 docs/0.17.0/Dictionary/index.html delete mode 100644 docs/0.17.0/FunctionDeclaration-9288d96/index.html delete mode 100644 docs/0.17.0/ImplementationProvider-ebb9664/index.html delete mode 100644 docs/0.17.0/MKBFail(_:isFatal:file:line:)-edcfdf0/index.html delete mode 100644 docs/0.17.0/Mock-1448bd4/index.html delete mode 100644 docs/0.17.0/MockMetadata-491926a/index.html delete mode 100644 docs/0.17.0/Mockable-92ced01/index.html delete mode 100644 docs/0.17.0/MockingContext-e8084fb/index.html delete mode 100644 docs/0.17.0/NonEscapingClosure-ac8dd96/index.html delete mode 100644 docs/0.17.0/Optional/index.html delete mode 100644 docs/0.17.0/OrderedVerificationOptions-2ad9275/index.html delete mode 100644 docs/0.17.0/PropertyGetterDeclaration-8ac0b54/index.html delete mode 100644 docs/0.17.0/PropertySetterDeclaration-1a29109/index.html delete mode 100644 docs/0.17.0/Providable-fd593f8/index.html delete mode 100644 docs/0.17.0/Set/index.html delete mode 100644 docs/0.17.0/SourceLocation-e12b876/index.html delete mode 100644 docs/0.17.0/StaticMock-a04a7c2/index.html delete mode 100644 docs/0.17.0/StubbingContext-c368434/index.html delete mode 100644 docs/0.17.0/StubbingManager-c41b02a/index.html delete mode 100644 docs/0.17.0/StubbingManager_TransitionStrategy-1e8f2be/index.html delete mode 100644 docs/0.17.0/SubscriptDeclaration-c38cdc6/index.html delete mode 100644 docs/0.17.0/SubscriptGetterDeclaration-f0cef1c/index.html delete mode 100644 docs/0.17.0/SubscriptSetterDeclaration-e2c7a0d/index.html delete mode 100644 docs/0.17.0/TestFailer-f9088cc/index.html delete mode 100644 docs/0.17.0/ThrowingFunctionDeclaration-c3ccd38/index.html delete mode 100644 docs/0.17.0/ValueProvider-242b058/index.html delete mode 100644 docs/0.17.0/VariableDeclaration-f83ff6c/index.html delete mode 100644 docs/0.17.0/VerificationManager-0d29384/index.html delete mode 100644 docs/0.17.0/all.css delete mode 100644 docs/0.17.0/any(_:)-57c9fd0/index.html delete mode 100644 docs/0.17.0/any(_:containing:)-095611c/index.html delete mode 100644 docs/0.17.0/any(_:containing:)-44dd020/index.html delete mode 100644 docs/0.17.0/any(_:count:)-dbbc1fd/index.html delete mode 100644 docs/0.17.0/any(_:keys:)-8ca4847/index.html delete mode 100644 docs/0.17.0/any(_:of:)-0eb9154/index.html delete mode 100644 docs/0.17.0/any(_:of:)-64e400e/index.html delete mode 100644 docs/0.17.0/any(_:where:)-aeec51b/index.html delete mode 100644 docs/0.17.0/around(_:tolerance:)-00be404/index.html delete mode 100644 docs/0.17.0/atLeast(_:)-898a2b0/index.html delete mode 100644 docs/0.17.0/atMost(_:)-3e1c32b/index.html delete mode 100644 docs/0.17.0/between(_:)-d57ee49/index.html delete mode 100644 docs/0.17.0/clearDefaultValues(on:)-d6625bc/index.html delete mode 100644 docs/0.17.0/clearInvocations(on:)-c035ab0/index.html delete mode 100644 docs/0.17.0/clearStubs(on:)-733a109/index.html delete mode 100644 docs/0.17.0/eventually(_:_:)-4bc028a/index.html delete mode 100644 docs/0.17.0/exactly(_:)-c366d42/index.html delete mode 100644 docs/0.17.0/finiteSequence(of:)-4225436/index.html delete mode 100644 docs/0.17.0/finiteSequence(of:)-b90973c/index.html delete mode 100644 docs/0.17.0/given(_:)-8e1ce81/index.html delete mode 100644 docs/0.17.0/inOrder(with:file:line:_:)-2287378/index.html delete mode 100644 docs/0.17.0/index.html delete mode 100644 docs/0.17.0/lastSetValue(initial:)-d6a1a47/index.html delete mode 100644 docs/0.17.0/loopingSequence(of:)-8c11ab6/index.html delete mode 100644 docs/0.17.0/loopingSequence(of:)-cc3f2b3/index.html delete mode 100644 docs/0.17.0/mock(_:)-40a8117/index.html delete mode 100644 docs/0.17.0/never-657a74c/index.html delete mode 100644 docs/0.17.0/not(_:)-12c53a2/index.html delete mode 100644 docs/0.17.0/not(_:)-90155c4/index.html delete mode 100644 docs/0.17.0/notEmpty(_:)-42ce3f8/index.html delete mode 100644 docs/0.17.0/notNil(_:)-4da033f/index.html delete mode 100644 docs/0.17.0/once-dc7031f/index.html delete mode 100644 docs/0.17.0/reset(_:)-5654439/index.html delete mode 100644 docs/0.17.0/sequence(of:)-8b3c523/index.html delete mode 100644 docs/0.17.0/sequence(of:)-af09516/index.html delete mode 100644 docs/0.17.0/swizzleTestFailer(_:)-8147916/index.html delete mode 100644 docs/0.17.0/twice-b13bfea/index.html delete mode 100644 docs/0.17.0/useDefaultValues(from:on:)-3f9198a/index.html delete mode 100644 docs/0.17.0/useDefaultValues(from:on:)-c891538/index.html delete mode 100644 docs/0.17.0/verify(_:file:line:)-a5a6b2f/index.html delete mode 100644 docs/0.18.0/AnyDeclaration-762b5df/index.html delete mode 100644 docs/0.18.0/ArgumentCaptor-94fb876/index.html delete mode 100644 docs/0.18.0/ArgumentMatcher-e2bb17a/index.html delete mode 100644 docs/0.18.0/Array/index.html delete mode 100644 docs/0.18.0/Context-67f9dcd/index.html delete mode 100644 docs/0.18.0/CountMatcher-6825dbf/index.html delete mode 100644 docs/0.18.0/Declaration-61b39f6/index.html delete mode 100644 docs/0.18.0/Dictionary/index.html delete mode 100644 docs/0.18.0/DynamicStubbingManager-824a4fd/index.html delete mode 100644 docs/0.18.0/ErrorBox-1b2dcf7/index.html delete mode 100644 docs/0.18.0/ForwardingContext-feff474/index.html delete mode 100644 docs/0.18.0/FunctionDeclaration-9288d96/index.html delete mode 100644 docs/0.18.0/ImplementationProvider-ebb9664/index.html delete mode 100644 docs/0.18.0/InvocationRecorder-7d70b12/index.html delete mode 100644 docs/0.18.0/InvocationRecorder_Mode-cf6cb72/index.html delete mode 100644 docs/0.18.0/Mock-ad39d03/index.html delete mode 100644 docs/0.18.0/MockMetadata-491926a/index.html delete mode 100644 docs/0.18.0/Mockable-92ced01/index.html delete mode 100644 docs/0.18.0/MockingContext-c31b095/index.html delete mode 100644 docs/0.18.0/NSObjectProtocol/index.html delete mode 100644 docs/0.18.0/NonEscapingClosure-ac8dd96/index.html delete mode 100644 docs/0.18.0/ObjCErrorBox-ece9985/index.html delete mode 100644 docs/0.18.0/ObjCInvocation-9ef7ffe/index.html delete mode 100644 docs/0.18.0/Optional/index.html delete mode 100644 docs/0.18.0/OrderedVerificationOptions-2ad9275/index.html delete mode 100644 docs/0.18.0/PropertyGetterDeclaration-8ac0b54/index.html delete mode 100644 docs/0.18.0/PropertySetterDeclaration-1a29109/index.html delete mode 100644 docs/0.18.0/Providable-fd593f8/index.html delete mode 100644 docs/0.18.0/ProxyContext-67feefc/index.html delete mode 100644 docs/0.18.0/SelectorType-d2b8230/index.html delete mode 100644 docs/0.18.0/Set/index.html delete mode 100644 docs/0.18.0/SourceLocation-e12b876/index.html delete mode 100644 docs/0.18.0/StaticMock-a04a7c2/index.html delete mode 100644 docs/0.18.0/StaticStubbingManager-5a4489d/index.html delete mode 100644 docs/0.18.0/StubbingContext-d729e61/index.html delete mode 100644 docs/0.18.0/StubbingManager-c41b02a/index.html delete mode 100644 docs/0.18.0/StubbingManager_TransitionStrategy-1e8f2be/index.html delete mode 100644 docs/0.18.0/SubscriptDeclaration-c38cdc6/index.html delete mode 100644 docs/0.18.0/SubscriptGetterDeclaration-f0cef1c/index.html delete mode 100644 docs/0.18.0/SubscriptSetterDeclaration-e2c7a0d/index.html delete mode 100644 docs/0.18.0/SwiftErrorBox-a9850af/index.html delete mode 100644 docs/0.18.0/TestFailer-f9088cc/index.html delete mode 100644 docs/0.18.0/ThrowingFunctionDeclaration-c3ccd38/index.html delete mode 100644 docs/0.18.0/ValueProvider-242b058/index.html delete mode 100644 docs/0.18.0/VariableDeclaration-f83ff6c/index.html delete mode 100644 docs/0.18.0/VerificationManager-4f75443/index.html delete mode 100644 docs/0.18.0/all.css delete mode 100644 docs/0.18.0/any(_:)-04561d1/index.html delete mode 100644 docs/0.18.0/any(_:)-57c9fd0/index.html delete mode 100644 docs/0.18.0/any(_:containing:)-095611c/index.html delete mode 100644 docs/0.18.0/any(_:containing:)-44dd020/index.html delete mode 100644 docs/0.18.0/any(_:count:)-dbbc1fd/index.html delete mode 100644 docs/0.18.0/any(_:keys:)-8ca4847/index.html delete mode 100644 docs/0.18.0/any(_:of:)-0eb9154/index.html delete mode 100644 docs/0.18.0/any(_:of:)-64e400e/index.html delete mode 100644 docs/0.18.0/any(_:where:)-aeec51b/index.html delete mode 100644 docs/0.18.0/any(_:where:)-faad7a5/index.html delete mode 100644 docs/0.18.0/arg(_:at:)-e5b4d4c/index.html delete mode 100644 docs/0.18.0/around(_:tolerance:)-00be404/index.html delete mode 100644 docs/0.18.0/atLeast(_:)-898a2b0/index.html delete mode 100644 docs/0.18.0/atMost(_:)-3e1c32b/index.html delete mode 100644 docs/0.18.0/between(_:)-d57ee49/index.html delete mode 100644 docs/0.18.0/clearDefaultValues(on:)-7b56f7e/index.html delete mode 100644 docs/0.18.0/clearInvocations(on:)-3b83feb/index.html delete mode 100644 docs/0.18.0/clearInvocations(on:)-c035ab0/index.html delete mode 100644 docs/0.18.0/clearStubs(on:)-343b2f1/index.html delete mode 100644 docs/0.18.0/clearStubs(on:)-733a109/index.html delete mode 100644 docs/0.18.0/eventually(_:_:)-4bc028a/index.html delete mode 100644 docs/0.18.0/exactly(_:)-c366d42/index.html delete mode 100644 docs/0.18.0/fifthArg(_:)-b65d250/index.html delete mode 100644 docs/0.18.0/finiteSequence(of:)-4225436/index.html delete mode 100644 docs/0.18.0/finiteSequence(of:)-b90973c/index.html delete mode 100644 docs/0.18.0/firstArg(_:)-ca2e527/index.html delete mode 100644 docs/0.18.0/forward(to:)-28668e8/index.html delete mode 100644 docs/0.18.0/forwardToSuper()-5c5eb13/index.html delete mode 100644 docs/0.18.0/fourthArg(_:)-17b6638/index.html delete mode 100644 docs/0.18.0/given(_:)-8aeefd4/index.html delete mode 100644 docs/0.18.0/given(_:)-a96595c/index.html delete mode 100644 docs/0.18.0/inOrder(with:file:line:_:)-2287378/index.html delete mode 100644 docs/0.18.0/index.html delete mode 100644 docs/0.18.0/lastSetValue(initial:)-d6a1a47/index.html delete mode 100644 docs/0.18.0/loopingSequence(of:)-8c11ab6/index.html delete mode 100644 docs/0.18.0/loopingSequence(of:)-cc3f2b3/index.html delete mode 100644 docs/0.18.0/mock(_:)-40a8117/index.html delete mode 100644 docs/0.18.0/mock(_:)-b58cf6a/index.html delete mode 100644 docs/0.18.0/never-657a74c/index.html delete mode 100644 docs/0.18.0/not(_:)-12c53a2/index.html delete mode 100644 docs/0.18.0/not(_:)-90155c4/index.html delete mode 100644 docs/0.18.0/notEmpty(_:)-42ce3f8/index.html delete mode 100644 docs/0.18.0/notNil(_:)-4c25f3f/index.html delete mode 100644 docs/0.18.0/notNil(_:)-4da033f/index.html delete mode 100644 docs/0.18.0/once-dc7031f/index.html delete mode 100644 docs/0.18.0/reset(_:)-5654439/index.html delete mode 100644 docs/0.18.0/reset(_:)-76ccf89/index.html delete mode 100644 docs/0.18.0/secondArg(_:)-39c95e2/index.html delete mode 100644 docs/0.18.0/sequence(of:)-8b3c523/index.html delete mode 100644 docs/0.18.0/sequence(of:)-af09516/index.html delete mode 100644 docs/0.18.0/swizzleTestFailer(_:)-8147916/index.html delete mode 100644 docs/0.18.0/thirdArg(_:)-4eaa586/index.html delete mode 100644 docs/0.18.0/twice-b13bfea/index.html delete mode 100644 docs/0.18.0/verify(_:file:line:)-023a535/index.html delete mode 100644 docs/0.18.0/verify(_:file:line:)-a5a6b2f/index.html delete mode 100644 docs/0.18.0/~>-561b2ad/index.html create mode 100644 docs/Mockingbird.docc/Info.plist delete mode 100644 docs/images/mockingbird-hero-image.png delete mode 100644 docs/index.html delete mode 100644 docs/latest/index.html delete mode 160000 docs/swift-doc diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index b2d786b4..00000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "docs/swift-doc"] - path = docs/swift-doc - url = https://github.com/andrewchang-bird/swift-doc diff --git a/docs/0.14.0/ArgumentCaptor-1017688/index.html b/docs/0.14.0/ArgumentCaptor-1017688/index.html deleted file mode 100755 index 48df4e27..00000000 --- a/docs/0.14.0/ArgumentCaptor-1017688/index.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - Mockingbird - ArgumentCaptor - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Class - Argument​Captor -

- -
public class ArgumentCaptor<ParameterType>: ArgumentMatcher
-
-

Captures method arguments passed during mock invocations.

- -
-
-

An argument captor extracts received argument values which can be used in other parts of the -test.

- -
let bird = mock(Bird.self)
-bird.name = "Ryan"
-
-let nameCaptor = ArgumentCaptor<String>()
-verify(bird.setName(nameCaptor.matcher)).wasCalled()
-print(nameCaptor.value)  // Prints "Ryan"
-
-
-
- -
- - - - - - -%3 - - -ArgumentCaptor - - -ArgumentCaptor - - - - -ArgumentMatcher - -ArgumentMatcher - - -ArgumentCaptor->ArgumentMatcher - - - - - - - - -
-

Superclass

-
-
ArgumentMatcher
-

Matches argument values with a comparator.

-
-
-
-
-

Initializers

- -
-

- init(weak:​) -

-
public init(weak: Bool = false)
-
-

Create a new argument captor.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
weakBool

Whether captured arguments should be stored weakly.

-
-
-
-
-

Properties

- -
-

- matcher -

-
var matcher: ParameterType
-
-

Passed as a parameter to mock verification contexts.

- -
-
-
-

- all​Values -

-
var allValues: [ParameterType]
-
-

All recorded argument values.

- -
-
-
-

- value -

-
var value: ParameterType?
-
-

The last recorded argument value.

- -
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/ArgumentMatcher-f013d1a/index.html b/docs/0.14.0/ArgumentMatcher-f013d1a/index.html deleted file mode 100755 index 00b0a0f8..00000000 --- a/docs/0.14.0/ArgumentMatcher-f013d1a/index.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - Mockingbird - ArgumentMatcher - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Class - Argument​Matcher -

- -
public class ArgumentMatcher: CustomStringConvertible
-
-

Matches argument values with a comparator.

- -
-
- -
- - - - - - -%3 - - -ArgumentMatcher - - -ArgumentMatcher - - - - -Equatable - -Equatable - - -ArgumentMatcher->Equatable - - - - -CustomStringConvertible - -CustomStringConvertible - - -ArgumentMatcher->CustomStringConvertible - - - - -ArgumentCaptor - -ArgumentCaptor - - -ArgumentCaptor->ArgumentMatcher - - - - - - - - -
-

Subclasses

-
-
ArgumentCaptor
-

Captures method arguments passed during mock invocations.

-
-
-

Conforms To

-
-
CustomStringConvertible
-
Equatable
-
-
-
-

Properties

- -
-

- description -

-
let description: String
-
-

A description for test failure output.

- -
-
-
-
-

Methods

- -
-

- ==(lhs:​rhs:​) -

-
public static func ==(lhs: ArgumentMatcher, rhs: ArgumentMatcher) -> Bool
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/CountMatcher-4be5ae3/index.html b/docs/0.14.0/CountMatcher-4be5ae3/index.html deleted file mode 100755 index 7a725413..00000000 --- a/docs/0.14.0/CountMatcher-4be5ae3/index.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - Mockingbird - CountMatcher - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Structure - Count​Matcher -

- -
public struct CountMatcher
-
-

Checks whether a number matches some expected count.

- -
- -
-

Methods

- -
-

- or(_:​) -

-
public func or(_ countMatcher: CountMatcher) -> CountMatcher
-
-

Logically combine another count matcher, passing if either matches.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n = 1 || n ≥ 42
-verify(bird.fly()).wasCalled(exactly(once).or(atLeast(42)))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

Another count matcher to combine.

-
-

Returns

-

A combined count matcher.

- -
-
-

- or(_:​) -

-
public func or(_ times: Int) -> CountMatcher
-
-

Logically combine with an exact count, passing if either matches.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n = 1 || n = 2
-verify(bird.fly()).wasCalled(exactly(once).or(twice))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An exact count to combine.

-
-

Returns

-

A combined count matcher.

- -
-
-

- and(_:​) -

-
public func and(_ countMatcher: CountMatcher) -> CountMatcher
-
-

Logically combine another count matcher, only passing if both match.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n = 1 && n ≥ 42
-verify(bird.fly()).wasCalled(exactly(once).and(atLeast(42)))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

Another count matcher to combine.

-
-

Returns

-

A combined count matcher.

- -
-
-

- xor(_:​) -

-
public func xor(_ countMatcher: CountMatcher) -> CountMatcher
-
-

Logically combine another count matcher, only passing if one matches but not the other.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n ≤ 2 ⊕ n ≥ 1
-verify(bird.fly()).wasCalled(atMost(twice).xor(atLeast(once)))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

Another count matcher to combine.

-
-

Returns

-

A combined count matcher.

- -
-
-

- xor(_:​) -

-
public func xor(_ times: Int) -> CountMatcher
-
-

Logically combine an exact count, only passing if one matches but not the other.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n ≥ 1 ⊕ n = 2
-verify(bird.fly()).wasCalled(atLeast(once).xor(twice))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An exact count.

-
-

Returns

-

A combined count matcher.

- -
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/Declaration-f6338ac/index.html b/docs/0.14.0/Declaration-f6338ac/index.html deleted file mode 100755 index 39ff7c1d..00000000 --- a/docs/0.14.0/Declaration-f6338ac/index.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - Mockingbird - Declaration - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Protocol - Declaration -

- -
public protocol Declaration
-
-

All mockable declaration types conform to this protocol.

- -
-
- -
- - - - - - -%3 - - -Declaration - - -Declaration - - - - -VariableDeclaration - -VariableDeclaration - - -VariableDeclaration->Declaration - - - - -SubscriptDeclaration - -SubscriptDeclaration - - -SubscriptDeclaration->Declaration - - - - -FunctionDeclaration - -FunctionDeclaration - - -FunctionDeclaration->Declaration - - - - - - - - -
-

Types Conforming to Declaration

-
-
VariableDeclaration
-

Mockable variable declarations.

-
-
FunctionDeclaration
-

Mockable function declarations.

-
-
SubscriptDeclaration
-

Mockable subscript declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/FunctionDeclaration-2ccea11/index.html b/docs/0.14.0/FunctionDeclaration-2ccea11/index.html deleted file mode 100755 index 2aeac2f5..00000000 --- a/docs/0.14.0/FunctionDeclaration-2ccea11/index.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - Mockingbird - FunctionDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Class - Function​Declaration -

- -
public class FunctionDeclaration: Declaration
-
-

Mockable function declarations.

- -
-
- -
- - - - - - -%3 - - -FunctionDeclaration - - -FunctionDeclaration - - - - -Declaration - -Declaration - - -FunctionDeclaration->Declaration - - - - -ThrowingFunctionDeclaration - -ThrowingFunctionDeclaration - - -ThrowingFunctionDeclaration->FunctionDeclaration - - - - - - - - -
-

Subclasses

-
-
ThrowingFunctionDeclaration
-

Mockable throwing function declarations.

-
-
-

Conforms To

-
-
Declaration
-

All mockable declaration types conform to this protocol.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/ImplementationProvider-c664b1e/index.html b/docs/0.14.0/ImplementationProvider-c664b1e/index.html deleted file mode 100755 index bb896de9..00000000 --- a/docs/0.14.0/ImplementationProvider-c664b1e/index.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - Mockingbird - ImplementationProvider - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Structure - Implementation​Provider -

- -
public struct ImplementationProvider<DeclarationType: Declaration, InvocationType, ReturnType>
-
-

Provides implementation functions used to stub behavior and return values.

- -
- -
-

Initializers

- -
-

- init(implementation​Creator:​) -

-
public init(implementationCreator: @escaping () -> Any?)
-
-

Create an implementation provider with an optional callback.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
implementation​Creator@escaping () -> Any?

A closure returning an implementation when evaluated.

-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/MKBFail(_:isFatal:file:line:)-c41bd8d/index.html b/docs/0.14.0/MKBFail(_:isFatal:file:line:)-c41bd8d/index.html deleted file mode 100755 index 5eefaa4f..00000000 --- a/docs/0.14.0/MKBFail(_:isFatal:file:line:)-c41bd8d/index.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - Mockingbird - MKBFail(_:isFatal:file:line:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -MKBFail(_:​is​Fatal:​file:​line:​) -

- -
public func MKBFail(_ message: String, isFatal: Bool = false, file: StaticString = #file, line: UInt = #line)
-
-

Called by Mockingbird on test assertion failures.

- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
messageString

A description of the failure.

-
is​FatalBool

If true, test case execution should not continue.

-
fileStatic​String

The file where the failure occurred.

-
lineUInt

The line in the file where the failure occurred.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/Mock-28ffcc3/index.html b/docs/0.14.0/Mock-28ffcc3/index.html deleted file mode 100755 index 901054aa..00000000 --- a/docs/0.14.0/Mock-28ffcc3/index.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - Mockingbird - Mock - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Protocol - Mock -

- -
public protocol Mock
-
-

All generated mocks conform to this protocol.

- -
-
- -
- - - - - - -%3 - - -Mock - - -Mock - - - - -StaticMock - -StaticMock - - -StaticMock->Mock - - - - - - - - -
-

Types Conforming to Mock

-
-
StaticMock
-

Used to store invocations on static or class scoped methods.

-
-
-
- - - -
-

Requirements

- -
-

- mocking​Context -

-
var mockingContext: MockingContext
-
-

Information about received invocations.

- -
-
-
-

- stubbing​Context -

-
var stubbingContext: StubbingContext
-
-

Implementations for stubbing behaviors.

- -
-
-
-

- mock​Metadata -

-
var mockMetadata: MockMetadata
-
-

Static metadata about the mock created at generation time.

- -
-
-
-

- source​Location -

-
var sourceLocation: SourceLocation?
-
-

Where the mock was initialized.

- -
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/MockMetadata-36657c4/index.html b/docs/0.14.0/MockMetadata-36657c4/index.html deleted file mode 100755 index 67d3de36..00000000 --- a/docs/0.14.0/MockMetadata-36657c4/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - Mockingbird - MockMetadata - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Structure - Mock​Metadata -

- -
public struct MockMetadata
-
-

Stores information about generated mocks.

- -
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/Mockable-9a5a67c/index.html b/docs/0.14.0/Mockable-9a5a67c/index.html deleted file mode 100755 index ac63065c..00000000 --- a/docs/0.14.0/Mockable-9a5a67c/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - Mockingbird - Mockable - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Structure - Mockable -

- -
public struct Mockable<DeclarationType: Declaration, InvocationType, ReturnType>
-
-

Represents a mocked declaration that can be stubbed or verified.

- -
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/MockingContext-c5faed5/index.html b/docs/0.14.0/MockingContext-c5faed5/index.html deleted file mode 100755 index 0fe8b42a..00000000 --- a/docs/0.14.0/MockingContext-c5faed5/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - Mockingbird - MockingContext - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Class - Mocking​Context -

- -
public class MockingContext
-
-

Stores invocations received by mocks.

- -
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/NonEscapingClosure-e61507c/index.html b/docs/0.14.0/NonEscapingClosure-e61507c/index.html deleted file mode 100755 index a262d10f..00000000 --- a/docs/0.14.0/NonEscapingClosure-e61507c/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - Mockingbird - NonEscapingClosure - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Class - Non​Escaping​Closure -

- -
public class NonEscapingClosure<ClosureType>: NonEscapingType
-
-

Placeholder for non-escaping closure parameter types.

- -
-
-

Non-escaping closures cannot be stored in an Invocation so an instance of a -NonEscapingClosure is stored instead.

- -
protocol Bird {
-  func send(_ message: String, callback: (Result) -> Void)
-}
-
-bird.send("Hello", callback: { print($0) })
-
-// Must use a wildcard argument matcher like `any`
-verify(bird.send("Hello", callback: any())).wasCalled()
-
-

Mark closure parameter types as @escaping to capture closures during verification.

- -
protocol Bird {
-  func send(_ message: String, callback: @escaping (Result) -> Void)
-}
-
-bird.send("Hello", callback: { print($0) })
-
-let argumentCaptor = ArgumentCaptor<(Result) -> Void>()
-verify(bird.send("Hello", callback: argumentCaptor.matcher)).wasCalled()
-argumentCaptor.value?(.success)  // Prints Result.success
-
-
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/OrderedVerificationOptions-77823cc/index.html b/docs/0.14.0/OrderedVerificationOptions-77823cc/index.html deleted file mode 100755 index 6b35f2cc..00000000 --- a/docs/0.14.0/OrderedVerificationOptions-77823cc/index.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - Mockingbird - OrderedVerificationOptions - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Structure - Ordered​Verification​Options -

- -
public struct OrderedVerificationOptions: OptionSet
-
-

Additional options to increase the strictness of inOrder verification blocks.

- -
-
- -
- - - - - - -%3 - - -OrderedVerificationOptions - - -OrderedVerificationOptions - - - - -OptionSet - -OptionSet - - -OrderedVerificationOptions->OptionSet - - - - - - - - -
-

Conforms To

-
-
OptionSet
-
-
-
-

Initializers

- -
-

- init(raw​Value:​) -

-
public init(rawValue: Int)
-
-
-
-

Properties

- -
-

- raw​Value -

-
let rawValue: Int
-
-
-

- no​Invocations​Before -

-
let noInvocationsBefore
-
-

Check that there are no recorded invocations before those explicitly verified in the block.

- -
-
-

Use this option to disallow invocations prior to those satisfying the first verification.

- -
bird.eat()
-bird.fly()
-bird.chirp()
-
-// Passes _without_ the option
-inOrder {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-// Fails with the option
-inOrder(with: .noInvocationsBefore) {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-
-
-
-

- no​Invocations​After -

-
let noInvocationsAfter
-
-

Check that there are no recorded invocations after those explicitly verified in the block.

- -
-
-

Use this option to disallow subsequent invocations to those satisfying the last verification.

- -
bird.fly()
-bird.chirp()
-bird.eat()
-
-// Passes _without_ the option
-inOrder {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-// Fails with the option
-inOrder(with: .noInvocationsAfter) {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-
-
-
-

- only​Consecutive​Invocations -

-
let onlyConsecutiveInvocations
-
-

Check that there are no recorded invocations between those explicitly verified in the block.

- -
-
-

Use this option to disallow non-consecutive invocations to each verification.

- -
bird.fly()
-bird.eat()
-bird.chirp()
-
-// Passes _without_ the option
-inOrder {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-// Fails with the option
-inOrder(with: .noInvocationsAfter) {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/PropertyGetterDeclaration-db9ea0d/index.html b/docs/0.14.0/PropertyGetterDeclaration-db9ea0d/index.html deleted file mode 100755 index a5acf7cb..00000000 --- a/docs/0.14.0/PropertyGetterDeclaration-db9ea0d/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Mockingbird - PropertyGetterDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Class - Property​Getter​Declaration -

- -
public class PropertyGetterDeclaration: VariableDeclaration
-
-

Mockable property getter declarations.

- -
-
- -
- - - - - - -%3 - - -PropertyGetterDeclaration - - -PropertyGetterDeclaration - - - - -VariableDeclaration - -VariableDeclaration - - -PropertyGetterDeclaration->VariableDeclaration - - - - - - - - -
-

Superclass

-
-
VariableDeclaration
-

Mockable variable declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/PropertySetterDeclaration-7cfb3cc/index.html b/docs/0.14.0/PropertySetterDeclaration-7cfb3cc/index.html deleted file mode 100755 index 9706c09a..00000000 --- a/docs/0.14.0/PropertySetterDeclaration-7cfb3cc/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Mockingbird - PropertySetterDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Class - Property​Setter​Declaration -

- -
public class PropertySetterDeclaration: VariableDeclaration
-
-

Mockable property setter declarations.

- -
-
- -
- - - - - - -%3 - - -PropertySetterDeclaration - - -PropertySetterDeclaration - - - - -VariableDeclaration - -VariableDeclaration - - -PropertySetterDeclaration->VariableDeclaration - - - - - - - - -
-

Superclass

-
-
VariableDeclaration
-

Mockable variable declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/Providable-7bc5aa7/index.html b/docs/0.14.0/Providable-7bc5aa7/index.html deleted file mode 100755 index d4ef3c22..00000000 --- a/docs/0.14.0/Providable-7bc5aa7/index.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - Mockingbird - Providable - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Protocol - Providable -

- -
public protocol Providable
-
-

A type that can provide concrete instances of itself.

- -
-
-

Provide wildcard instances for generic types by conforming the base type to Providable and -registering the type. Non-wildcard instances have precedence over wildcard instances.

- -
extension Array: Providable {
-  public static func createInstance() -> Self? {
-    return Array()
-  }
-}
-
-var valueProvider = ValueProvider()
-valueProvider.registerType(Array<Any>.self)
-
-// All specializations of `Array` return an empty array
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints []
-print(valueProvider.provideValue(for: Array<Data>.self))    // Prints []
-
-// Register a non-wildcard instance of `Array<String>`
-valueProvider.register(["A", "B"], for: Array<String>.self)
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints ["A", "B"]
-print(valueProvider.provideValue(for: Array<Data>.self))    // Prints []
-
- -
- - - - -
-

Requirements

- -
-

- create​Instance() -

-
static func createInstance() -> Self?
-
-

Create a concrete instance of this type, or nil if no concrete instance is available.

- -
-
- -
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/SourceLocation-656fd60/index.html b/docs/0.14.0/SourceLocation-656fd60/index.html deleted file mode 100755 index add48377..00000000 --- a/docs/0.14.0/SourceLocation-656fd60/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - Mockingbird - SourceLocation - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Structure - Source​Location -

- -
public struct SourceLocation
-
-

References a line of code in a file.

- -
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/StaticMock-882efeb/index.html b/docs/0.14.0/StaticMock-882efeb/index.html deleted file mode 100755 index 935a6cc1..00000000 --- a/docs/0.14.0/StaticMock-882efeb/index.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - Mockingbird - StaticMock - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Class - Static​Mock -

- -
public class StaticMock: Mock
-
-

Used to store invocations on static or class scoped methods.

- -
-
- -
- - - - - - -%3 - - -StaticMock - - -StaticMock - - - - -Mock - -Mock - - -StaticMock->Mock - - - - - - - - -
-

Conforms To

-
-
Mock
-

All generated mocks conform to this protocol.

-
-
-
-
-

Properties

- -
-

- mocking​Context -

-
let mockingContext
-
-

Information about received invocations.

- -
-
-
-

- stubbing​Context -

-
let stubbingContext
-
-

Implementations for stubbing behaviors.

- -
-
-
-

- mock​Metadata -

-
let mockMetadata
-
-

Static metadata about the mock created at generation time.

- -
-
-
-

- source​Location -

-
var sourceLocation: SourceLocation?
-
-

Where the mock was initialized.

- -
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/StubbingContext-794fb76/index.html b/docs/0.14.0/StubbingContext-794fb76/index.html deleted file mode 100755 index 6c29d4bb..00000000 --- a/docs/0.14.0/StubbingContext-794fb76/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - Mockingbird - StubbingContext - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Class - Stubbing​Context -

- -
public class StubbingContext
-
-

Stores stubbed implementations used by mocks.

- -
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/StubbingManager-761d798/index.html b/docs/0.14.0/StubbingManager-761d798/index.html deleted file mode 100755 index 86a0af02..00000000 --- a/docs/0.14.0/StubbingManager-761d798/index.html +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - Mockingbird - StubbingManager - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Class - Stubbing​Manager -

- -
public class StubbingManager<DeclarationType: Declaration, InvocationType, ReturnType>
-
-

An intermediate object used for stubbing declarations returned by given.

- -
-
- - -

Nested Types

-
-
StubbingManager.TransitionStrategy
-

When to use the next chained implementation provider.

-
-
-
-
-

Methods

- -
-

- will​Return(_:​) -

-
@discardableResult public func willReturn(_ value: ReturnType) -> Self
-
-

Stub a mocked method or property by returning a single value.

- -
-
-

Stubbing allows you to define custom behavior for mocks to perform.

- -
given(bird.doMethod()).willReturn(someValue)
-given(bird.getProperty()).willReturn(someValue)
-
-

Match exact or wildcard argument values when stubbing methods with parameters. Stubs added -later have a higher precedence, so add stubs with specific matchers last.

- -
given(bird.canChirp(volume: any())).willReturn(true)     // Any volume
-given(bird.canChirp(volume: notNil())).willReturn(true)  // Any non-nil volume
-given(bird.canChirp(volume: 10)).willReturn(true)        // Volume = 10
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
valueReturn​Type

A stubbed value to return.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will​Return(_:​transition:​) -

-
@discardableResult public func willReturn(_ provider: ImplementationProvider<DeclarationType, InvocationType, ReturnType>, transition: TransitionStrategy = .onFirstNil) -> Self
-
-

Stub a mocked method or property with an implementation provider.

- -
-
-

There are several preset implementation providers such as lastSetValue, which can be used -with property getters to automatically save and return values.

- -
given(bird.getName()).willReturn(lastSetValue(initial: ""))
-print(bird.name)  // Prints ""
-bird.name = "Ryan"
-print(bird.name)  // Prints "Ryan"
-
-

Implementation providers usually return multiple values, so when using chained stubbing it's -necessary to specify a transition strategy that defines when to go to the next stub.

- -
given(bird.getName())
-  .willReturn(lastSetValue(initial: ""), transition: .after(2))
-  .willReturn("Sterling")
-
-print(bird.name)  // Prints ""
-bird.name = "Ryan"
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
providerImplementation​Provider<Declaration​Type, Invocation​Type, Return​Type>

An implementation provider that creates closure implementation stubs.

-
transitionTransition​Strategy

When to use the next implementation provider in the list.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
@discardableResult public func will(_ implementation: InvocationType) -> Self
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-

Stubs are type safe and work with inout and closure parameter types.

- -
protocol Bird {
-  func send(_ message: inout String)
-  func fly(callback: (Result) -> Void)
-}
-
-// Inout parameter type
-var message = "Hello!"
-bird.send(&message)
-print(message)   // Prints "HELLO!"
-
-// Closure parameter type
-given(bird.fly(callback: any())).will { callback in
-  callback(.success)
-}
-bird.fly(callback: { result in
-  print(result)  // Prints Result.success
-})
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementationInvocation​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/StubbingManager_TransitionStrategy-9f44b8f/index.html b/docs/0.14.0/StubbingManager_TransitionStrategy-9f44b8f/index.html deleted file mode 100755 index 733ce451..00000000 --- a/docs/0.14.0/StubbingManager_TransitionStrategy-9f44b8f/index.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - Mockingbird - StubbingManager.TransitionStrategy - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Enumeration - Stubbing​Manager.​Transition​Strategy -

- -
public enum TransitionStrategy
-
-

When to use the next chained implementation provider.

- -
-
- - -

Member Of

-
-
StubbingManager
-

An intermediate object used for stubbing declarations returned by given.

-
-
-
-
-

Enumeration Cases

- -
-

- after -

-
case after(_ times: Int)
-
-

Go to the next provider after providing a certain number of implementations.

- -
-
-

This transition strategy is particularly useful for non-finite value providers such as -sequence and loopingSequence.

- -
given(bird.getName())
-  .willReturn(loopingSequence(of: "Ryan", "Sterling"), transition: .after(3))
-  .willReturn("Andrew")
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Andrew"
-
-
-
-
-

- on​First​Nil -

-
case onFirstNil
-
-

Use the current provider until it provides a nil implementation.

- -
-
-

This transition strategy should be used for finite value providers like finiteSequence -that are nil terminated to indicate an invalidated state.

- -
given(bird.getName())
-  .willReturn(finiteSequence(of: "Ryan", "Sterling"), transition: .onFirstNil)
-  .willReturn("Andrew")
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Andrew"
-
-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/SubscriptDeclaration-38e94f4/index.html b/docs/0.14.0/SubscriptDeclaration-38e94f4/index.html deleted file mode 100755 index 1e95d69f..00000000 --- a/docs/0.14.0/SubscriptDeclaration-38e94f4/index.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - Mockingbird - SubscriptDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Class - Subscript​Declaration -

- -
public class SubscriptDeclaration: Declaration
-
-

Mockable subscript declarations.

- -
-
- -
- - - - - - -%3 - - -SubscriptDeclaration - - -SubscriptDeclaration - - - - -Declaration - -Declaration - - -SubscriptDeclaration->Declaration - - - - -SubscriptSetterDeclaration - -SubscriptSetterDeclaration - - -SubscriptSetterDeclaration->SubscriptDeclaration - - - - -SubscriptGetterDeclaration - -SubscriptGetterDeclaration - - -SubscriptGetterDeclaration->SubscriptDeclaration - - - - - - - - -
-

Subclasses

-
-
SubscriptGetterDeclaration
-

Mockable subscript getter declarations.

-
-
SubscriptSetterDeclaration
-

Mockable subscript setter declarations.

-
-
-

Conforms To

-
-
Declaration
-

All mockable declaration types conform to this protocol.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/SubscriptGetterDeclaration-2324199/index.html b/docs/0.14.0/SubscriptGetterDeclaration-2324199/index.html deleted file mode 100755 index d69b16b2..00000000 --- a/docs/0.14.0/SubscriptGetterDeclaration-2324199/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Mockingbird - SubscriptGetterDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Class - Subscript​Getter​Declaration -

- -
public class SubscriptGetterDeclaration: SubscriptDeclaration
-
-

Mockable subscript getter declarations.

- -
-
- -
- - - - - - -%3 - - -SubscriptGetterDeclaration - - -SubscriptGetterDeclaration - - - - -SubscriptDeclaration - -SubscriptDeclaration - - -SubscriptGetterDeclaration->SubscriptDeclaration - - - - - - - - -
-

Superclass

-
-
SubscriptDeclaration
-

Mockable subscript declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/SubscriptSetterDeclaration-a66f358/index.html b/docs/0.14.0/SubscriptSetterDeclaration-a66f358/index.html deleted file mode 100755 index 79f8420e..00000000 --- a/docs/0.14.0/SubscriptSetterDeclaration-a66f358/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Mockingbird - SubscriptSetterDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Class - Subscript​Setter​Declaration -

- -
public class SubscriptSetterDeclaration: SubscriptDeclaration
-
-

Mockable subscript setter declarations.

- -
-
- -
- - - - - - -%3 - - -SubscriptSetterDeclaration - - -SubscriptSetterDeclaration - - - - -SubscriptDeclaration - -SubscriptDeclaration - - -SubscriptSetterDeclaration->SubscriptDeclaration - - - - - - - - -
-

Superclass

-
-
SubscriptDeclaration
-

Mockable subscript declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/TestFailer-4ae7a4d/index.html b/docs/0.14.0/TestFailer-4ae7a4d/index.html deleted file mode 100755 index 05cb54ed..00000000 --- a/docs/0.14.0/TestFailer-4ae7a4d/index.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - Mockingbird - TestFailer - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Protocol - Test​Failer -

- -
public protocol TestFailer
-
-

A type that can handle test failures emitted by Mockingbird.

- -
- - - - -
-

Requirements

- -
-

- fail(message:​is​Fatal:​file:​line:​) -

-
func fail(message: String, isFatal: Bool, file: StaticString, line: UInt)
-
-

Fail the current test case.

- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
messageString

A description of the failure.

-
is​FatalBool

If true, test case execution should not continue.

-
fileStatic​String

The file where the failure occurred.

-
lineUInt

The line in the file where the failure occurred.

-
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/ThrowingFunctionDeclaration-9b512dc/index.html b/docs/0.14.0/ThrowingFunctionDeclaration-9b512dc/index.html deleted file mode 100755 index c459ca37..00000000 --- a/docs/0.14.0/ThrowingFunctionDeclaration-9b512dc/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Mockingbird - ThrowingFunctionDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Class - Throwing​Function​Declaration -

- -
public class ThrowingFunctionDeclaration: FunctionDeclaration
-
-

Mockable throwing function declarations.

- -
-
- -
- - - - - - -%3 - - -ThrowingFunctionDeclaration - - -ThrowingFunctionDeclaration - - - - -FunctionDeclaration - -FunctionDeclaration - - -ThrowingFunctionDeclaration->FunctionDeclaration - - - - - - - - -
-

Superclass

-
-
FunctionDeclaration
-

Mockable function declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/ValueProvider-7c6afc8/index.html b/docs/0.14.0/ValueProvider-7c6afc8/index.html deleted file mode 100755 index 93fe695c..00000000 --- a/docs/0.14.0/ValueProvider-7c6afc8/index.html +++ /dev/null @@ -1,583 +0,0 @@ - - - - - - Mockingbird - ValueProvider - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Structure - Value​Provider -

- -
public struct ValueProvider: Hashable
-
-

Provides concrete instances of types.

- -
-
-

To return default values for unstubbed methods, use a ValueProvider with the initialized mock. -Mockingbird provides preset value providers which are guaranteed to be backwards compatible, -such as .standardProvider.

- -
let bird = mock(Bird.self)
-bird.useDefaultValues(from: .standardProvider)
-print(bird.name)  // Prints ""
-
-

You can create custom value providers by registering values for types.

- -
var valueProvider = ValueProvider()
-valueProvider.register("Ryan", for: String.self)
-
-bird.useDefaultValues(from: valueProvider)
-print(bird.name)  // Prints "Ryan"
-
-
-
- -
- - - - - - -%3 - - -ValueProvider - - -ValueProvider - - - - -Hashable - -Hashable - - -ValueProvider->Hashable - - - - - - - - -
-

Conforms To

-
-
Hashable
-
-
-
-

Initializers

- -
-

- init() -

-
public init()
-
-

Create an empty value provider.

- -
-
-
-

- init(from:​) -

-
public init(from other: ValueProvider)
-
-

Copy another value provider.

- -
-
-

Mockingbird provides several preset value providers that can be used as the base template for -custom value providers.

- -
var valueProvider = ValueProvider(from: .standardProvider)
-print(valueProvider.provideValue(for: String.self))  // Prints ""
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
otherValue​Provider

Another value provider to copy.

-
-
-
-
-

Properties

- -
-

- collections​Provider -

-
let collectionsProvider
-
-

Provides default-initialized collections. -https://developer.apple.com/documentation/foundation/collections

- -
-
-
-

- primitives​Provider -

-
let primitivesProvider
-
-

Provides default values for primitive Swift types. -https://developer.apple.com/documentation/foundation/numbers_data_and_basic_values

- -
-
-
-

- basics​Provider -

-
let basicsProvider
-
-

Provides default values for basic types that are not primitives. -https://developer.apple.com/documentation/foundation/numbers_data_and_basic_values

- -
-
-
-

- geometry​Provider -

-
let geometryProvider
-
-

Provides default values for graphics and geometry types. -https://developer.apple.com/documentation/foundation/numbers_data_and_basic_values

- -
-
-
-

- strings​Provider -

-
let stringsProvider
-
-

Provides default values for string and text types. -https://developer.apple.com/documentation/foundation/strings_and_text

- -
-
-
-

- dates​Provider -

-
let datesProvider
-
-

Provides default values for date and time types. -https://developer.apple.com/documentation/foundation/dates_and_times

- -
-
-
-

- standard​Provider -

-
let standardProvider
-
-

All preset value providers.

- -
-
-
-
-

Methods

- -
-

- hash(into:​) -

-
public func hash(into hasher: inout Hasher)
-
-

Hashes the value provider instance.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
hasherinout Hasher

The hasher to use when combining the components of this instance.

-
-
-
-

- ==(lhs:​rhs:​) -

-
public static func ==(lhs: ValueProvider, rhs: ValueProvider) -> Bool
-
-

Returns a Boolean value indicating whether two value provider instances are equal.

- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
lhsValue​Provider

A value to compare.

-
rhsValue​Provider

Another value to compare.

-
-
-
-

- add​Subprovider(_:​) -

-
mutating public func addSubprovider(_ provider: ValueProvider)
-
-

Add another value provider as a subprovider

- -
-
-

Value providers can be composed hierarchically by adding subproviders. Providers added later -have higher precedence.

- -
var valueProvider = ValueProvider()
-
-// Add a preset value provider as a subprovider.
-valueProvider.addSubprovider(.standardProvider)
-print(valueProvider.provideValue(for: String.self))  // Prints ""
-
-// Add a custom value provider a subprovider.
-var stringProvider = ValueProvider()
-stringProvider.register("Ryan", for: String.self)
-valueProvider.addSubprovider(stringProvider)
-print(valueProvider.provideValue(for: String.self))  // Prints "Ryan"
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
providerValue​Provider

A value provider to add.

-
-
-
-

- remove​Subprovider(_:​) -

-
mutating public func removeSubprovider(_ provider: ValueProvider)
-
-

Remove a previously added value provider.

- -
-
-

Instances are internally unique such that it's possible to easily add and remove preset value -providers.

- -
var valueProvider = ValueProvider()
-valueProvider.addSubprovider(.standardProvider)
-valueProvider.removeSubprovider(.standardProvider)
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
providerValue​Provider

The value provider to remove.

-
-
-
-

- register(_:​for:​) -

-
mutating public func register<K, V>(_ value: V, for type: K.Type = K.self)
-
-

Register a value for a specific type.

- -
-
-

Create custom value providers by registering values for types.

- -
var valueProvider = ValueProvider()
-valueProvider.register("Ryan", for: String.self)
-print(valueProvider.provideValue(for: String.self))  // Prints "Ryan"
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
valueV

The value to register.

-
typeK.​Type

The type to register the value under. value must be of kind type.

-
-
-
-

- register​Type(_:​) -

-
mutating public func registerType<V: Providable>(_ type: V.Type = V.self)
-
-

Register a Providable type used to provide values for generic types.

- -
-
-

Provide wildcard instances for generic types by conforming the base type to Providable and -registering the type. Non-wildcard instances have precedence over wildcard instances.

- -
extension Array: Providable {
-  public static func createInstance() -> Self? {
-    return Array()
-  }
-}
-
-var valueProvider = ValueProvider()
-valueProvider.registerType(Array<Any>.self)
-
-// All specializations of `Array` return an empty array
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints []
-print(valueProvider.provideValue(for: Array<Data>.self))    // Prints []
-
-// Register a non-wildcard instance of `Array<String>`
-valueProvider.register(["A", "B"], for: Array<String>.self)
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints ["A", "B"]
-print(valueProvider.provideValue(for: Array<Data>.self))    // Prints []
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeV.​Type

A Providable type to register.

-
-
-
-

- remove(_:​) -

-
mutating public func remove<T>(_ type: T.Type)
-
-

Remove a registered value for a given type.

- -
-
-

Previously registered values can be removed from the top-level value provider. This does not -affect values provided by subproviders.

- -
var valueProvider = ValueProvider(from: .standardProvider)
-print(valueProvider.provideValue(for: String.self))  // Prints ""
-
-// Override the subprovider value
-valueProvider.register("Ryan", for: String.self)
-print(valueProvider.provideValue(for: String.self))  // Prints "Ryan"
-
-// Remove the registered value
-valueProvider.remove(String.self)
-print(valueProvider.provideValue(for: String.self))  // Prints ""
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The type to remove a previously registered value for.

-
-
-
-

- remove(_:​) -

-
mutating public func remove<V: Providable>(_ type: V.Type = V.self)
-
-

Remove a registered Providable type.

- -
-
-

Previously registered wildcard instances for generic types can be removed from the top-level -value provider.

- -
var valueProvider = ValueProvider()
-
-valueProvider.registerType(Array<Any>.self)
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints []
-
-valueProvider.remove(Array<Any>.self)
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints nil
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeV.​Type

A Providable type to remove.

-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/VariableDeclaration-c075015/index.html b/docs/0.14.0/VariableDeclaration-c075015/index.html deleted file mode 100755 index a2ea70e9..00000000 --- a/docs/0.14.0/VariableDeclaration-c075015/index.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - Mockingbird - VariableDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Class - Variable​Declaration -

- -
public class VariableDeclaration: Declaration
-
-

Mockable variable declarations.

- -
-
- -
- - - - - - -%3 - - -VariableDeclaration - - -VariableDeclaration - - - - -Declaration - -Declaration - - -VariableDeclaration->Declaration - - - - -PropertyGetterDeclaration - -PropertyGetterDeclaration - - -PropertyGetterDeclaration->VariableDeclaration - - - - -PropertySetterDeclaration - -PropertySetterDeclaration - - -PropertySetterDeclaration->VariableDeclaration - - - - - - - - -
-

Subclasses

-
-
PropertyGetterDeclaration
-

Mockable property getter declarations.

-
-
PropertySetterDeclaration
-

Mockable property setter declarations.

-
-
-

Conforms To

-
-
Declaration
-

All mockable declaration types conform to this protocol.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/VerificationManager-94d5cc8/index.html b/docs/0.14.0/VerificationManager-94d5cc8/index.html deleted file mode 100755 index 1a67c5ef..00000000 --- a/docs/0.14.0/VerificationManager-94d5cc8/index.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - Mockingbird - VerificationManager - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

- Structure - Verification​Manager -

- -
public struct VerificationManager<InvocationType, ReturnType>
-
-

An intermediate object used for verifying declarations returned by verify.

- -
- -
-

Methods

- -
-

- was​Called(_:​) -

-
public func wasCalled(_ countMatcher: CountMatcher)
-
-

Verify that the mock received the invocation some number of times using a count matcher.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

A count matcher defining the number of invocations to verify.

-
-
-
-

- was​Called(_:​) -

-
public func wasCalled(_ times: Int = once)
-
-

Verify that the mock received the invocation an exact number of times.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

The exact number of invocations expected.

-
-
-
-

- was​Never​Called() -

-
public func wasNeverCalled()
-
-

Verify that the mock never received the invocation.

- -
-
-
-

- returning(_:​) -

-
public func returning(_ type: ReturnType.Type = ReturnType.self) -> Self
-
-

Disambiguate methods overloaded by return type.

- -
-
-

Declarations for methods overloaded by return type cannot type inference and should be -disambiguated.

- -
protocol Bird {
-  func getMessage<T>() throws -> T    // Overloaded generically
-  func getMessage() throws -> String  // Overloaded explicitly
-  func getMessage() throws -> Data
-}
-
-verify(bird.send(any()))
-  .returning(String.self)
-  .wasCalled()
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeReturn​Type.​Type

The return type of the declaration to verify.

-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/all.css b/docs/0.14.0/all.css deleted file mode 100755 index 68137abd..00000000 --- a/docs/0.14.0/all.css +++ /dev/null @@ -1 +0,0 @@ -:root{--system-red:#ff3b30;--system-orange:#ff9500;--system-yellow:#fc0;--system-green:#34c759;--system-teal:#5ac8fa;--system-blue:#007aff;--system-indigo:#5856d6;--system-purple:#af52de;--system-pink:#ff2d55;--system-gray:#8e8e93;--system-gray2:#aeaeb2;--system-gray3:#c7c7cc;--system-gray4:#d1d1d6;--system-gray5:#e5e5ea;--system-gray6:#f2f2f7;--label:#000;--secondary-label:#3c3c43;--tertiary-label:#48484a;--quaternary-label:#636366;--placeholder-text:#8e8e93;--link:#007aff;--separator:#e5e5ea;--opaque-separator:#c6c6c8;--system-fill:#787880;--secondary-system-fill:#787880;--tertiary-system-fill:#767680;--quaternary-system-fill:#747480;--system-background:#fff;--secondary-system-background:#f2f2f7;--tertiary-system-background:#fff;--secondary-system-grouped-background:#fff;--tertiary-system-grouped-background:#f2f2f7}@supports (color:color(display-p3 1 1 1)){:root{--system-red:color(display-p3 1 0.2314 0.1882);--system-orange:color(display-p3 1 0.5843 0);--system-yellow:color(display-p3 1 0.8 0);--system-green:color(display-p3 0.2039 0.7804 0.349);--system-teal:color(display-p3 0.3529 0.7843 0.9804);--system-blue:color(display-p3 0 0.4784 1);--system-indigo:color(display-p3 0.3451 0.3373 0.8392);--system-purple:color(display-p3 0.6863 0.3216 0.8706);--system-pink:color(display-p3 1 0.1765 0.3333);--system-gray:color(display-p3 0.5569 0.5569 0.5765);--system-gray2:color(display-p3 0.6824 0.6824 0.698);--system-gray3:color(display-p3 0.7804 0.7804 0.8);--system-gray4:color(display-p3 0.8196 0.8196 0.8392);--system-gray5:color(display-p3 0.898 0.898 0.9176);--system-gray6:color(display-p3 0.949 0.949 0.9686);--label:color(display-p3 0 0 0);--secondary-label:color(display-p3 0.2353 0.2353 0.2627);--tertiary-label:color(display-p3 0.2823 0.2823 0.2901);--quaternary-label:color(display-p3 0.4627 0.4627 0.5019);--placeholder-text:color(display-p3 0.5568 0.5568 0.5764);--link:color(display-p3 0 0.4784 1);--separator:color(display-p3 0.898 0.898 0.9176);--opaque-separator:color(display-p3 0.7765 0.7765 0.7843);--system-fill:color(display-p3 0.4706 0.4706 0.502);--secondary-system-fill:color(display-p3 0.4706 0.4706 0.502);--tertiary-system-fill:color(display-p3 0.4627 0.4627 0.502);--quaternary-system-fill:color(display-p3 0.4549 0.4549 0.502);--system-background:color(display-p3 1 1 1);--secondary-system-background:color(display-p3 0.949 0.949 0.9686);--tertiary-system-background:color(display-p3 1 1 1);--secondary-system-grouped-background:color(display-p3 1 1 1);--tertiary-system-grouped-background:color(display-p3 0.949 0.949 0.9686)}}:root{--large-title:600 32pt/39pt sans-serif;--title-1:600 26pt/32pt sans-serif;--title-2:600 20pt/25pt sans-serif;--title-3:500 18pt/23pt sans-serif;--headline:500 15pt/20pt sans-serif;--body:300 15pt/20pt sans-serif;--callout:300 14pt/19pt sans-serif;--subhead:300 13pt/18pt sans-serif;--footnote:300 12pt/16pt sans-serif;--caption-1:300 11pt/13pt sans-serif;--caption-2:300 11pt/13pt sans-serif}@media screen and (max-width:768px){:root{--large-title:600 27.2pt/33.15pt sans-serif;--title-1:600 22.1pt/27.2pt sans-serif;--title-2:600 17pt/21.25pt sans-serif;--title-3:500 15.3pt/19.55pt sans-serif;--headline:500 12.75pt/17pt sans-serif;--body:300 12.75pt/17pt sans-serif;--callout:300 11.9pt/16.15pt sans-serif;--subhead:300 11.05pt/15.3pt sans-serif;--footnote:300 10.2pt/13.6pt sans-serif;--caption-1:300 9.35pt/11.05pt sans-serif;--caption-2:300 9.35pt/11.05pt sans-serif}}:root{--icon-case:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%2389c5e6' height='90' rx='8' stroke='%236bb7e1' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M20.21 50c0-20.7 11.9-32.79 30.8-32.79 16 0 28.21 10.33 28.7 25.32H64.19C63.4 35 58.09 30.11 51 30.11c-8.79 0-14.37 7.52-14.37 19.82s5.54 20 14.41 20c7.08 0 12.22-4.66 13.23-12.09h15.52c-.74 15.07-12.43 25-28.78 25C32 82.81 20.21 70.72 20.21 50z' fill='%23fff'/%3E%3C/svg%3E");--icon-class:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%239b98e6' height='90' rx='8' stroke='%235856d6' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='m20.21 50c0-20.7 11.9-32.79 30.8-32.79 16 0 28.21 10.33 28.7 25.32h-15.52c-.79-7.53-6.1-12.42-13.19-12.42-8.79 0-14.37 7.52-14.37 19.82s5.54 20 14.41 20c7.08 0 12.22-4.66 13.23-12.09h15.52c-.74 15.07-12.43 25-28.78 25-19.01-.03-30.8-12.12-30.8-32.84z' fill='%23fff'/%3E%3C/svg%3E");--icon-enumeration:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%23eca95b' height='90' rx='8' stroke='%23e89234' stroke-miterlimit='10' stroke-width='4' width='90' x='5.17' y='5'/%3E%3Cpath d='M71.9 81.71H28.43V18.29H71.9v13H44.56v12.62h25.71v11.87H44.56V68.7H71.9z' fill='%23fff'/%3E%3C/svg%3E");--icon-extension:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%23eca95b' height='90' rx='8' stroke='%23e89234' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cg fill='%23fff'%3E%3Cpath d='M54.43 81.93H20.51V18.07h33.92v12.26H32.61v13.8h20.45v11.32H32.61v14.22h21.82zM68.74 74.58h-.27l-2.78 7.35h-7.28L64 69.32l-6-12.54h8l2.74 7.3h.27l2.76-7.3h7.64l-6.14 12.54 5.89 12.61h-7.64z'/%3E%3C/g%3E%3C/svg%3E");--icon-function:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%237ac673' height='90' rx='8' stroke='%235bb74f' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M24.25 75.66A5.47 5.47 0 0130 69.93c1.55 0 3.55.41 6.46.41 3.19 0 4.78-1.55 5.46-6.65l1.5-10.14h-9.34a6 6 0 110-12h11.1l1.09-7.27C47.82 23.39 54.28 17.7 64 17.7c6.69 0 11.74 1.77 11.74 6.64A5.47 5.47 0 0170 30.07c-1.55 0-3.55-.41-6.46-.41-3.14 0-4.73 1.51-5.46 6.65l-.78 5.27h11.44a6 6 0 11.05 12H55.6l-1.78 12.11C52.23 76.61 45.72 82.3 36 82.3c-6.7 0-11.75-1.77-11.75-6.64z' fill='%23fff'/%3E%3C/svg%3E");--icon-method:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%235a98f8' height='90' rx='8' stroke='%232974ed' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M70.61 81.71v-39.6h-.31l-15.69 39.6h-9.22l-15.65-39.6h-.35v39.6H15.2V18.29h18.63l16 41.44h.36l16-41.44H84.8v63.42z' fill='%23fff'/%3E%3C/svg%3E");--icon-property:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%2389c5e6' height='90' rx='8' stroke='%236bb7e1' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M52.31 18.29c13.62 0 22.85 8.84 22.85 22.46s-9.71 22.37-23.82 22.37H41v18.59H24.84V18.29zM41 51h7c6.85 0 10.89-3.56 10.89-10.2S54.81 30.64 48 30.64h-7z' fill='%23fff'/%3E%3C/svg%3E");--icon-protocol:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%23ff6682' height='90' rx='8' stroke='%23ff2d55' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cg fill='%23fff'%3E%3Cpath d='M46.28 18.29c11.84 0 20 8.66 20 21.71s-8.44 21.71-20.6 21.71H34.87v20H22.78V18.29zM34.87 51.34H43c6.93 0 11-4 11-11.29S50 28.8 43.07 28.8h-8.2zM62 57.45h8v4.77h.16c.84-3.45 2.54-5.12 5.17-5.12a5.06 5.06 0 011.92.35V65a5.69 5.69 0 00-2.39-.51c-3.08 0-4.66 1.74-4.66 5.12v12.1H62z'/%3E%3C/g%3E%3C/svg%3E");--icon-structure:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%23b57edf' height='90' rx='8' stroke='%239454c2' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M38.38 63c.74 4.53 5.62 7.16 11.82 7.16s10.37-2.81 10.37-6.68c0-3.51-2.73-5.31-10.24-6.76l-6.5-1.23C31.17 53.14 24.62 47 24.62 37.28c0-12.22 10.59-20.09 25.18-20.09 16 0 25.36 7.83 25.53 19.91h-15c-.26-4.57-4.57-7.29-10.42-7.29s-9.31 2.63-9.31 6.37c0 3.34 2.9 5.18 9.8 6.5l6.5 1.23C70.46 46.51 76.61 52 76.61 62c0 12.74-10 20.83-26.72 20.83-15.82 0-26.28-7.3-26.5-19.78z' fill='%23fff'/%3E%3C/svg%3E");--icon-typealias:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%237ac673' height='90' rx='8' stroke='%235bb74f' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M42 81.71V31.3H24.47v-13h51.06v13H58v50.41z' fill='%23fff'/%3E%3C/svg%3E");--icon-variable:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%237ac673' height='90' rx='8' stroke='%235bb74f' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M39.85 81.71L19.63 18.29H38l12.18 47.64h.35L62.7 18.29h17.67L60.15 81.71z' fill='%23fff'/%3E%3C/svg%3E")}body,button,input,select,textarea{-moz-font-feature-settings:"kern";-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;direction:ltr;font-synthesis:none;text-align:left}h1:first-of-type,h2:first-of-type,h3:first-of-type,h4:first-of-type,h5:first-of-type,h6:first-of-type{margin-top:0}h1 code,h2 code,h3 code,h4 code,h5 code,h6 code{font-family:inherit;font-weight:inherit}h1 img,h2 img,h3 img,h4 img,h5 img,h6 img{margin:0 .5em .2em 0;vertical-align:middle;display:inline-block}h1+*,h2+*,h3+*,h4+*,h5+*,h6+*{margin-top:.8em}img+h1{margin-top:.5em}img+h1,img+h2,img+h3,img+h4,img+h5,img+h6{margin-top:.3em}:is(h1,h2,h3,h4,h5,h6)+:is(h1,h2,h3,h4,h5,h6){margin-top:.4em}:matches(h1,h2,h3,h4,h5,h6)+:matches(h1,h2,h3,h4,h5,h6){margin-top:.4em}:is(p,ul,ol)+:is(h1,h2,h3,h4,h5,h6){margin-top:1.6em}:matches(p,ul,ol)+:matches(h1,h2,h3,h4,h5,h6){margin-top:1.6em}:is(p,ul,ol)+*{margin-top:.8em}:matches(p,ul,ol)+*{margin-top:.8em}ol,ul{margin-left:1.17647em}:matches(ul,ol) :matches(ul,ol){margin-bottom:0;margin-top:0}nav h2{color:#3c3c43;color:var(--secondary-label);font-size:1rem;font-feature-settings:"c2sc";font-variant:small-caps;font-weight:600;text-transform:uppercase}nav ol,nav ul{margin:0;list-style:none}nav li li{font-size:smaller}a:link,a:visited{text-decoration:none}a:hover{text-decoration:underline}a:active{text-decoration:none}b,strong{font-weight:600}.discussion,.summary{font:300 14pt/19pt sans-serif;font:var(--callout)}article>.discussion{margin-bottom:2em}.discussion .highlight{padding:1em;text-indent:0}cite,dfn,em,i{font-style:italic}:matches(h1,h2,h3) sup{font-size:.4em}sup a{color:inherit;vertical-align:inherit}sup a:hover{color:#007aff;color:var(--link);text-decoration:none}sub{line-height:1}abbr{border:0}:lang(ja),:lang(ko),:lang(th),:lang(zh){font-style:normal}:lang(ko){word-break:keep-all}form fieldset{margin:1em auto;max-width:450px;width:95%}form label{display:block;font-size:1em;font-weight:400;line-height:1.5em;margin-bottom:14px;position:relative;width:100%}input[type=email],input[type=number],input[type=password],input[type=tel],input[type=text],input[type=url],textarea{border-radius:4px;border:1px solid #e5e5ea;border:1px solid var(--separator);color:#333;font-family:inherit;font-size:100%;font-weight:400;height:34px;margin:0;padding:0 1em;position:relative;vertical-align:top;width:100%;z-index:1}input[type=email],input [type=email]:focus,input[type=number],input [type=number]:focus,input[type=password],input [type=password]:focus,input[type=tel],input [type=tel]:focus,input[type=text],input [type=text]:focus,input[type=url],input [type=url]:focus,textarea,textarea:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none}input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,textarea:focus{border-color:#08c;box-shadow:0 0 0 3px rgba(0,136,204,.3);outline:0;z-index:9}input[type=email]:-moz-read-only,input[type=number]:-moz-read-only,input[type=password]:-moz-read-only,input[type=tel]:-moz-read-only,input[type=text]:-moz-read-only,input[type=url]:-moz-read-only,textarea:-moz-read-only{background:none;border:none;box-shadow:none;padding-left:0}input[type=email]:read-only,input[type=number]:read-only,input[type=password]:read-only,input[type=tel]:read-only,input[type=text]:read-only,input[type=url]:read-only,textarea:read-only{background:none;border:none;box-shadow:none;padding-left:0}::-webkit-input-placeholder{color:#8e8e93;color:var(--placeholder-text)}::-moz-placeholder{color:#8e8e93;color:var(--placeholder-text)}:-ms-input-placeholder{color:#8e8e93;color:var(--placeholder-text)}::-ms-input-placeholder{color:#8e8e93;color:var(--placeholder-text)}::placeholder{color:#8e8e93;color:var(--placeholder-text)}textarea{-webkit-overflow-scrolling:touch;line-height:1.4737;min-height:134px;overflow-y:auto;resize:vertical;transform:translateZ(0)}textarea,textarea:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none}select{background:transparent;border-radius:4px;border:none;cursor:pointer;font-family:inherit;font-size:1em;height:34px;margin:0;padding:0 1em;width:100%}select,select:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none}select:focus{border-color:#08c;box-shadow:0 0 0 3px rgba(0,136,204,.3);outline:0;z-index:9}input[type=file]{background:#fafafa;border-radius:4px;color:#333;cursor:pointer;font-family:inherit;font-size:100%;height:34px;margin:0;padding:6px 1em;position:relative;vertical-align:top;width:100%;z-index:1}input[type=file]:focus{border-color:#08c;outline:0;box-shadow:0 0 0 3px rgba(0,136,204,.3);z-index:9}button,button:focus,input[type=file]:focus,input[type=file]:focus:focus,input[type=reset],input[type=reset]:focus,input[type=submit],input[type=submit]:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none}:matches(button,input[type=reset],input[type=submit]){background-color:#e3e3e3;background:linear-gradient(#fff,#e3e3e3);border-color:#d6d6d6;color:#0070c9}:matches(button,input[type=reset],input[type=submit]):hover{background-color:#eee;background:linear-gradient(#fff,#eee);border-color:#d9d9d9}:matches(button,input[type=reset],input[type=submit]):active{background-color:#dcdcdc;background:linear-gradient(#f7f7f7,#dcdcdc);border-color:#d0d0d0}:matches(button,input[type=reset],input[type=submit]):disabled{background-color:#e3e3e3;background:linear-gradient(#fff,#e3e3e3);border-color:#d6d6d6;color:#0070c9}body{background:var(--system-grouped-background);color:#000;color:var(--label);font-family:ui-system,-apple-system,BlinkMacSystemFont,sans-serif;font:300 15pt/20pt sans-serif;font:var(--body)}h1{font:600 32pt/39pt sans-serif;font:var(--large-title)}h2{font:600 20pt/25pt sans-serif;font:var(--title-2)}h3{font:500 18pt/23pt sans-serif;font:var(--title-3)}[role=article]>h3,h4,h5,h6{font:500 15pt/20pt sans-serif;font:var(--headline)}.summary+h4,.summary+h5,.summary+h6{margin-top:2em;margin-bottom:0}a{color:#007aff;color:var(--link)}label{font:300 14pt/19pt sans-serif;font:var(--callout)}input,label{display:block}input{margin-bottom:1em}hr{border:none;border-top:1px solid #e5e5ea;border-top:1px solid var(--separator);margin:1em 0}table{width:100%;font:300 11pt/13pt sans-serif;font:var(--caption-1);caption-side:bottom;margin-bottom:2em}td,th{padding:0 1em}th{font-weight:600;text-align:left}thead th{border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator)}tr:last-of-type td,tr:last-of-type th{border-bottom:none}td,th{border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator);color:#3c3c43;color:var(--secondary-label)}caption{color:#48484a;color:var(--tertiary-label);font:300 11pt/13pt sans-serif;font:var(--caption-2);margin-top:2em;text-align:left}.graph text,[role=article]>h3,code,dl dt[class],nav li[class]{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-weight:300}.graph>polygon{display:none}.graph text{fill:currentColor!important}.graph ellipse,.graph path,.graph polygon,.graph rect{stroke:currentColor!important}body{width:90vw;max-width:1280px;margin:1em auto}body>header{font:600 26pt/32pt sans-serif;font:var(--title-1);padding:.5em 0}body>header a{color:#000;color:var(--label)}body>header span{font-weight:400}body>header sup{text-transform:uppercase;font-size:small;font-weight:300;letter-spacing:.1ch}body>footer,body>header sup{color:#3c3c43;color:var(--secondary-label)}body>footer{clear:both;padding:1em 0;font:300 11pt/13pt sans-serif;font:var(--caption-1)}@media screen and (max-width:768px){body>nav{display:none}}main,nav{overflow-x:auto}main{background:#fff;background:var(--system-background);border-radius:8px;padding:0}main section{border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator);margin-bottom:2em;padding-bottom:1em}main section:last-of-type{border-bottom:none;margin-bottom:0}nav{float:right;margin-left:1em;max-height:100vh;overflow:auto;padding:0 1em 3em;position:-webkit-sticky;position:sticky;top:1em;width:20vw}nav a{color:#3c3c43;color:var(--secondary-label)}nav ul a{color:#48484a;color:var(--tertiary-label)}nav ol,nav ul{padding:0}nav ul{font:300 14pt/19pt sans-serif;font:var(--callout);margin-bottom:1em}nav ol>li>a{display:block;font-size:smaller;font:500 15pt/20pt sans-serif;font:var(--headline);margin:.5em 0}nav li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}blockquote{--link:var(--secondary-label);border-left:4px solid #e5e5ea;border-left:4px solid var(--separator);color:#3c3c43;color:var(--secondary-label);font-size:smaller;margin-left:0;padding-left:2em}blockquote a{text-decoration:underline}article{padding:2em 0 1em}article>.summary{border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator);margin-bottom:2em;padding-bottom:1em}article>.summary:last-child{border-bottom:none}.parameters th{text-align:right}.parameters td{color:#3c3c43;color:var(--secondary-label)}.parameters th+td{text-align:center}dl{display:inline-block;margin-top:0}dt{font:500 15pt/20pt sans-serif;font:var(--headline)}dd{margin-left:2em;margin-bottom:1em}dd p{margin-top:0}.highlight{background:#f2f2f7;background:var(--secondary-system-background);border-radius:8px;font-size:smaller;margin-bottom:2em;overflow-x:auto;padding:1em 1em 1em 3em;text-indent:-2em}.highlight .p{white-space:nowrap}.highlight .placeholder{color:#000;color:var(--label)}.highlight a{text-decoration:underline;color:#8e8e93;color:var(--placeholder-text)}.highlight .attribute,.highlight .keyword,.highlight .literal{color:#af52de;color:var(--system-purple)}.highlight .number{color:#007aff;color:var(--system-blue)}.highlight .declaration{color:#5ac8fa;color:var(--system-teal)}.highlight .type{color:#5856d6;color:var(--system-indigo)}.highlight .directive{color:#ff9500;color:var(--system-orange)}.highlight .comment{color:#8e8e93;color:var(--system-gray)}main summary:hover{text-decoration:underline}figure{margin:2em 0;padding:1em 0}figure svg{max-width:100%;height:auto!important;margin:0 auto;display:block}@media screen and (max-width:768px){#relationships figure{display:none}}h1 small{font-size:.5em;line-height:1.5;display:block;font-weight:400;color:#636366;color:var(--quaternary-label)}dd code,li code,p code{font-size:smaller;color:#3c3c43;color:var(--secondary-label)}a code{text-decoration:underline}dl dt[class],nav li[class],section>[role=article][class]{background-image:var(--background-image);background-size:1em;background-repeat:no-repeat;background-position:left .125em}nav li[class]{background-position:left .25em}section>[role=article]{margin-bottom:1em;padding-bottom:1em;border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator);padding-left:2em}section>[role=article]:last-of-type{margin-bottom:0;padding-bottom:0;border-bottom:none}dl dt[class],nav li[class]{list-style:none;text-indent:2em;margin-bottom:.5em}nav li[class]{text-indent:1.5em;margin-bottom:1em}.case,.enumeration_case{--background-image:var(--icon-case);--link:var(--system-teal)}.class{--background-image:var(--icon-class);--link:var(--system-indigo)}.enumeration{--background-image:var(--icon-enumeration)}.enumeration,.extension{--link:var(--system-orange)}.extension{--background-image:var(--icon-extension)}.function{--background-image:var(--icon-function);--link:var(--system-green)}.initializer,.method{--background-image:var(--icon-method);--link:var(--system-blue)}.property{--background-image:var(--icon-property);--link:var(--system-teal)}.protocol{--background-image:var(--icon-protocol);--link:var(--system-pink)}.structure{--background-image:var(--icon-structure);--link:var(--system-purple)}.typealias{--background-image:var(--icon-typealias)}.typealias,.variable{--link:var(--system-green)}.variable{--background-image:var(--icon-variable)}.unknown{--link:var(--quaternary-label);color:#007aff;color:var(--link)} \ No newline at end of file diff --git a/docs/0.14.0/any(_:)-da61986/index.html b/docs/0.14.0/any(_:)-da61986/index.html deleted file mode 100755 index d30842aa..00000000 --- a/docs/0.14.0/any(_:)-da61986/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Mockingbird - any(_:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -any(_:​) -

- -
public func any<T>(_ type: T.Type = T.self) -> T
-
-

Matches all argument values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the wildcard argument matcher any as a type safe placeholder for matching any argument -value.

- -
given(bird.canChirp(volume: any())).willReturn(true)
-given(bird.setName(any())).will { print($0) }
-
-print(bird.canChirp(volume: 10))  // Prints "true"
-bird.name = "Ryan"  // Prints "Ryan"
-
-verify(bird.canChirp(volume: any())).wasCalled()
-verify(bird.setName(any())).wasCalled()
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ message: T)    // Overloaded generically
-  func send(_ message: String)  // Overloaded explicitly
-  func send(_ message: Data)
-}
-
-given(bird.send(any(String.self))).will { print($0) }
-
-bird.send("Hello")  // Prints "Hello"
-
-verify(bird.send(any(String.self))).wasCalled()
-verify(bird.send(any(Data.self))).wasNeverCalled()
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/any(_:containing:)-0e18f78/index.html b/docs/0.14.0/any(_:containing:)-0e18f78/index.html deleted file mode 100755 index e8e4e28e..00000000 --- a/docs/0.14.0/any(_:containing:)-0e18f78/index.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - Mockingbird - any(_:containing:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -any(_:​containing:​) -

- -
public func any<T: Collection>(_ type: T.Type = T.self, containing values: T.Element) -> T
-
-

Matches any collection containing all of the values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(containing:) to match collections that contain all specified -values.

- -
protocol Bird {
-  func send(_ messages: [String])
-}
-
-given(bird.send(any(containing: "Hi", "Hello")))
-  .will { print($0) }
-
-bird.send(["Hi", "Hello"])  // Prints ["Hi", "Hello"]
-bird.send(["Hi", "Bye"])    // Error: Missing stubbed implementation
-bird.send(["Bye"])          // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [T])    // Overloaded generically
-  func send(_ messages: [String])  // Overloaded explicitly
-  func send(_ messages: [Data])
-}
-
-given(bird.send(any([String].self, containing: ["Hi", "Hello"])))
-  .will { print($0) }
-
-bird.send(["Hi", "Hello"])       // Prints ["Hi", "Hello"]
-bird.send([Data([1]), Data(2)])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
valuesT.​Element

A set of values that must all exist in the collection to match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/any(_:containing:)-365e26e/index.html b/docs/0.14.0/any(_:containing:)-365e26e/index.html deleted file mode 100755 index bb47a8a6..00000000 --- a/docs/0.14.0/any(_:containing:)-365e26e/index.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - Mockingbird - any(_:containing:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -any(_:​containing:​) -

- -
public func any<K, V>(_ type: Dictionary<K, V>.Type = Dictionary<K, V>.self, containing values: V) -> Dictionary<K, V>
-
-

Matches any dictionary containing all of the values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(containing:) to match dictionaries that contain all specified -values.

- -
protocol Bird {
-  func send(_ messages: [UUID: String])
-}
-
-given(bird.send(any(containing: "Hi", "Hello")))
-  .will { print($0) }
-
-bird.send([
-  UUID(): "Hi",
-  UUID(): "Hello",
-])  // Prints ["Hi", "Hello"]
-
-bird.send([
-  UUID(): "Hi",
-  UUID(): "Bye",
-])  // Error: Missing stubbed implementation
-
-bird.send([
-  UUID(): "Bye",
-]) // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [UUID: T])    // Overloaded generically
-  func send(_ messages: [UUID: String])  // Overloaded explicitly
-  func send(_ messages: [UUID: Data])
-}
-
-given(bird.send(any([UUID: String].self, containing: "Hi", "Hello")))
-  .will { print($0) }
-
-bird.send([
-  UUID(): "Hi",
-  UUID(): "Hello",
-])  // Prints ["Hi", "Hello"]
-
-bird.send([
-  UUID(): Data([1]),
-  UUID(): Data([2]),
-])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeDictionary<K, V>.​Type

The parameter type used to disambiguate overloaded methods.

-
valuesV

A set of values that must all exist in the dictionary to match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/any(_:count:)-860fd11/index.html b/docs/0.14.0/any(_:count:)-860fd11/index.html deleted file mode 100755 index 60b2490a..00000000 --- a/docs/0.14.0/any(_:count:)-860fd11/index.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - Mockingbird - any(_:count:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -any(_:​count:​) -

- -
public func any<T: Collection>(_ type: T.Type = T.self, count countMatcher: CountMatcher) -> T
-
-

Matches any collection with a specific number of elements.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(count:) to match collections with a specific number of elements.

- -
protocol Bird {
-  func send(_ messages: [String])
-}
-
-given(bird.send(any(count: 2))).will { print($0) }
-
-bird.send(["Hi", "Hello"])  // Prints ["Hi", "Hello"]
-bird.send(["Hi"])           // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [T])    // Overloaded generically
-  func send(_ messages: [String])  // Overloaded explicitly
-  func send(_ messages: [Data])
-}
-
-given(bird.send(any([String].self, count: 2)))
-  .will { print($0) }
-
-bird.send(["Hi", "Hello"])         // Prints ["Hi", "Hello"]
-bird.send([Data([1]), Data([2])])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
count​MatcherCount​Matcher

A count matcher defining the number of acceptable elements in the collection.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/any(_:keys:)-e7f89d4/index.html b/docs/0.14.0/any(_:keys:)-e7f89d4/index.html deleted file mode 100755 index 33ba838c..00000000 --- a/docs/0.14.0/any(_:keys:)-e7f89d4/index.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - Mockingbird - any(_:keys:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -any(_:​keys:​) -

- -
public func any<K, V>(_ type: Dictionary<K, V>.Type = Dictionary<K, V>.self, keys: K) -> Dictionary<K, V>
-
-

Matches any dictionary containing all of the keys.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(keys:) to match dictionaries that contain all specified keys.

- -
protocol Bird {
-  func send(_ messages: [UUID: String])
-}
-
-let messageId1 = UUID()
-let messageId2 = UUID()
-given(bird.send(any(containing: messageId1, messageId2)))
-  .will { print($0) }
-
-bird.send([
-  messageId1: "Hi",
-  messageId2: "Hello",
-])  // Prints ["Hi", "Hello"]
-
-bird.send([
-  UUID(): "Hi",
-  UUID(): "Hello",
-])  // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [UUID: T])    // Overloaded generically
-  func send(_ messages: [UUID: String])  // Overloaded explicitly
-  func send(_ messages: [UUID: Data])
-}
-
-let messageId1 = UUID()
-let messageId2 = UUID()
-given(bird.send(any([UUID: String].self, containing: messageId1, messageId2)))
-  .will { print($0) }
-
-bird.send([
-  messageId1: "Hi",
-  messageId2: "Hello",
-])  // Prints ["Hi", "Hello"]
-
-bird.send([
-  messageId1: Data([1]),
-  messageId2: Data([2]),
-])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeDictionary<K, V>.​Type

The parameter type used to disambiguate overloaded methods.

-
keysK

A set of keys that must all exist in the dictionary to match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/any(_:of:)-89cb3ec/index.html b/docs/0.14.0/any(_:of:)-89cb3ec/index.html deleted file mode 100755 index 3391f367..00000000 --- a/docs/0.14.0/any(_:of:)-89cb3ec/index.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - Mockingbird - any(_:of:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -any(_:​of:​) -

- -
public func any<T: AnyObject>(_ type: T.Type = T.self, of objects: T) -> T
-
-

Matches argument values identical to any of the provided values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(of:) to match objects identical to one or more of the specified -values.

- -
// Reference type
-class Location {
-  let name: String
-  init(name: String) { self.name = name }
-}
-
-protocol Bird {
-  func fly(to location: Location)
-}
-
-let home = Location(name: "Home")
-let work = Location("Work")
-given(bird.fly(to: any(of: home, work)))
-  .will { print($0.name) }
-
-bird.fly(to: home)  // Prints "Home"
-bird.fly(to: work)  // Prints "Work"
-
-let hawaii = Location("Hawaii")
-bird.fly(to: hawaii))  // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func fly<T>(to location: T)        // Overloaded generically
-  func fly(to location: Location)    // Overloaded explicitly
-  func fly(to locationName: String)
-}
-
-given(bird.fly(to: any(String.self, of: "Home", "Work")))
-  .will { print($0) }
-
-bird.send("Home")    // Prints "Hi"
-bird.send("Work")    // Prints "Hello"
-bird.send("Hawaii")  // Error: Missing stubbed implementation
-
- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
objectsT

A set of non-equatable objects that should result in a match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/any(_:of:)-e376f19/index.html b/docs/0.14.0/any(_:of:)-e376f19/index.html deleted file mode 100755 index 5200badb..00000000 --- a/docs/0.14.0/any(_:of:)-e376f19/index.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - Mockingbird - any(_:of:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -any(_:​of:​) -

- -
public func any<T: Equatable>(_ type: T.Type = T.self, of objects: T) -> T
-
-

Matches argument values equal to any of the provided values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(of:) to match Equatable argument values equal to one or more of -the specified values.

- -
given(bird.canChirp(volume: any(of: 1, 3)))
-  .willReturn(true)
-
-given(bird.canChirp(volume: any(of: 2, 4)))
-  .willReturn(false)
-
-print(bird.canChirp(volume: 1))  // Prints "true"
-print(bird.canChirp(volume: 2))  // Prints "false"
-print(bird.canChirp(volume: 3))  // Prints "true"
-print(bird.canChirp(volume: 4))  // Prints "false"
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ message: T)    // Overloaded generically
-  func send(_ message: String)  // Overloaded explicitly
-  func send(_ message: Data)
-}
-
-given(bird.send(any(String.self, of: "Hi", "Hello")))
-  .will { print($0) }
-
-bird.send("Hi")     // Prints "Hi"
-bird.send("Hello")  // Prints "Hello"
-bird.send("Bye")    // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
objectsT

A set of equatable objects that should result in a match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/any(_:where:)-ea2d92e/index.html b/docs/0.14.0/any(_:where:)-ea2d92e/index.html deleted file mode 100755 index 9956e5de..00000000 --- a/docs/0.14.0/any(_:where:)-ea2d92e/index.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - Mockingbird - any(_:where:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -any(_:​where:​) -

- -
public func any<T>(_ type: T.Type = T.self, where predicate: @escaping (_ value: T) -> Bool) -> T
-
-

Matches any argument values where the predicate returns true.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(where:) to match objects with custom equality logic. This is -particularly useful for parameter types that do not conform to Equatable.

- -
// Value type not explicitly conforming to `Equatable`
-struct Fruit {
-  let size: Int
-}
-
-protocol Bird {
-  func eat(_ fruit: Fruit)
-}
-
-given(bird.eat(any(where: { $0.size < 100 })))
-  .will { print($0.size) }
-
-let apple = Fruit(size: 42)
-bird.eat(apple)  // Prints "42"
-
-let pear = Fruit(size: 9001)
-bird.eat(pear)   // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func eat<T>(_ object: T)     // Overloaded generically
-  func eat(_ fruit: Fruit)     // Overloaded explicitly
-  func eat(_ fruits: [Fruit])
-}
-
-given(bird.eat(any(Fruit.self, where: { $0.size < 100 })))
-  .will { print($0) }
-
-let apple = Fruit(size: 42)
-bird.eat(apple)    // Prints "42"
-bird.eat("Apple")  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
predicate@escaping (_ value:​ T) -> Bool

A closure that takes a value and returns true if it represents a match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/around(_:tolerance:)-831b19f/index.html b/docs/0.14.0/around(_:tolerance:)-831b19f/index.html deleted file mode 100755 index 5c0a6da8..00000000 --- a/docs/0.14.0/around(_:tolerance:)-831b19f/index.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - Mockingbird - around(_:tolerance:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -around(_:​tolerance:​) -

- -
public func around<T: FloatingPoint>(_ value: T, tolerance: T) -> T
-
-

Matches floating point arguments within some tolerance.

- -
-
-

Mathematical operations on floating point numbers can cause loss of precision. Fuzzily match floating point arguments instead of using exact values to increase the robustness of tests.

- -
protocol Bird {
-  func canChirp(volume: Double) -> Bool
-}
-
-given(bird.canChirp(volume: around(42.0, tolerance: 0.1)))
-  .willReturn(true)
-
-print(bird.canChirp(volume: 42.0))     // Prints "true"
-print(bird.canChirp(volume: 42.0999))  // Prints "true"
-print(bird.canChirp(volume: 42.1))     // Prints "false"
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
valueT

The expected value.

-
toleranceT

Only matches if the absolute difference is strictly less than this value.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/atLeast(_:)-c832002/index.html b/docs/0.14.0/atLeast(_:)-c832002/index.html deleted file mode 100755 index 272ca46f..00000000 --- a/docs/0.14.0/atLeast(_:)-c832002/index.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - Mockingbird - atLeast(_:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -at​Least(_:​) -

- -
public func atLeast(_ times: Int) -> CountMatcher
-
-

Matches greater than or equal to some count.

- -
-
-

The atLeast count matcher can be used to verify that the actual number of invocations received -by a mock is greater than or equal to the expected number of invocations.

- -
// Given two invocations (n = 2)
-bird.fly()
-bird.fly()
-
-verify(bird.fly()).wasCalled(atLeast(1))  // Passes
-verify(bird.fly()).wasCalled(atLeast(2))  // Passes
-verify(bird.fly()).wasCalled(atLeast(3))  // Fails (n < 3)
-
-

You can combine count matchers with adverbial counts for improved readability.

- -
verify(bird.fly()).wasCalled(atLeast(once))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An inclusive lower bound.

-
-

Returns

-

A count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/atMost(_:)-a2b82d3/index.html b/docs/0.14.0/atMost(_:)-a2b82d3/index.html deleted file mode 100755 index 62d45126..00000000 --- a/docs/0.14.0/atMost(_:)-a2b82d3/index.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - Mockingbird - atMost(_:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -at​Most(_:​) -

- -
public func atMost(_ times: Int) -> CountMatcher
-
-

Matches less than or equal to some count.

- -
-
-

The atMost count matcher can be used to verify that the actual number of invocations received -by a mock is less than or equal to the expected number of invocations.

- -
// Given two invocations (n = 2)
-bird.fly()
-bird.fly()
-
-verify(bird.fly()).wasCalled(atMost(1))  // Fails (n > 1)
-verify(bird.fly()).wasCalled(atMost(2))  // Passes
-verify(bird.fly()).wasCalled(atMost(3))  // Passes
-
-

You can combine count matchers with adverbial counts for improved readability.

- -
verify(bird.fly()).wasCalled(atMost(once))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An inclusive upper bound.

-
-

Returns

-

A count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/between(_:)-cfca747/index.html b/docs/0.14.0/between(_:)-cfca747/index.html deleted file mode 100755 index 59388807..00000000 --- a/docs/0.14.0/between(_:)-cfca747/index.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - Mockingbird - between(_:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -between(_:​) -

- -
public func between(_ range: Range<Int>) -> CountMatcher
-
-

Matches counts that fall within some range.

- -
-
-

The between count matcher can be used to verify that the actual number of invocations received -by a mock is within an inclusive range of expected invocations.

- -
// Given two invocations (n = 2)
-bird.fly()
-bird.fly()
-
-verify(bird.fly()).wasCalled(between(1...2))  // Passes
-verify(bird.fly()).wasCalled(between(3...4))  // Fails (3 &nlt; n < 4)
-
-

You can combine count matchers with adverbial counts for improved readability.

- -
verify(bird.fly()).wasCalled(between(once...twice))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
rangeRange<Int>

An closed integer range.

-
-

Returns

-

A count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/clearDefaultValues(on:)-112773d/index.html b/docs/0.14.0/clearDefaultValues(on:)-112773d/index.html deleted file mode 100755 index d20d04f9..00000000 --- a/docs/0.14.0/clearDefaultValues(on:)-112773d/index.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - Mockingbird - clearDefaultValues(on:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -clear​Default​Values(on:​) -

- -
public func clearDefaultValues(on mocks: Mock)
-
-

Remove all registered default values.

- -
-
-

Partially reset a set of mocks during test runs by removing all registered default values.

- -
let bird = mock(Bird.self)
-bird.useDefaultValues(from: .standardProvider)
-
-print(bird.name)  // Prints ""
-verify(bird.getName()).wasCalled()  // Passes
-
-clearDefaultValues(on: bird)
-
-print(bird.name)  // Error: Missing stubbed implementation
-verify(bird.getName()).wasCalled()  // Passes
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mocksMock

A set of mocks to reset.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/clearInvocations(on:)-4120e8f/index.html b/docs/0.14.0/clearInvocations(on:)-4120e8f/index.html deleted file mode 100755 index d6c46c77..00000000 --- a/docs/0.14.0/clearInvocations(on:)-4120e8f/index.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - Mockingbird - clearInvocations(on:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -clear​Invocations(on:​) -

- -
public func clearInvocations(on mocks: Mock)
-
-

Remove all recorded invocations.

- -
-
-

Partially reset a set of mocks during test runs by removing all recorded invocations.

- -
let bird = mock(Bird.self)
-given(bird.getName()).willReturn("Ryan")
-
-print(bird.name)  // Prints "Ryan"
-verify(bird.getName()).wasCalled()  // Passes
-
-clearInvocations(on: bird)
-
-print(bird.name)  // Prints "Ryan"
-verify(bird.getName()).wasCalled()  // Error: Got 0 invocations
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mocksMock

A set of mocks to reset.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/clearStubs(on:)-f985ed7/index.html b/docs/0.14.0/clearStubs(on:)-f985ed7/index.html deleted file mode 100755 index b0a63172..00000000 --- a/docs/0.14.0/clearStubs(on:)-f985ed7/index.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - Mockingbird - clearStubs(on:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -clear​Stubs(on:​) -

- -
public func clearStubs(on mocks: Mock)
-
-

Remove all concrete stubs.

- -
-
-

Partially reset a set of mocks during test runs by removing all stubs.

- -
let bird = mock(Bird.self)
-given(bird.getName()).willReturn("Ryan")
-
-print(bird.name)  // Prints "Ryan"
-verify(bird.getName()).wasCalled()  // Passes
-
-clearStubs(on: bird)
-
-print(bird.name)  // Error: Missing stubbed implementation
-verify(bird.getName()).wasCalled()  // Passes
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mocksMock

A set of mocks to reset.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/eventually(_:_:)-28d4191/index.html b/docs/0.14.0/eventually(_:_:)-28d4191/index.html deleted file mode 100755 index 455d8f0c..00000000 --- a/docs/0.14.0/eventually(_:_:)-28d4191/index.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - Mockingbird - eventually(_:_:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -eventually(_:​_:​) -

- -
public func eventually(_ description: String? = nil, _ block: () -> Void) -> XCTestExpectation
-
-

Create a deferrable test expectation from a block containing verification calls.

- -
-
-

Mocked methods that are invoked asynchronously can be verified using an eventually block which -returns an XCTestExpectation.

- -
DispatchQueue.main.async {
-  Tree(with: bird).shake()
-}
-
-let expectation =
-  eventually {
-    verify(bird.fly()).wasCalled()
-    verify(bird.chirp()).wasCalled()
-  }
-
-wait(for: [expectation], timeout: 1.0)
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
descriptionString?

An optional description for the created XCTestExpectation.

-
block() -> Void

A block containing verification calls.

-
-

Returns

-

An XCTestExpectation that fulfilles once all verifications in the block are met.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/exactly(_:)-47abdfc/index.html b/docs/0.14.0/exactly(_:)-47abdfc/index.html deleted file mode 100755 index 9c84339a..00000000 --- a/docs/0.14.0/exactly(_:)-47abdfc/index.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - Mockingbird - exactly(_:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -exactly(_:​) -

- -
public func exactly(_ times: Int) -> CountMatcher
-
-

Matches an exact count.

- -
-
-

The exactly count matcher can be used to verify that the actual number of invocations received -by a mock equals the expected number of invocations.

- -
// Given two invocations (n = 2)
-bird.fly()
-bird.fly()
-
-verify(bird.fly()).wasCalled(exactly(1))  // Fails (n ≠ 1)
-verify(bird.fly()).wasCalled(exactly(2))  // Passes
-
-

You can combine count matchers with adverbial counts for improved readability.

- -
verify(bird.fly()).wasCalled(exactly(once))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An exact integer count.

-
-

Returns

-

A count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/finiteSequence(of:)-9390bb3/index.html b/docs/0.14.0/finiteSequence(of:)-9390bb3/index.html deleted file mode 100755 index d55bcd6b..00000000 --- a/docs/0.14.0/finiteSequence(of:)-9390bb3/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - Mockingbird - finiteSequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -finite​Sequence(of:​) -

- -
public func finiteSequence<DeclarationType: Declaration, InvocationType, ReturnType>(of values: ReturnType) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>
-
-

Stub a finite sequence of values.

- -
-
-

Provide one or more values which will be returned sequentially for each invocation. The stub -will be invalidated if the number of invocations is greater than the number of values provided.

- -
given(bird.getName())
-  .willReturn(finiteSequence(of: "Ryan", "Sterling"))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
valuesReturn​Type

A sequence of values to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/finiteSequence(of:)-ff3ed8b/index.html b/docs/0.14.0/finiteSequence(of:)-ff3ed8b/index.html deleted file mode 100755 index c0a00a80..00000000 --- a/docs/0.14.0/finiteSequence(of:)-ff3ed8b/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Mockingbird - finiteSequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -finite​Sequence(of:​) -

- -
public func finiteSequence<DeclarationType: Declaration, InvocationType, ReturnType>(of implementations: InvocationType) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>
-
-

Stub a finite sequence of implementations.

- -
-
-

Provide one or more implementations which will be returned sequentially for each invocation. The -stub will be invalidated if the number of invocations is greater than the number of -implementations provided.

- -
given(bird.getName()).willReturn(finiteSequence(of: {
-  return Bool.random() ? "Ryan" : "Meisters"
-}, {
-  return Bool.random() ? "Sterling" : "Hackley"
-}))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementationsInvocation​Type

A sequence of implementations to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/given(_:)-05dd78f/index.html b/docs/0.14.0/given(_:)-05dd78f/index.html deleted file mode 100755 index 9754ea19..00000000 --- a/docs/0.14.0/given(_:)-05dd78f/index.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - Mockingbird - given(_:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -given(_:​) -

- -
public func given<DeclarationType: Declaration, InvocationType, ReturnType>(_ declarations: Mockable<DeclarationType, InvocationType, ReturnType>) -> StubbingManager<DeclarationType, InvocationType, ReturnType>
-
-

Stub one or more declarations to return a value or perform an operation.

- -
-
-

Stubbing allows you to define custom behavior for mocks to perform.

- -
given(bird.canChirp()).willReturn(true)
-given(bird.canChirp()).willThrow(BirdError())
-given(bird.canChirp(volume: any())).will { volume in
-  return volume < 42
-}
-
-

This is equivalent to the shorthand syntax using the stubbing operator ~>.

- -
given(bird.canChirp()) ~> true
-given(bird.canChirp()) ~> { throw BirdError() }
-given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-

Properties can be stubbed with their getter and setter methods.

- -
given(bird.getName()).willReturn("Ryan")
-given(bird.setName(any())).will { print($0) }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
declarationsMockable<Declaration​Type, Invocation​Type, Return​Type>

One or more stubbable declarations.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/inOrder(with:file:line:_:)-3c038cb/index.html b/docs/0.14.0/inOrder(with:file:line:_:)-3c038cb/index.html deleted file mode 100755 index b5504773..00000000 --- a/docs/0.14.0/inOrder(with:file:line:_:)-3c038cb/index.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - Mockingbird - inOrder(with:file:line:_:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -in​Order(with:​file:​line:​_:​) -

- -
public func inOrder(with options: OrderedVerificationOptions = [], file: StaticString = #file, line: UInt = #line, _ block: () -> Void)
-
-

Enforce the relative order of invocations.

- -
-
-

Calls to verify within the scope of an inOrder verification block are checked relative to -each other.

- -
// Verify that `fly` was called before `chirp`
-inOrder {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-

Pass options to inOrder verification blocks for stricter checks with additional invariants.

- -
inOrder(with: .noInvocationsAfter) {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-

An inOrder block is resolved greedily, such that each verification must happen from the oldest -remaining unsatisfied invocations.

- -
// Given these unsatisfied invocations
-bird.fly()
-bird.fly()
-bird.chirp()
-
-// Greedy strategy _must_ start from the first `fly`
-inOrder {
-  verify(bird.fly()).wasCalled(twice)
-  verify(bird.chirp()).wasCalled()
-}
-
-// Non-greedy strategy can start from the second `fly`
-inOrder {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
optionsOrdered​Verification​Options

Options to use when verifying invocations.

-
block() -> Void

A block containing ordered verification calls.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/index.html b/docs/0.14.0/index.html deleted file mode 100755 index 6cfd0c6e..00000000 --- a/docs/0.14.0/index.html +++ /dev/null @@ -1,677 +0,0 @@ - - - - - - Mockingbird - Mockingbird - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-
-

Classes

-
-
- - Argument​Captor - -
-
-

Captures method arguments passed during mock invocations.

- -
-
- - Argument​Matcher - -
-
-

Matches argument values with a comparator.

- -
-
- - Static​Mock - -
-
-

Used to store invocations on static or class scoped methods.

- -
-
- - Variable​Declaration - -
-
-

Mockable variable declarations.

- -
-
- - Property​Getter​Declaration - -
-
-

Mockable property getter declarations.

- -
-
- - Property​Setter​Declaration - -
-
-

Mockable property setter declarations.

- -
-
- - Function​Declaration - -
-
-

Mockable function declarations.

- -
-
- - Throwing​Function​Declaration - -
-
-

Mockable throwing function declarations.

- -
-
- - Subscript​Declaration - -
-
-

Mockable subscript declarations.

- -
-
- - Subscript​Getter​Declaration - -
-
-

Mockable subscript getter declarations.

- -
-
- - Subscript​Setter​Declaration - -
-
-

Mockable subscript setter declarations.

- -
-
- - Mocking​Context - -
-
-

Stores invocations received by mocks.

- -
-
- - Stubbing​Manager - -
-
-

An intermediate object used for stubbing declarations returned by given.

- -
-
- - Stubbing​Context - -
-
-

Stores stubbed implementations used by mocks.

- -
-
- - Non​Escaping​Closure - -
-
-

Placeholder for non-escaping closure parameter types.

- -
-
-
-
-

Structures

-
-
- - Count​Matcher - -
-
-

Checks whether a number matches some expected count.

- -
-
- - Mock​Metadata - -
-
-

Stores information about generated mocks.

- -
-
- - Mockable - -
-
-

Represents a mocked declaration that can be stubbed or verified.

- -
-
- - Implementation​Provider - -
-
-

Provides implementation functions used to stub behavior and return values.

- -
-
- - Value​Provider - -
-
-

Provides concrete instances of types.

- -
-
- - Source​Location - -
-
-

References a line of code in a file.

- -
-
- - Ordered​Verification​Options - -
-
-

Additional options to increase the strictness of inOrder verification blocks.

- -
-
- - Verification​Manager - -
-
-

An intermediate object used for verifying declarations returned by verify.

- -
-
-
-
-

Enumerations

-
-
- - Stubbing​Manager.​Transition​Strategy - -
-
-

When to use the next chained implementation provider.

- -
-
-
-
-

Protocols

-
-
- - Mock - -
-
-

All generated mocks conform to this protocol.

- -
-
- - Declaration - -
-
-

All mockable declaration types conform to this protocol.

- -
-
- - Providable - -
-
-

A type that can provide concrete instances of itself.

- -
-
- - Test​Failer - -
-
-

A type that can handle test failures emitted by Mockingbird.

- -
-
-
-
-

Functions

-
-
- - any(_:​containing:​) - -
-
-

Matches any collection containing all of the values.

- -
-
- - any(_:​containing:​) - -
-
-

Matches any dictionary containing all of the values.

- -
-
- - any(_:​keys:​) - -
-
-

Matches any dictionary containing all of the keys.

- -
-
- - any(_:​count:​) - -
-
-

Matches any collection with a specific number of elements.

- -
-
- - not​Empty(_:​) - -
-
-

Matches any collection with at least one element.

- -
-
- - around(_:​tolerance:​) - -
-
-

Matches floating point arguments within some tolerance.

- -
-
- - exactly(_:​) - -
-
-

Matches an exact count.

- -
-
- - at​Least(_:​) - -
-
-

Matches greater than or equal to some count.

- -
-
- - at​Most(_:​) - -
-
-

Matches less than or equal to some count.

- -
-
- - between(_:​) - -
-
-

Matches counts that fall within some range.

- -
-
- - not(_:​) - -
-
-

Negate a count matcher, only passing on non-matching counts.

- -
-
- - not(_:​) - -
-
-

Negate an exact count, only passing on non-matching counts.

- -
-
- - any(_:​) - -
-
-

Matches all argument values.

- -
-
- - any(_:​of:​) - -
-
-

Matches argument values equal to any of the provided values.

- -
-
- - any(_:​of:​) - -
-
-

Matches argument values identical to any of the provided values.

- -
-
- - any(_:​where:​) - -
-
-

Matches any argument values where the predicate returns true.

- -
-
- - not​Nil(_:​) - -
-
-

Matches any non-nil argument value.

- -
-
- - reset(_:​) - -
-
-

Remove all recorded invocations and configured stubs.

- -
-
- - clear​Invocations(on:​) - -
-
-

Remove all recorded invocations.

- -
-
- - clear​Stubs(on:​) - -
-
-

Remove all concrete stubs.

- -
-
- - clear​Default​Values(on:​) - -
-
-

Remove all registered default values.

- -
-
- - use​Default​Values(from:​on:​) - -
-
-

Start returning default values for unstubbed methods on multiple mocks.

- -
-
- - use​Default​Values(from:​on:​) - -
-
-

Start returning default values for unstubbed methods on a single mock.

- -
-
- - sequence(of:​) - -
-
-

Stub a sequence of values.

- -
-
- - sequence(of:​) - -
-
-

Stub a sequence of implementations.

- -
-
- - looping​Sequence(of:​) - -
-
-

Stub a looping sequence of values.

- -
-
- - looping​Sequence(of:​) - -
-
-

Stub a looping sequence of implementations.

- -
-
- - finite​Sequence(of:​) - -
-
-

Stub a finite sequence of values.

- -
-
- - finite​Sequence(of:​) - -
-
-

Stub a finite sequence of implementations.

- -
-
- - last​Set​Value(initial:​) - -
-
-

Stubs a variable getter to return the last value received by the setter.

- -
-
- - given(_:​) - -
-
-

Stub one or more declarations to return a value or perform an operation.

- -
-
- - eventually(_:​_:​) - -
-
-

Create a deferrable test expectation from a block containing verification calls.

- -
-
- - in​Order(with:​file:​line:​_:​) - -
-
-

Enforce the relative order of invocations.

- -
-
- - verify(_:​file:​line:​) - -
-
-

Verify that a mock recieved a specific invocation some number of times.

- -
-
- - swizzle​Test​Failer(_:​) - -
-
-

Change the current global test failer.

- -
-
- - MKBFail(_:​is​Fatal:​file:​line:​) - -
-
-

Called by Mockingbird on test assertion failures.

- -
-
-
-
-

Variables

-
-
- - never - -
-
-

A count of zero.

- -
-
- - once - -
-
-

A count of one.

- -
-
- - twice - -
-
-

A count of two.

- -
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/lastSetValue(initial:)-576c55c/index.html b/docs/0.14.0/lastSetValue(initial:)-576c55c/index.html deleted file mode 100755 index 72a4b926..00000000 --- a/docs/0.14.0/lastSetValue(initial:)-576c55c/index.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - Mockingbird - lastSetValue(initial:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -last​Set​Value(initial:​) -

- -
public func lastSetValue<DeclarationType: PropertyGetterDeclaration, InvocationType, ReturnType>(initial: ReturnType) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>
-
-

Stubs a variable getter to return the last value received by the setter.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
initialReturn​Type

The initial value to return.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/loopingSequence(of:)-8ab9cb4/index.html b/docs/0.14.0/loopingSequence(of:)-8ab9cb4/index.html deleted file mode 100755 index 0b334a5b..00000000 --- a/docs/0.14.0/loopingSequence(of:)-8ab9cb4/index.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - Mockingbird - loopingSequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -looping​Sequence(of:​) -

- -
public func loopingSequence<DeclarationType: Declaration, InvocationType, ReturnType>(of values: ReturnType) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>
-
-

Stub a looping sequence of values.

- -
-
-

Provide one or more values which will be returned sequentially for each invocation. The sequence -will loop from the beginning if the number of invocations is greater than the number of values -provided.

- -
given(bird.getName())
-  .willReturn(loopingSequence(of: "Ryan", "Sterling"))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
valuesReturn​Type

A sequence of values to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/loopingSequence(of:)-9da831b/index.html b/docs/0.14.0/loopingSequence(of:)-9da831b/index.html deleted file mode 100755 index 06481c3e..00000000 --- a/docs/0.14.0/loopingSequence(of:)-9da831b/index.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - Mockingbird - loopingSequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -looping​Sequence(of:​) -

- -
public func loopingSequence<DeclarationType: Declaration, InvocationType, ReturnType>(of implementations: InvocationType) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>
-
-

Stub a looping sequence of implementations.

- -
-
-

Provide one or more implementations which will be returned sequentially for each invocation. The -sequence will loop from the beginning if the number of invocations is greater than the number of -implementations provided.

- -
given(bird.getName()).willReturn(loopingSequence(of: {
-  return Bool.random() ? "Ryan" : "Meisters"
-}, {
-  return Bool.random() ? "Sterling" : "Hackley"
-}))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Meisters"
-print(bird.name)  // Prints "Hackley"
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementationsInvocation​Type

A sequence of implementations to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/never-9661ceb/index.html b/docs/0.14.0/never-9661ceb/index.html deleted file mode 100755 index 241c75ea..00000000 --- a/docs/0.14.0/never-9661ceb/index.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - Mockingbird - never - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Variable -never -

- -
let never: Int
-
-

A count of zero.

- -
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/not(_:)-3f926b2/index.html b/docs/0.14.0/not(_:)-3f926b2/index.html deleted file mode 100755 index 7705457a..00000000 --- a/docs/0.14.0/not(_:)-3f926b2/index.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - Mockingbird - not(_:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -not(_:​) -

- -
public func not(_ times: Int) -> CountMatcher
-
-

Negate an exact count, only passing on non-matching counts.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n ≠ 1
-verify(bird.fly()).wasCalled(not(once))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​Matcher

An exact count to negate.

-
-

Returns

-

A negated count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/not(_:)-cf99a2a/index.html b/docs/0.14.0/not(_:)-cf99a2a/index.html deleted file mode 100755 index 17343c67..00000000 --- a/docs/0.14.0/not(_:)-cf99a2a/index.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - Mockingbird - not(_:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -not(_:​) -

- -
public func not(_ countMatcher: CountMatcher) -> CountMatcher
-
-

Negate a count matcher, only passing on non-matching counts.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n ≠ 1
-verify(bird.fly()).wasCalled(not(exactly(once)))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

A count matcher to negate.

-
-

Returns

-

A negated count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/notEmpty(_:)-3cab350/index.html b/docs/0.14.0/notEmpty(_:)-3cab350/index.html deleted file mode 100755 index b767fc91..00000000 --- a/docs/0.14.0/notEmpty(_:)-3cab350/index.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - Mockingbird - notEmpty(_:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -not​Empty(_:​) -

- -
public func notEmpty<T: Collection>(_ type: T.Type = T.self) -> T
-
-

Matches any collection with at least one element.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher notEmpty to match collections with one or more elements.

- -
protocol Bird {
-  func send(_ messages: [String])
-}
-
-given(bird.send(any(count: 2))).will { print($0) }
-
-bird.send(["Hi"])  // Prints ["Hi"]
-bird.send([])      // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [T])    // Overloaded generically
-  func send(_ messages: [String])  // Overloaded explicitly
-  func send(_ messages: [Data])
-}
-
-given(bird.send(notEmpty([String].self)))
-  .will { print($0) }
-
-bird.send(["Hi"])       // Prints ["Hi"]
-bird.send([Data([1])])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/notNil(_:)-42278eb/index.html b/docs/0.14.0/notNil(_:)-42278eb/index.html deleted file mode 100755 index 2480fcf9..00000000 --- a/docs/0.14.0/notNil(_:)-42278eb/index.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - Mockingbird - notNil(_:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -not​Nil(_:​) -

- -
public func notNil<T>(_ type: T.Type = T.self) -> T
-
-

Matches any non-nil argument value.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher notNil to match non-nil argument values.

- -
protocol Bird {
-  func send(_ message: String?)
-}
-
-given(bird.send(notNil())).will { print($0) }
-
-bird.send("Hello")  // Prints Optional("Hello")
-bird.send(nil)      // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ message: T?)    // Overloaded generically
-  func send(_ message: String?)  // Overloaded explicitly
-  func send(_ messages: Data?)
-}
-
-given(bird.send(notNil(String?.self)))
-  .will { print($0) }
-
-bird.send("Hello")    // Prints Optional("Hello")
-bird.send(nil)        // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/once-3db83dd/index.html b/docs/0.14.0/once-3db83dd/index.html deleted file mode 100755 index df50334a..00000000 --- a/docs/0.14.0/once-3db83dd/index.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - Mockingbird - once - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Variable -once -

- -
let once: Int
-
-

A count of one.

- -
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/reset(_:)-2a0feaf/index.html b/docs/0.14.0/reset(_:)-2a0feaf/index.html deleted file mode 100755 index d844bee1..00000000 --- a/docs/0.14.0/reset(_:)-2a0feaf/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Mockingbird - reset(_:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -reset(_:​) -

- -
public func reset(_ mocks: Mock)
-
-

Remove all recorded invocations and configured stubs.

- -
-
-

Fully reset a set of mocks during test runs by removing all recorded invocations and clearing -all configurations.

- -
let bird = mock(Bird.self)
-given(bird.getName()).willReturn("Ryan")
-
-print(bird.name)  // Prints "Ryan"
-verify(bird.getName()).wasCalled()  // Passes
-
-reset(bird)
-
-print(bird.name)  // Error: Missing stubbed implementation
-verify(bird.getName()).wasCalled()  // Error: Got 0 invocations
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mocksMock

A set of mocks to reset.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/sequence(of:)-c40bb93/index.html b/docs/0.14.0/sequence(of:)-c40bb93/index.html deleted file mode 100755 index 700541a1..00000000 --- a/docs/0.14.0/sequence(of:)-c40bb93/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Mockingbird - sequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -sequence(of:​) -

- -
public func sequence<DeclarationType: Declaration, InvocationType, ReturnType>(of implementations: InvocationType) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>
-
-

Stub a sequence of implementations.

- -
-
-

Provide one or more implementations which will be returned sequentially for each invocation. The -last implementation will be used if the number of invocations is greater than the number of -implementations provided.

- -
given(bird.getName()).willReturn(sequence(of: {
-  return Bool.random() ? "Ryan" : "Meisters"
-}, {
-  return Bool.random() ? "Sterling" : "Hackley"
-}))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Hackley"
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementationsInvocation​Type

A sequence of implementations to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/sequence(of:)-d9da3e4/index.html b/docs/0.14.0/sequence(of:)-d9da3e4/index.html deleted file mode 100755 index 8603da96..00000000 --- a/docs/0.14.0/sequence(of:)-d9da3e4/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - Mockingbird - sequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -sequence(of:​) -

- -
public func sequence<DeclarationType: Declaration, InvocationType, ReturnType>(of values: ReturnType) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>
-
-

Stub a sequence of values.

- -
-
-

Provide one or more values which will be returned sequentially for each invocation. The last -value will be used if the number of invocations is greater than the number of values provided.

- -
given(bird.getName())
-  .willReturn(sequence(of: "Ryan", "Sterling"))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Sterling"
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
valuesReturn​Type

A sequence of values to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/swizzleTestFailer(_:)-d923326/index.html b/docs/0.14.0/swizzleTestFailer(_:)-d923326/index.html deleted file mode 100755 index 265575c7..00000000 --- a/docs/0.14.0/swizzleTestFailer(_:)-d923326/index.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - Mockingbird - swizzleTestFailer(_:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -swizzle​Test​Failer(_:​) -

- -
public func swizzleTestFailer(_ newTestFailer: TestFailer)
-
-

Change the current global test failer.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
new​Test​FailerTest​Failer

A test failer instance to start handling test failures.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/twice-f36cfd6/index.html b/docs/0.14.0/twice-f36cfd6/index.html deleted file mode 100755 index 3f20150a..00000000 --- a/docs/0.14.0/twice-f36cfd6/index.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - Mockingbird - twice - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Variable -twice -

- -
let twice: Int
-
-

A count of two.

- -
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/useDefaultValues(from:on:)-5df93fa/index.html b/docs/0.14.0/useDefaultValues(from:on:)-5df93fa/index.html deleted file mode 100755 index 47cb798f..00000000 --- a/docs/0.14.0/useDefaultValues(from:on:)-5df93fa/index.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - Mockingbird - useDefaultValues(from:on:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -use​Default​Values(from:​on:​) -

- -
public func useDefaultValues(from valueProvider: ValueProvider, on mock: Mock)
-
-

Start returning default values for unstubbed methods on a single mock.

- -
-
-

Mocks are strict by default, meaning that calls to unstubbed methods will trigger a test -failure. Methods returning Void do not need to be stubbed in strict mode.

- -
let bird = mock(Bird.self)
-print(bird.name)  // Fails because `bird.getName()` is not stubbed
-bird.fly()        // Okay because `fly()` has a `Void` return type
-
-

To return default values for unstubbed methods, use a ValueProvider with the initialized mock. -Mockingbird provides preset value providers which are guaranteed to be backwards compatible, -such as .standardProvider.

- -
useDefaultValues(from: .standardProvider, on: bird)
-print(bird.name)  // Prints ""
-
-

You can create custom value providers by registering values for types. See Providable for how -to provide "wildcard" instances for generic types.

- -
var valueProvider = ValueProvider(from: .standardProvider)
-valueProvider.register("Ryan", for: String.self)
-useDefaultValues(from: valueProvider, on: bird)
-print(bird.name)  // Prints "Ryan"
-
-

Values from concrete stubs always have a higher precedence than default values.

- -
given(bird.getName()) ~> "Ryan"
-print(bird.name)  // Prints "Ryan"
-
-useDefaultValues(from: .standardProvider, on: bird)
-print(bird.name)  // Prints "Ryan"
-
- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
value​ProviderValue​Provider

A value provider to add.

-
mockMock

A mock that should start using the value provider.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/useDefaultValues(from:on:)-7eb6cc5/index.html b/docs/0.14.0/useDefaultValues(from:on:)-7eb6cc5/index.html deleted file mode 100755 index 3564e550..00000000 --- a/docs/0.14.0/useDefaultValues(from:on:)-7eb6cc5/index.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - Mockingbird - useDefaultValues(from:on:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -use​Default​Values(from:​on:​) -

- -
public func useDefaultValues(from valueProvider: ValueProvider, on mocks: [Mock])
-
-

Start returning default values for unstubbed methods on multiple mocks.

- -
-
-

Mocks are strict by default, meaning that calls to unstubbed methods will trigger a test -failure. Methods returning Void do not need to be stubbed in strict mode.

- -
let bird = mock(Bird.self)
-print(bird.name)  // Fails because `bird.getName()` is not stubbed
-bird.fly()        // Okay because `fly()` has a `Void` return type
-
-

To return default values for unstubbed methods, use a ValueProvider with the initialized mock. -Mockingbird provides preset value providers which are guaranteed to be backwards compatible, -such as .standardProvider.

- -
let anotherBird = mock(Bird.self)
-useDefaultValues(from: .standardProvider, on: [bird, anotherBird])
-print(bird.name)  // Prints ""
-print(anotherBird.name)  // Prints ""
-
-

You can create custom value providers by registering values for types. See Providable for how -to provide "wildcard" instances for generic types.

- -
var valueProvider = ValueProvider(from: .standardProvider)
-valueProvider.register("Ryan", for: String.self)
-
-useDefaultValues(from: valueProvider, on: [bird, anotherBird])
-
-print(bird.name)  // Prints "Ryan"
-print(anotherBird.name)  // Prints "Ryan"
-
-

Values from concrete stubs always have a higher precedence than default values.

- -
given(bird.getName()) ~> "Ryan"
-print(bird.name)  // Prints "Ryan"
-
-useDefaultValues(from: .standardProvider, on: [bird, anotherBird])
-
-print(bird.name)  // Prints "Ryan"
-print(anotherBird.name)  // Prints ""
-
- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
value​ProviderValue​Provider

A value provider to add.

-
mocks[Mock]

A list of mocks that should start using the value provider.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.14.0/verify(_:file:line:)-a722fba/index.html b/docs/0.14.0/verify(_:file:line:)-a722fba/index.html deleted file mode 100755 index 8cc229fd..00000000 --- a/docs/0.14.0/verify(_:file:line:)-a722fba/index.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - Mockingbird - verify(_:file:line:) - - - -
- - - Mockingbird - - Documentation - - 0.14.0 -
- - - - - -
-
-

-Function -verify(_:​file:​line:​) -

- -
public func verify<DeclarationType: Declaration, InvocationType, ReturnType>(_ declaration: Mockable<DeclarationType, InvocationType, ReturnType>, file: StaticString = #file, line: UInt = #line) -> VerificationManager<InvocationType, ReturnType>
-
-

Verify that a mock recieved a specific invocation some number of times.

- -
-
-

Verification lets you assert that a mock received a particular invocation during its lifetime.

- -
verify(bird.doMethod()).wasCalled()
-verify(bird.getProperty()).wasCalled()
-verify(bird.setProperty(any())).wasCalled()
-
-

Match exact or wildcard argument values when verifying methods with parameters.

- -
verify(bird.canChirp(volume: any())).wasCalled()     // Called with any volume
-verify(bird.canChirp(volume: notNil())).wasCalled()  // Called with any non-nil volume
-verify(bird.canChirp(volume: 10)).wasCalled()        // Called with volume = 10
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mock

A mocked declaration to verify.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/ArgumentCaptor-1017688/index.html b/docs/0.15.0/ArgumentCaptor-1017688/index.html deleted file mode 100755 index fb4eaf8d..00000000 --- a/docs/0.15.0/ArgumentCaptor-1017688/index.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - Mockingbird - ArgumentCaptor - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Class - Argument​Captor -

- -
public class ArgumentCaptor<ParameterType>: ArgumentMatcher
-
-

Captures method arguments passed during mock invocations.

- -
-
-

An argument captor extracts received argument values which can be used in other parts of the -test.

- -
let bird = mock(Bird.self)
-bird.name = "Ryan"
-
-let nameCaptor = ArgumentCaptor<String>()
-verify(bird.setName(nameCaptor.matcher)).wasCalled()
-print(nameCaptor.value)  // Prints "Ryan"
-
-
-
- -
- - - - - - -%3 - - -ArgumentCaptor - - -ArgumentCaptor - - - - -ArgumentMatcher - -ArgumentMatcher - - -ArgumentCaptor->ArgumentMatcher - - - - - - - - -
-

Superclass

-
-
ArgumentMatcher
-

Matches argument values with a comparator.

-
-
-
-
-

Initializers

- -
-

- init(weak:​) -

-
public init(weak: Bool = false)
-
-

Create a new argument captor.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
weakBool

Whether captured arguments should be stored weakly.

-
-
-
-
-

Properties

- -
-

- matcher -

-
var matcher: ParameterType
-
-

Passed as a parameter to mock verification contexts.

- -
-
-
-

- all​Values -

-
var allValues: [ParameterType]
-
-

All recorded argument values.

- -
-
-
-

- value -

-
var value: ParameterType?
-
-

The last recorded argument value.

- -
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/ArgumentMatcher-f013d1a/index.html b/docs/0.15.0/ArgumentMatcher-f013d1a/index.html deleted file mode 100755 index 3ac512a3..00000000 --- a/docs/0.15.0/ArgumentMatcher-f013d1a/index.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - Mockingbird - ArgumentMatcher - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Class - Argument​Matcher -

- -
public class ArgumentMatcher: CustomStringConvertible
-
-

Matches argument values with a comparator.

- -
-
- -
- - - - - - -%3 - - -ArgumentMatcher - - -ArgumentMatcher - - - - -CustomStringConvertible - -CustomStringConvertible - - -ArgumentMatcher->CustomStringConvertible - - - - -Equatable - -Equatable - - -ArgumentMatcher->Equatable - - - - -ArgumentCaptor - -ArgumentCaptor - - -ArgumentCaptor->ArgumentMatcher - - - - - - - - -
-

Subclasses

-
-
ArgumentCaptor
-

Captures method arguments passed during mock invocations.

-
-
-

Conforms To

-
-
CustomStringConvertible
-
Equatable
-
-
-
-

Properties

- -
-

- description -

-
let description: String
-
-

A description for test failure output.

- -
-
-
-
-

Methods

- -
-

- ==(lhs:​rhs:​) -

-
public static func ==(lhs: ArgumentMatcher, rhs: ArgumentMatcher) -> Bool
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/CountMatcher-4be5ae3/index.html b/docs/0.15.0/CountMatcher-4be5ae3/index.html deleted file mode 100755 index 385d63f5..00000000 --- a/docs/0.15.0/CountMatcher-4be5ae3/index.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - Mockingbird - CountMatcher - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Structure - Count​Matcher -

- -
public struct CountMatcher
-
-

Checks whether a number matches some expected count.

- -
- -
-

Methods

- -
-

- or(_:​) -

-
public func or(_ countMatcher: CountMatcher) -> CountMatcher
-
-

Logically combine another count matcher, passing if either matches.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n = 1 || n ≥ 42
-verify(bird.fly()).wasCalled(exactly(once).or(atLeast(42)))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

Another count matcher to combine.

-
-

Returns

-

A combined count matcher.

- -
-
-

- or(_:​) -

-
public func or(_ times: Int) -> CountMatcher
-
-

Logically combine with an exact count, passing if either matches.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n = 1 || n = 2
-verify(bird.fly()).wasCalled(exactly(once).or(twice))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An exact count to combine.

-
-

Returns

-

A combined count matcher.

- -
-
-

- and(_:​) -

-
public func and(_ countMatcher: CountMatcher) -> CountMatcher
-
-

Logically combine another count matcher, only passing if both match.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n = 1 && n ≥ 42
-verify(bird.fly()).wasCalled(exactly(once).and(atLeast(42)))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

Another count matcher to combine.

-
-

Returns

-

A combined count matcher.

- -
-
-

- xor(_:​) -

-
public func xor(_ countMatcher: CountMatcher) -> CountMatcher
-
-

Logically combine another count matcher, only passing if one matches but not the other.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n ≤ 2 ⊕ n ≥ 1
-verify(bird.fly()).wasCalled(atMost(twice).xor(atLeast(once)))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

Another count matcher to combine.

-
-

Returns

-

A combined count matcher.

- -
-
-

- xor(_:​) -

-
public func xor(_ times: Int) -> CountMatcher
-
-

Logically combine an exact count, only passing if one matches but not the other.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n ≥ 1 ⊕ n = 2
-verify(bird.fly()).wasCalled(atLeast(once).xor(twice))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An exact count.

-
-

Returns

-

A combined count matcher.

- -
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/Declaration-f6338ac/index.html b/docs/0.15.0/Declaration-f6338ac/index.html deleted file mode 100755 index 8608e40a..00000000 --- a/docs/0.15.0/Declaration-f6338ac/index.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - Mockingbird - Declaration - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Protocol - Declaration -

- -
public protocol Declaration
-
-

All mockable declaration types conform to this protocol.

- -
-
- -
- - - - - - -%3 - - -Declaration - - -Declaration - - - - -SubscriptDeclaration - -SubscriptDeclaration - - -SubscriptDeclaration->Declaration - - - - -FunctionDeclaration - -FunctionDeclaration - - -FunctionDeclaration->Declaration - - - - -VariableDeclaration - -VariableDeclaration - - -VariableDeclaration->Declaration - - - - - - - - -
-

Types Conforming to Declaration

-
-
VariableDeclaration
-

Mockable variable declarations.

-
-
FunctionDeclaration
-

Mockable function declarations.

-
-
SubscriptDeclaration
-

Mockable subscript declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/FunctionDeclaration-2ccea11/index.html b/docs/0.15.0/FunctionDeclaration-2ccea11/index.html deleted file mode 100755 index 417c1dd1..00000000 --- a/docs/0.15.0/FunctionDeclaration-2ccea11/index.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - Mockingbird - FunctionDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Class - Function​Declaration -

- -
public class FunctionDeclaration: Declaration
-
-

Mockable function declarations.

- -
-
- -
- - - - - - -%3 - - -FunctionDeclaration - - -FunctionDeclaration - - - - -Declaration - -Declaration - - -FunctionDeclaration->Declaration - - - - -ThrowingFunctionDeclaration - -ThrowingFunctionDeclaration - - -ThrowingFunctionDeclaration->FunctionDeclaration - - - - - - - - -
-

Subclasses

-
-
ThrowingFunctionDeclaration
-

Mockable throwing function declarations.

-
-
-

Conforms To

-
-
Declaration
-

All mockable declaration types conform to this protocol.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/ImplementationProvider-c664b1e/index.html b/docs/0.15.0/ImplementationProvider-c664b1e/index.html deleted file mode 100755 index feceabc9..00000000 --- a/docs/0.15.0/ImplementationProvider-c664b1e/index.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - Mockingbird - ImplementationProvider - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Structure - Implementation​Provider -

- -
public struct ImplementationProvider<DeclarationType: Declaration, InvocationType, ReturnType>
-
-

Provides implementation functions used to stub behavior and return values.

- -
- -
-

Initializers

- -
-

- init(implementation​Creator:​) -

-
public init(implementationCreator: @escaping () -> Any?)
-
-

Create an implementation provider with an optional callback.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
implementation​Creator@escaping () -> Any?

A closure returning an implementation when evaluated.

-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/MKBFail(_:isFatal:file:line:)-c41bd8d/index.html b/docs/0.15.0/MKBFail(_:isFatal:file:line:)-c41bd8d/index.html deleted file mode 100755 index 495c6df7..00000000 --- a/docs/0.15.0/MKBFail(_:isFatal:file:line:)-c41bd8d/index.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - Mockingbird - MKBFail(_:isFatal:file:line:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -MKBFail(_:​is​Fatal:​file:​line:​) -

- -
public func MKBFail(_ message: String, isFatal: Bool = false, file: StaticString = #file, line: UInt = #line)
-
-

Called by Mockingbird on test assertion failures.

- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
messageString

A description of the failure.

-
is​FatalBool

If true, test case execution should not continue.

-
fileStatic​String

The file where the failure occurred.

-
lineUInt

The line in the file where the failure occurred.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/Mock-28ffcc3/index.html b/docs/0.15.0/Mock-28ffcc3/index.html deleted file mode 100755 index c62d5aa0..00000000 --- a/docs/0.15.0/Mock-28ffcc3/index.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - Mockingbird - Mock - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Protocol - Mock -

- -
public protocol Mock
-
-

All generated mocks conform to this protocol.

- -
-
- -
- - - - - - -%3 - - -Mock - - -Mock - - - - -StaticMock - -StaticMock - - -StaticMock->Mock - - - - - - - - -
-

Types Conforming to Mock

-
-
StaticMock
-

Used to store invocations on static or class scoped methods.

-
-
-
- - - -
-

Requirements

- -
-

- mocking​Context -

-
var mockingContext: MockingContext
-
-

Information about received invocations.

- -
-
-
-

- stubbing​Context -

-
var stubbingContext: StubbingContext
-
-

Implementations for stubbing behaviors.

- -
-
-
-

- mock​Metadata -

-
var mockMetadata: MockMetadata
-
-

Static metadata about the mock created at generation time.

- -
-
-
-

- source​Location -

-
var sourceLocation: SourceLocation?
-
-

Where the mock was initialized.

- -
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/MockMetadata-36657c4/index.html b/docs/0.15.0/MockMetadata-36657c4/index.html deleted file mode 100755 index 6a10f8ac..00000000 --- a/docs/0.15.0/MockMetadata-36657c4/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - Mockingbird - MockMetadata - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Structure - Mock​Metadata -

- -
public struct MockMetadata
-
-

Stores information about generated mocks.

- -
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/Mockable-9a5a67c/index.html b/docs/0.15.0/Mockable-9a5a67c/index.html deleted file mode 100755 index 4671e3e1..00000000 --- a/docs/0.15.0/Mockable-9a5a67c/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - Mockingbird - Mockable - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Structure - Mockable -

- -
public struct Mockable<DeclarationType: Declaration, InvocationType, ReturnType>
-
-

Represents a mocked declaration that can be stubbed or verified.

- -
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/MockingContext-c5faed5/index.html b/docs/0.15.0/MockingContext-c5faed5/index.html deleted file mode 100755 index 12f69eac..00000000 --- a/docs/0.15.0/MockingContext-c5faed5/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - Mockingbird - MockingContext - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Class - Mocking​Context -

- -
public class MockingContext
-
-

Stores invocations received by mocks.

- -
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/NonEscapingClosure-e61507c/index.html b/docs/0.15.0/NonEscapingClosure-e61507c/index.html deleted file mode 100755 index b252e311..00000000 --- a/docs/0.15.0/NonEscapingClosure-e61507c/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - Mockingbird - NonEscapingClosure - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Class - Non​Escaping​Closure -

- -
public class NonEscapingClosure<ClosureType>: NonEscapingType
-
-

Placeholder for non-escaping closure parameter types.

- -
-
-

Non-escaping closures cannot be stored in an Invocation so an instance of a -NonEscapingClosure is stored instead.

- -
protocol Bird {
-  func send(_ message: String, callback: (Result) -> Void)
-}
-
-bird.send("Hello", callback: { print($0) })
-
-// Must use a wildcard argument matcher like `any`
-verify(bird.send("Hello", callback: any())).wasCalled()
-
-

Mark closure parameter types as @escaping to capture closures during verification.

- -
protocol Bird {
-  func send(_ message: String, callback: @escaping (Result) -> Void)
-}
-
-bird.send("Hello", callback: { print($0) })
-
-let argumentCaptor = ArgumentCaptor<(Result) -> Void>()
-verify(bird.send("Hello", callback: argumentCaptor.matcher)).wasCalled()
-argumentCaptor.value?(.success)  // Prints Result.success
-
-
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/OrderedVerificationOptions-77823cc/index.html b/docs/0.15.0/OrderedVerificationOptions-77823cc/index.html deleted file mode 100755 index 3a6fed5f..00000000 --- a/docs/0.15.0/OrderedVerificationOptions-77823cc/index.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - Mockingbird - OrderedVerificationOptions - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Structure - Ordered​Verification​Options -

- -
public struct OrderedVerificationOptions: OptionSet
-
-

Additional options to increase the strictness of inOrder verification blocks.

- -
-
- -
- - - - - - -%3 - - -OrderedVerificationOptions - - -OrderedVerificationOptions - - - - -OptionSet - -OptionSet - - -OrderedVerificationOptions->OptionSet - - - - - - - - -
-

Conforms To

-
-
OptionSet
-
-
-
-

Initializers

- -
-

- init(raw​Value:​) -

-
public init(rawValue: Int)
-
-
-
-

Properties

- -
-

- raw​Value -

-
let rawValue: Int
-
-
-

- no​Invocations​Before -

-
let noInvocationsBefore
-
-

Check that there are no recorded invocations before those explicitly verified in the block.

- -
-
-

Use this option to disallow invocations prior to those satisfying the first verification.

- -
bird.eat()
-bird.fly()
-bird.chirp()
-
-// Passes _without_ the option
-inOrder {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-// Fails with the option
-inOrder(with: .noInvocationsBefore) {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-
-
-
-

- no​Invocations​After -

-
let noInvocationsAfter
-
-

Check that there are no recorded invocations after those explicitly verified in the block.

- -
-
-

Use this option to disallow subsequent invocations to those satisfying the last verification.

- -
bird.fly()
-bird.chirp()
-bird.eat()
-
-// Passes _without_ the option
-inOrder {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-// Fails with the option
-inOrder(with: .noInvocationsAfter) {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-
-
-
-

- only​Consecutive​Invocations -

-
let onlyConsecutiveInvocations
-
-

Check that there are no recorded invocations between those explicitly verified in the block.

- -
-
-

Use this option to disallow non-consecutive invocations to each verification.

- -
bird.fly()
-bird.eat()
-bird.chirp()
-
-// Passes _without_ the option
-inOrder {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-// Fails with the option
-inOrder(with: .noInvocationsAfter) {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/PropertyGetterDeclaration-db9ea0d/index.html b/docs/0.15.0/PropertyGetterDeclaration-db9ea0d/index.html deleted file mode 100755 index 98cbc133..00000000 --- a/docs/0.15.0/PropertyGetterDeclaration-db9ea0d/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Mockingbird - PropertyGetterDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Class - Property​Getter​Declaration -

- -
public class PropertyGetterDeclaration: VariableDeclaration
-
-

Mockable property getter declarations.

- -
-
- -
- - - - - - -%3 - - -PropertyGetterDeclaration - - -PropertyGetterDeclaration - - - - -VariableDeclaration - -VariableDeclaration - - -PropertyGetterDeclaration->VariableDeclaration - - - - - - - - -
-

Superclass

-
-
VariableDeclaration
-

Mockable variable declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/PropertySetterDeclaration-7cfb3cc/index.html b/docs/0.15.0/PropertySetterDeclaration-7cfb3cc/index.html deleted file mode 100755 index 2fbc8ab8..00000000 --- a/docs/0.15.0/PropertySetterDeclaration-7cfb3cc/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Mockingbird - PropertySetterDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Class - Property​Setter​Declaration -

- -
public class PropertySetterDeclaration: VariableDeclaration
-
-

Mockable property setter declarations.

- -
-
- -
- - - - - - -%3 - - -PropertySetterDeclaration - - -PropertySetterDeclaration - - - - -VariableDeclaration - -VariableDeclaration - - -PropertySetterDeclaration->VariableDeclaration - - - - - - - - -
-

Superclass

-
-
VariableDeclaration
-

Mockable variable declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/Providable-7bc5aa7/index.html b/docs/0.15.0/Providable-7bc5aa7/index.html deleted file mode 100755 index a03e4a44..00000000 --- a/docs/0.15.0/Providable-7bc5aa7/index.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - Mockingbird - Providable - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Protocol - Providable -

- -
public protocol Providable
-
-

A type that can provide concrete instances of itself.

- -
-
-

Provide wildcard instances for generic types by conforming the base type to Providable and -registering the type. Non-wildcard instances have precedence over wildcard instances.

- -
extension Array: Providable {
-  public static func createInstance() -> Self? {
-    return Array()
-  }
-}
-
-var valueProvider = ValueProvider()
-valueProvider.registerType(Array<Any>.self)
-
-// All specializations of `Array` return an empty array
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints []
-print(valueProvider.provideValue(for: Array<Data>.self))    // Prints []
-
-// Register a non-wildcard instance of `Array<String>`
-valueProvider.register(["A", "B"], for: Array<String>.self)
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints ["A", "B"]
-print(valueProvider.provideValue(for: Array<Data>.self))    // Prints []
-
- -
- - - - -
-

Requirements

- -
-

- create​Instance() -

-
static func createInstance() -> Self?
-
-

Create a concrete instance of this type, or nil if no concrete instance is available.

- -
-
- -
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/SourceLocation-656fd60/index.html b/docs/0.15.0/SourceLocation-656fd60/index.html deleted file mode 100755 index 5414f154..00000000 --- a/docs/0.15.0/SourceLocation-656fd60/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - Mockingbird - SourceLocation - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Structure - Source​Location -

- -
public struct SourceLocation
-
-

References a line of code in a file.

- -
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/StaticMock-882efeb/index.html b/docs/0.15.0/StaticMock-882efeb/index.html deleted file mode 100755 index 31e2bc16..00000000 --- a/docs/0.15.0/StaticMock-882efeb/index.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - Mockingbird - StaticMock - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Class - Static​Mock -

- -
public class StaticMock: Mock
-
-

Used to store invocations on static or class scoped methods.

- -
-
- -
- - - - - - -%3 - - -StaticMock - - -StaticMock - - - - -Mock - -Mock - - -StaticMock->Mock - - - - - - - - -
-

Conforms To

-
-
Mock
-

All generated mocks conform to this protocol.

-
-
-
-
-

Properties

- -
-

- mocking​Context -

-
let mockingContext
-
-

Information about received invocations.

- -
-
-
-

- stubbing​Context -

-
let stubbingContext
-
-

Implementations for stubbing behaviors.

- -
-
-
-

- mock​Metadata -

-
let mockMetadata
-
-

Static metadata about the mock created at generation time.

- -
-
-
-

- source​Location -

-
var sourceLocation: SourceLocation?
-
-

Where the mock was initialized.

- -
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/StubbingContext-794fb76/index.html b/docs/0.15.0/StubbingContext-794fb76/index.html deleted file mode 100755 index 9ccac2fd..00000000 --- a/docs/0.15.0/StubbingContext-794fb76/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - Mockingbird - StubbingContext - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Class - Stubbing​Context -

- -
public class StubbingContext
-
-

Stores stubbed implementations used by mocks.

- -
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/StubbingManager-761d798/index.html b/docs/0.15.0/StubbingManager-761d798/index.html deleted file mode 100755 index fdb0d48b..00000000 --- a/docs/0.15.0/StubbingManager-761d798/index.html +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - Mockingbird - StubbingManager - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Class - Stubbing​Manager -

- -
public class StubbingManager<DeclarationType: Declaration, InvocationType, ReturnType>
-
-

An intermediate object used for stubbing declarations returned by given.

- -
-
- - -

Nested Types

-
-
StubbingManager.TransitionStrategy
-

When to use the next chained implementation provider.

-
-
-
-
-

Methods

- -
-

- will​Return(_:​) -

-
@discardableResult public func willReturn(_ value: ReturnType) -> Self
-
-

Stub a mocked method or property by returning a single value.

- -
-
-

Stubbing allows you to define custom behavior for mocks to perform.

- -
given(bird.doMethod()).willReturn(someValue)
-given(bird.getProperty()).willReturn(someValue)
-
-

Match exact or wildcard argument values when stubbing methods with parameters. Stubs added -later have a higher precedence, so add stubs with specific matchers last.

- -
given(bird.canChirp(volume: any())).willReturn(true)     // Any volume
-given(bird.canChirp(volume: notNil())).willReturn(true)  // Any non-nil volume
-given(bird.canChirp(volume: 10)).willReturn(true)        // Volume = 10
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
valueReturn​Type

A stubbed value to return.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will​Return(_:​transition:​) -

-
@discardableResult public func willReturn(_ provider: ImplementationProvider<DeclarationType, InvocationType, ReturnType>, transition: TransitionStrategy = .onFirstNil) -> Self
-
-

Stub a mocked method or property with an implementation provider.

- -
-
-

There are several preset implementation providers such as lastSetValue, which can be used -with property getters to automatically save and return values.

- -
given(bird.getName()).willReturn(lastSetValue(initial: ""))
-print(bird.name)  // Prints ""
-bird.name = "Ryan"
-print(bird.name)  // Prints "Ryan"
-
-

Implementation providers usually return multiple values, so when using chained stubbing it's -necessary to specify a transition strategy that defines when to go to the next stub.

- -
given(bird.getName())
-  .willReturn(lastSetValue(initial: ""), transition: .after(2))
-  .willReturn("Sterling")
-
-print(bird.name)  // Prints ""
-bird.name = "Ryan"
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
providerImplementation​Provider<Declaration​Type, Invocation​Type, Return​Type>

An implementation provider that creates closure implementation stubs.

-
transitionTransition​Strategy

When to use the next implementation provider in the list.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
@discardableResult public func will(_ implementation: InvocationType) -> Self
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-

Stubs are type safe and work with inout and closure parameter types.

- -
protocol Bird {
-  func send(_ message: inout String)
-  func fly(callback: (Result) -> Void)
-}
-
-// Inout parameter type
-var message = "Hello!"
-bird.send(&message)
-print(message)   // Prints "HELLO!"
-
-// Closure parameter type
-given(bird.fly(callback: any())).will { callback in
-  callback(.success)
-}
-bird.fly(callback: { result in
-  print(result)  // Prints Result.success
-})
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementationInvocation​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/StubbingManager_TransitionStrategy-9f44b8f/index.html b/docs/0.15.0/StubbingManager_TransitionStrategy-9f44b8f/index.html deleted file mode 100755 index dd12baba..00000000 --- a/docs/0.15.0/StubbingManager_TransitionStrategy-9f44b8f/index.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - Mockingbird - StubbingManager.TransitionStrategy - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Enumeration - Stubbing​Manager.​Transition​Strategy -

- -
public enum TransitionStrategy
-
-

When to use the next chained implementation provider.

- -
-
- - -

Member Of

-
-
StubbingManager
-

An intermediate object used for stubbing declarations returned by given.

-
-
-
-
-

Enumeration Cases

- -
-

- after -

-
case after(_ times: Int)
-
-

Go to the next provider after providing a certain number of implementations.

- -
-
-

This transition strategy is particularly useful for non-finite value providers such as -sequence and loopingSequence.

- -
given(bird.getName())
-  .willReturn(loopingSequence(of: "Ryan", "Sterling"), transition: .after(3))
-  .willReturn("Andrew")
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Andrew"
-
-
-
-
-

- on​First​Nil -

-
case onFirstNil
-
-

Use the current provider until it provides a nil implementation.

- -
-
-

This transition strategy should be used for finite value providers like finiteSequence -that are nil terminated to indicate an invalidated state.

- -
given(bird.getName())
-  .willReturn(finiteSequence(of: "Ryan", "Sterling"), transition: .onFirstNil)
-  .willReturn("Andrew")
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Andrew"
-
-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/SubscriptDeclaration-38e94f4/index.html b/docs/0.15.0/SubscriptDeclaration-38e94f4/index.html deleted file mode 100755 index ea949fae..00000000 --- a/docs/0.15.0/SubscriptDeclaration-38e94f4/index.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - Mockingbird - SubscriptDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Class - Subscript​Declaration -

- -
public class SubscriptDeclaration: Declaration
-
-

Mockable subscript declarations.

- -
-
- -
- - - - - - -%3 - - -SubscriptDeclaration - - -SubscriptDeclaration - - - - -Declaration - -Declaration - - -SubscriptDeclaration->Declaration - - - - -SubscriptSetterDeclaration - -SubscriptSetterDeclaration - - -SubscriptSetterDeclaration->SubscriptDeclaration - - - - -SubscriptGetterDeclaration - -SubscriptGetterDeclaration - - -SubscriptGetterDeclaration->SubscriptDeclaration - - - - - - - - -
-

Subclasses

-
-
SubscriptGetterDeclaration
-

Mockable subscript getter declarations.

-
-
SubscriptSetterDeclaration
-

Mockable subscript setter declarations.

-
-
-

Conforms To

-
-
Declaration
-

All mockable declaration types conform to this protocol.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/SubscriptGetterDeclaration-2324199/index.html b/docs/0.15.0/SubscriptGetterDeclaration-2324199/index.html deleted file mode 100755 index 4084b4d5..00000000 --- a/docs/0.15.0/SubscriptGetterDeclaration-2324199/index.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - Mockingbird - SubscriptGetterDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Class - Subscript​Getter​Declaration -

- -
public class SubscriptGetterDeclaration: SubscriptDeclaration
-
-

Mockable subscript getter declarations.

- -
-
- -
- - - -
-

Superclass

-
-
SubscriptDeclaration
-

Mockable subscript declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/SubscriptSetterDeclaration-a66f358/index.html b/docs/0.15.0/SubscriptSetterDeclaration-a66f358/index.html deleted file mode 100755 index 79afed47..00000000 --- a/docs/0.15.0/SubscriptSetterDeclaration-a66f358/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Mockingbird - SubscriptSetterDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Class - Subscript​Setter​Declaration -

- -
public class SubscriptSetterDeclaration: SubscriptDeclaration
-
-

Mockable subscript setter declarations.

- -
-
- -
- - - - - - -%3 - - -SubscriptSetterDeclaration - - -SubscriptSetterDeclaration - - - - -SubscriptDeclaration - -SubscriptDeclaration - - -SubscriptSetterDeclaration->SubscriptDeclaration - - - - - - - - -
-

Superclass

-
-
SubscriptDeclaration
-

Mockable subscript declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/SwiftSymbol-df7f148/index.html b/docs/0.15.0/SwiftSymbol-df7f148/index.html deleted file mode 100755 index 894f3d1b..00000000 --- a/docs/0.15.0/SwiftSymbol-df7f148/index.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - Mockingbird - SwiftSymbol - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Structure - Swift​Symbol -

- -
public struct SwiftSymbol
-
- -
- - - - - - -%3 - - -SwiftSymbol - - -SwiftSymbol - - - - -CustomStringConvertible - -CustomStringConvertible - - -SwiftSymbol->CustomStringConvertible - - - - - - - - -
-

Nested Types

-
-
SwiftSymbol.Contents
-
-
SwiftSymbol.Kind
-
-
-

Conforms To

-
-
CustomStringConvertible
-
-
-
-

Initializers

- -
-

- init(kind:​children:​contents:​) -

-
public init(kind: Kind, children: [SwiftSymbol] = [], contents: Contents = .none)
-
-
-
-

Properties

- -
-

- description -

-
var description: String
-
-

Overridden method to allow simple printing with default options

- -
-
-
-

- kind -

-
let kind: Kind
-
-
-

- children -

-
var children: [SwiftSymbol]
-
-
-

- contents -

-
let contents: Contents
-
-
-
-

Methods

- -
-

- print(using:​) -

-
public func print(using options: SymbolPrintOptions = .default) -> String
-
-

Prints SwiftSymbols to a String with the full set of printing options.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
optionsSymbol​Print​Options

an option set containing the different DemangleOptions from the Swift project.

-
-

Returns

-

self printed to a string according to the specified options.

- -
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/SwiftSymbolParseError-99165a5/index.html b/docs/0.15.0/SwiftSymbolParseError-99165a5/index.html deleted file mode 100755 index f45d55ee..00000000 --- a/docs/0.15.0/SwiftSymbolParseError-99165a5/index.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - Mockingbird - SwiftSymbolParseError - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Enumeration - Swift​Symbol​Parse​Error -

- -
public enum SwiftSymbolParseError
-
-

A type for representing the different possible failure conditions when using ScalarScanner

- -
-
- -
- - - - - - -%3 - - -SwiftSymbolParseError - - -SwiftSymbolParseError - - - - -Error - -Error - - -SwiftSymbolParseError->Error - - - - - - - - -
-

Conforms To

-
-
Error
-
-
-
-

Enumeration Cases

- -
-

- utf8Parse​Error -

-
case utf8ParseError
-
-

Attempted to convert the buffer to UnicodeScalars but the buffer contained invalid data

- -
-
-
-

- unexpected -

-
case unexpected(at: Int)
-
-

The scalar at the specified index doesn't match the expected grammar

- -
-
-
-

- match​Failed -

-
case matchFailed(wanted: String, at: Int)
-
-

Expected wanted at offset at

- -
-
-
-

- expected​Int -

-
case expectedInt(at: Int)
-
-

Expected numerals at offset at

- -
-
-
-

- ended​Prematurely -

-
case endedPrematurely(count: Int, at: Int)
-
-

Attempted to read count scalars from position at but hit the end of the sequence

- -
-
-
-

- search​Failed -

-
case searchFailed(wanted: String, after: Int)
-
-

Unable to find search patter wanted at or after after in the sequence

- -
-
-
-

- integer​Overflow -

-
case integerOverflow(at: Int)
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/SwiftSymbol_Contents-7f818fc/index.html b/docs/0.15.0/SwiftSymbol_Contents-7f818fc/index.html deleted file mode 100755 index f8aeef30..00000000 --- a/docs/0.15.0/SwiftSymbol_Contents-7f818fc/index.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - Mockingbird - SwiftSymbol.Contents - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Enumeration - Swift​Symbol.​Contents -

- -
public enum Contents
-
- - -

Member Of

-
-
SwiftSymbol
-
-
-
-
-

Enumeration Cases

- -
-

- none -

-
case none
-
-
-

- index -

-
case index(: UInt64)
-
-
-

- name -

-
case name(: String)
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/SwiftSymbol_Kind-a459168/index.html b/docs/0.15.0/SwiftSymbol_Kind-a459168/index.html deleted file mode 100755 index 85f88bc9..00000000 --- a/docs/0.15.0/SwiftSymbol_Kind-a459168/index.html +++ /dev/null @@ -1,1356 +0,0 @@ - - - - - - Mockingbird - SwiftSymbol.Kind - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Enumeration - Swift​Symbol.​Kind -

- -
public enum Kind
-
- - -

Member Of

-
-
SwiftSymbol
-
-
-
-
-

Enumeration Cases

- -
-

- `class` -

-
case `class`
-
-
-

- `enum` -

-
case `enum`
-
-
-

- `extension` -

-
case `extension`
-
-
-

- `protocol` -

-
case `protocol`
-
-
-

- protocol​Symbolic​Reference -

-
case protocolSymbolicReference
-
-
-

- `static` -

-
case `static`
-
-
-

- `subscript` -

-
case `subscript`
-
-
-

- allocator -

-
case allocator
-
-
-

- anonymous​Context -

-
case anonymousContext
-
-
-

- anonymous​Descriptor -

-
case anonymousDescriptor
-
-
-

- argument​Tuple -

-
case argumentTuple
-
-
-

- associated​Conformance​Descriptor -

-
case associatedConformanceDescriptor
-
-
-

- associated​Type -

-
case associatedType
-
-
-

- associated​Type​Descriptor -

-
case associatedTypeDescriptor
-
-
-

- associated​Type​Generic​Param​Ref -

-
case associatedTypeGenericParamRef
-
-
-

- associated​Type​Metadata​Accessor -

-
case associatedTypeMetadataAccessor
-
-
-

- associated​Type​Ref -

-
case associatedTypeRef
-
-
-

- associated​Type​Witness​Table​Accessor -

-
case associatedTypeWitnessTableAccessor
-
-
-

- assoc​Type​Path -

-
case assocTypePath
-
-
-

- auto​Closure​Type -

-
case autoClosureType
-
-
-

- bound​Generic​Class -

-
case boundGenericClass
-
-
-

- bound​Generic​Enum -

-
case boundGenericEnum
-
-
-

- bound​Generic​Function -

-
case boundGenericFunction
-
-
-

- bound​Generic​Other​Nominal​Type -

-
case boundGenericOtherNominalType
-
-
-

- bound​Generic​Protocol -

-
case boundGenericProtocol
-
-
-

- bound​Generic​Structure -

-
case boundGenericStructure
-
-
-

- bound​Generic​Type​Alias -

-
case boundGenericTypeAlias
-
-
-

- builtin​Type​Name -

-
case builtinTypeName
-
-
-

- cFunction​Pointer -

-
case cFunctionPointer
-
-
-

- class​Metadata​Base​Offset -

-
case classMetadataBaseOffset
-
-
-

- constructor -

-
case constructor
-
-
-

- coroutine​Continuation​Prototype -

-
case coroutineContinuationPrototype
-
-
-

- curry​Thunk -

-
case curryThunk
-
-
-

- deallocator -

-
case deallocator
-
-
-

- decl​Context -

-
case declContext
-
-
-

- default​Argument​Initializer -

-
case defaultArgumentInitializer
-
-
-

- default​Associated​Conformance​Accessor -

-
case defaultAssociatedConformanceAccessor
-
-
-

- default​Associated​Type​Metadata​Accessor -

-
case defaultAssociatedTypeMetadataAccessor
-
-
-

- dependent​Associated​Type​Ref -

-
case dependentAssociatedTypeRef
-
-
-

- dependent​Generic​Conformance​Requirement -

-
case dependentGenericConformanceRequirement
-
-
-

- dependent​Generic​Layout​Requirement -

-
case dependentGenericLayoutRequirement
-
-
-

- dependent​Generic​Param​Count -

-
case dependentGenericParamCount
-
-
-

- dependent​Generic​Param​Type -

-
case dependentGenericParamType
-
-
-

- dependent​Generic​Same​Type​Requirement -

-
case dependentGenericSameTypeRequirement
-
-
-

- dependent​Generic​Signature -

-
case dependentGenericSignature
-
-
-

- dependent​Generic​Type -

-
case dependentGenericType
-
-
-

- dependent​Member​Type -

-
case dependentMemberType
-
-
-

- dependent​Pseudogeneric​Signature -

-
case dependentPseudogenericSignature
-
-
-

- destructor -

-
case destructor
-
-
-

- did​Set -

-
case didSet
-
-
-

- direct​Method​Reference​Attribute -

-
case directMethodReferenceAttribute
-
-
-

- directness -

-
case directness
-
-
-

- dispatch​Thunk -

-
case dispatchThunk
-
-
-

- dynamic​Attribute -

-
case dynamicAttribute
-
-
-

- dynamic​Self -

-
case dynamicSelf
-
-
-

- empty​List -

-
case emptyList
-
-
-

- enum​Case -

-
case enumCase
-
-
-

- error​Type -

-
case errorType
-
-
-

- escaping​Auto​Closure​Type -

-
case escapingAutoClosureType
-
-
-

- existential​Metatype -

-
case existentialMetatype
-
-
-

- explicit​Closure -

-
case explicitClosure
-
-
-

- extension​Descriptor -

-
case extensionDescriptor
-
-
-

- field​Offset -

-
case fieldOffset
-
-
-

- first​Element​Marker -

-
case firstElementMarker
-
-
-

- full​Type​Metadata -

-
case fullTypeMetadata
-
-
-

- function -

-
case function
-
-
-

- function​Signature​Specialization -

-
case functionSignatureSpecialization
-
-
-

- function​Signature​Specialization​Param -

-
case functionSignatureSpecializationParam
-
-
-

- function​Signature​Specialization​Param​Kind -

-
case functionSignatureSpecializationParamKind
-
-
-

- function​Signature​Specialization​Param​Payload -

-
case functionSignatureSpecializationParamPayload
-
-
-

- function​Type -

-
case functionType
-
-
-

- generic​Partial​Specialization -

-
case genericPartialSpecialization
-
-
-

- generic​Partial​Specialization​Not​ReAbstracted -

-
case genericPartialSpecializationNotReAbstracted
-
-
-

- generic​Protocol​Witness​Table -

-
case genericProtocolWitnessTable
-
-
-

- generic​Protocol​Witness​Table​Instantiation​Function -

-
case genericProtocolWitnessTableInstantiationFunction
-
-
-

- generic​Specialization -

-
case genericSpecialization
-
-
-

- generic​Specialization​Not​ReAbstracted -

-
case genericSpecializationNotReAbstracted
-
-
-

- generic​Specialization​Param -

-
case genericSpecializationParam
-
-
-

- generic​Type​Metadata​Pattern -

-
case genericTypeMetadataPattern
-
-
-

- generic​Type​Param​Decl -

-
case genericTypeParamDecl
-
-
-

- getter -

-
case getter
-
-
-

- global -

-
case global
-
-
-

- global​Getter -

-
case globalGetter
-
-
-

- identifier -

-
case identifier
-
-
-

- impl​Convention -

-
case implConvention
-
-
-

- impl​Error​Result -

-
case implErrorResult
-
-
-

- impl​Escaping -

-
case implEscaping
-
-
-

- impl​Function​Attribute -

-
case implFunctionAttribute
-
-
-

- impl​Function​Type -

-
case implFunctionType
-
-
-

- implicit​Closure -

-
case implicitClosure
-
-
-

- impl​Parameter -

-
case implParameter
-
-
-

- impl​Result -

-
case implResult
-
-
-

- index -

-
case index
-
-
-

- infix​Operator -

-
case infixOperator
-
-
-

- initializer -

-
case initializer
-
-
-

- inlined​Generic​Function -

-
case inlinedGenericFunction
-
-
-

- in​Out -

-
case inOut
-
-
-

- is​Serialized -

-
case isSerialized
-
-
-

- iVar​Destroyer -

-
case iVarDestroyer
-
-
-

- iVar​Initializer -

-
case iVarInitializer
-
-
-

- key​Path​Equals​Thunk​Helper -

-
case keyPathEqualsThunkHelper
-
-
-

- key​Path​Getter​Thunk​Helper -

-
case keyPathGetterThunkHelper
-
-
-

- key​Path​Hash​Thunk​Helper -

-
case keyPathHashThunkHelper
-
-
-

- key​Path​Setter​Thunk​Helper -

-
case keyPathSetterThunkHelper
-
-
-

- label​List -

-
case labelList
-
-
-

- lazy​Protocol​Witness​Table​Accessor -

-
case lazyProtocolWitnessTableAccessor
-
-
-

- lazy​Protocol​Witness​Table​Cache​Variable -

-
case lazyProtocolWitnessTableCacheVariable
-
-
-

- local​Decl​Name -

-
case localDeclName
-
-
-

- materialize​For​Set -

-
case materializeForSet
-
-
-

- merged​Function -

-
case mergedFunction
-
-
-

- metaclass -

-
case metaclass
-
-
-

- metatype -

-
case metatype
-
-
-

- metatype​Representation -

-
case metatypeRepresentation
-
-
-

- method​Descriptor -

-
case methodDescriptor
-
-
-

- method​Lookup​Function -

-
case methodLookupFunction
-
-
-

- modify​Accessor -

-
case modifyAccessor
-
-
-

- module -

-
case module
-
-
-

- module​Descriptor -

-
case moduleDescriptor
-
-
-

- native​Owning​Addressor -

-
case nativeOwningAddressor
-
-
-

- native​Owning​Mutable​Addressor -

-
case nativeOwningMutableAddressor
-
-
-

- native​Pinning​Addressor -

-
case nativePinningAddressor
-
-
-

- native​Pinning​Mutable​Addressor -

-
case nativePinningMutableAddressor
-
-
-

- no​Escape​Function​Type -

-
case noEscapeFunctionType
-
-
-

- nominal​Type​Descriptor -

-
case nominalTypeDescriptor
-
-
-

- non​Obj​CAttribute -

-
case nonObjCAttribute
-
-
-

- number -

-
case number
-
-
-

- obj​CAttribute -

-
case objCAttribute
-
-
-

- obj​CBlock -

-
case objCBlock
-
-
-

- other​Nominal​Type -

-
case otherNominalType
-
-
-

- outlined​Assign​With​Copy -

-
case outlinedAssignWithCopy
-
-
-

- outlined​Assign​With​Take -

-
case outlinedAssignWithTake
-
-
-

- outlined​Bridged​Method -

-
case outlinedBridgedMethod
-
-
-

- outlined​Consume -

-
case outlinedConsume
-
-
-

- outlined​Copy -

-
case outlinedCopy
-
-
-

- outlined​Destroy -

-
case outlinedDestroy
-
-
-

- outlined​Initialize​With​Copy -

-
case outlinedInitializeWithCopy
-
-
-

- outlined​Initialize​With​Take -

-
case outlinedInitializeWithTake
-
-
-

- outlined​Release -

-
case outlinedRelease
-
-
-

- outlined​Retain -

-
case outlinedRetain
-
-
-

- outlined​Variable -

-
case outlinedVariable
-
-
-

- owned -

-
case owned
-
-
-

- owning​Addressor -

-
case owningAddressor
-
-
-

- owning​Mutable​Addressor -

-
case owningMutableAddressor
-
-
-

- partial​Apply​Forwarder -

-
case partialApplyForwarder
-
-
-

- partial​Apply​Obj​CForwarder -

-
case partialApplyObjCForwarder
-
-
-

- postfix​Operator -

-
case postfixOperator
-
-
-

- prefix​Operator -

-
case prefixOperator
-
-
-

- private​Decl​Name -

-
case privateDeclName
-
-
-

- property​Descriptor -

-
case propertyDescriptor
-
-
-

- protocol​Conformance -

-
case protocolConformance
-
-
-

- protocol​Conformance​Descriptor -

-
case protocolConformanceDescriptor
-
-
-

- protocol​Descriptor -

-
case protocolDescriptor
-
-
-

- protocol​List -

-
case protocolList
-
-
-

- protocol​List​With​Any​Object -

-
case protocolListWithAnyObject
-
-
-

- protocol​List​With​Class -

-
case protocolListWithClass
-
-
-

- protocol​Requirements​Base​Descriptor -

-
case protocolRequirementsBaseDescriptor
-
-
-

- protocol​Witness -

-
case protocolWitness
-
-
-

- protocol​Witness​Table -

-
case protocolWitnessTable
-
-
-

- protocol​Witness​Table​Accessor -

-
case protocolWitnessTableAccessor
-
-
-

- protocol​Witness​Table​Pattern -

-
case protocolWitnessTablePattern
-
-
-

- reabstraction​Thunk -

-
case reabstractionThunk
-
-
-

- reabstraction​Thunk​Helper -

-
case reabstractionThunkHelper
-
-
-

- read​Accessor -

-
case readAccessor
-
-
-

- reflection​Metadata​Assoc​Type​Descriptor -

-
case reflectionMetadataAssocTypeDescriptor
-
-
-

- reflection​Metadata​Builtin​Descriptor -

-
case reflectionMetadataBuiltinDescriptor
-
-
-

- reflection​Metadata​Field​Descriptor -

-
case reflectionMetadataFieldDescriptor
-
-
-

- reflection​Metadata​Superclass​Descriptor -

-
case reflectionMetadataSuperclassDescriptor
-
-
-

- related​Entity​Decl​Name -

-
case relatedEntityDeclName
-
-
-

- resilient​Protocol​Witness​Table -

-
case resilientProtocolWitnessTable
-
-
-

- retroactive​Conformance -

-
case retroactiveConformance
-
-
-

- return​Type -

-
case returnType
-
-
-

- setter -

-
case setter
-
-
-

- shared -

-
case shared
-
-
-

- sil​Box​Immutable​Field -

-
case silBoxImmutableField
-
-
-

- sil​Box​Layout -

-
case silBoxLayout
-
-
-

- sil​Box​Mutable​Field -

-
case silBoxMutableField
-
-
-

- sil​Box​Type -

-
case silBoxType
-
-
-

- sil​Box​Type​With​Layout -

-
case silBoxTypeWithLayout
-
-
-

- specialization​Pass​ID -

-
case specializationPassID
-
-
-

- structure -

-
case structure
-
-
-

- suffix -

-
case suffix
-
-
-

- sugared​Optional -

-
case sugaredOptional
-
-
-

- sugared​Array -

-
case sugaredArray
-
-
-

- sugared​Dictionary -

-
case sugaredDictionary
-
-
-

- sugared​Paren -

-
case sugaredParen
-
-
-

- type​Symbolic​Reference -

-
case typeSymbolicReference
-
-
-

- thin​Function​Type -

-
case thinFunctionType
-
-
-

- throws​Annotation -

-
case throwsAnnotation
-
-
-

- tuple -

-
case tuple
-
-
-

- tuple​Element -

-
case tupleElement
-
-
-

- tuple​Element​Name -

-
case tupleElementName
-
-
-

- type -

-
case type
-
-
-

- type​Alias -

-
case typeAlias
-
-
-

- type​List -

-
case typeList
-
-
-

- type​Mangling -

-
case typeMangling
-
-
-

- type​Metadata -

-
case typeMetadata
-
-
-

- type​Metadata​Access​Function -

-
case typeMetadataAccessFunction
-
-
-

- type​Metadata​Completion​Function -

-
case typeMetadataCompletionFunction
-
-
-

- type​Metadata​Instantiation​Cache -

-
case typeMetadataInstantiationCache
-
-
-

- type​Metadata​Instantiation​Function -

-
case typeMetadataInstantiationFunction
-
-
-

- type​Metadata​Lazy​Cache -

-
case typeMetadataLazyCache
-
-
-

- type​Metadata​Singleton​Initialization​Cache -

-
case typeMetadataSingletonInitializationCache
-
-
-

- uncurried​Function​Type -

-
case uncurriedFunctionType
-
-
-

- unmanaged -

-
case unmanaged
-
-
-

- unowned -

-
case unowned
-
-
-

- unsafe​Addressor -

-
case unsafeAddressor
-
-
-

- unsafe​Mutable​Addressor -

-
case unsafeMutableAddressor
-
-
-

- value​Witness -

-
case valueWitness
-
-
-

- value​Witness​Table -

-
case valueWitnessTable
-
-
-

- variable -

-
case variable
-
-
-

- variadic​Marker -

-
case variadicMarker
-
-
-

- vTable​Attribute -

-
case vTableAttribute
-
-
-

- vTable​Thunk -

-
case vTableThunk
-
-
-

- weak -

-
case weak
-
-
-

- will​Set -

-
case willSet
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/SymbolPrintOptions-8c5ff04/index.html b/docs/0.15.0/SymbolPrintOptions-8c5ff04/index.html deleted file mode 100755 index 5d6f41d4..00000000 --- a/docs/0.15.0/SymbolPrintOptions-8c5ff04/index.html +++ /dev/null @@ -1,228 +0,0 @@ - - - - - - Mockingbird - SymbolPrintOptions - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Structure - Symbol​Print​Options -

- -
public struct SymbolPrintOptions: OptionSet
-
-

These options mimic those used in the Swift project. Check that project for details.

- -
-
- -
- - - - - - -%3 - - -SymbolPrintOptions - - -SymbolPrintOptions - - - - -OptionSet - -OptionSet - - -SymbolPrintOptions->OptionSet - - - - - - - - -
-

Conforms To

-
-
OptionSet
-
-
-
-

Initializers

- -
-

- init(raw​Value:​) -

-
public init(rawValue: Int)
-
-
-
-

Properties

- -
-

- raw​Value -

-
let rawValue: Int
-
-
-

- synthesize​Sugar​OnTypes -

-
let synthesizeSugarOnTypes
-
-
-

- display​Debugger​Generated​Module -

-
let displayDebuggerGeneratedModule
-
-
-

- qualify​Entities -

-
let qualifyEntities
-
-
-

- display​Extension​Contexts -

-
let displayExtensionContexts
-
-
-

- display​Unmangled​Suffix -

-
let displayUnmangledSuffix
-
-
-

- display​Module​Names -

-
let displayModuleNames
-
-
-

- display​Generic​Specializations -

-
let displayGenericSpecializations
-
-
-

- display​Protocol​Conformances -

-
let displayProtocolConformances
-
-
-

- display​Where​Clauses -

-
let displayWhereClauses
-
-
-

- display​Entity​Types -

-
let displayEntityTypes
-
-
-

- shorten​Partial​Apply -

-
let shortenPartialApply
-
-
-

- shorten​Thunk -

-
let shortenThunk
-
-
-

- shorten​Value​Witness -

-
let shortenValueWitness
-
-
-

- shorten​Archetype -

-
let shortenArchetype
-
-
-

- show​Private​Discriminators -

-
let showPrivateDiscriminators
-
-
-

- show​Function​Argument​Types -

-
let showFunctionArgumentTypes
-
-
-

- `default` -

-
let `default`: SymbolPrintOptions
-
-
-

- simplified -

-
let simplified: SymbolPrintOptions
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/TestFailer-4ae7a4d/index.html b/docs/0.15.0/TestFailer-4ae7a4d/index.html deleted file mode 100755 index d3091d54..00000000 --- a/docs/0.15.0/TestFailer-4ae7a4d/index.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - Mockingbird - TestFailer - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Protocol - Test​Failer -

- -
public protocol TestFailer
-
-

A type that can handle test failures emitted by Mockingbird.

- -
- - - - -
-

Requirements

- -
-

- fail(message:​is​Fatal:​file:​line:​) -

-
func fail(message: String, isFatal: Bool, file: StaticString, line: UInt)
-
-

Fail the current test case.

- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
messageString

A description of the failure.

-
is​FatalBool

If true, test case execution should not continue.

-
fileStatic​String

The file where the failure occurred.

-
lineUInt

The line in the file where the failure occurred.

-
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/ThrowingFunctionDeclaration-9b512dc/index.html b/docs/0.15.0/ThrowingFunctionDeclaration-9b512dc/index.html deleted file mode 100755 index b67b9d26..00000000 --- a/docs/0.15.0/ThrowingFunctionDeclaration-9b512dc/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Mockingbird - ThrowingFunctionDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Class - Throwing​Function​Declaration -

- -
public class ThrowingFunctionDeclaration: FunctionDeclaration
-
-

Mockable throwing function declarations.

- -
-
- -
- - - - - - -%3 - - -ThrowingFunctionDeclaration - - -ThrowingFunctionDeclaration - - - - -FunctionDeclaration - -FunctionDeclaration - - -ThrowingFunctionDeclaration->FunctionDeclaration - - - - - - - - -
-

Superclass

-
-
FunctionDeclaration
-

Mockable function declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/ValueProvider-54037ad/index.html b/docs/0.15.0/ValueProvider-54037ad/index.html deleted file mode 100755 index 6dff514e..00000000 --- a/docs/0.15.0/ValueProvider-54037ad/index.html +++ /dev/null @@ -1,550 +0,0 @@ - - - - - - Mockingbird - ValueProvider - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Structure - Value​Provider -

- -
public struct ValueProvider
-
-

Provides concrete instances of types.

- -
-
-

To return default values for unstubbed methods, use a ValueProvider with the initialized mock. -Mockingbird provides preset value providers which are guaranteed to be backwards compatible, -such as .standardProvider.

- -
let bird = mock(Bird.self)
-bird.useDefaultValues(from: .standardProvider)
-print(bird.name)  // Prints ""
-
-

You can create custom value providers by registering values for types.

- -
var valueProvider = ValueProvider()
-valueProvider.register("Ryan", for: String.self)
-
-bird.useDefaultValues(from: valueProvider)
-print(bird.name)  // Prints "Ryan"
-
-
- -
-

Initializers

- -
-

- init() -

-
public init()
-
-

Create an empty value provider.

- -
-
-
-
-

Properties

- -
-

- collections​Provider -

-
let collectionsProvider
-
-

A value provider with default-initialized collections.

- -
-
-

https://developer.apple.com/documentation/foundation/collections

- -
-
-
-

- primitives​Provider -

-
let primitivesProvider
-
-

A value provider with primitive Swift types.

- -
-
-

https://developer.apple.com/documentation/foundation/numbers_data_and_basic_values

- -
-
-
-

- basics​Provider -

-
let basicsProvider
-
-

A value provider with basic number and data types that are not primitives.

- -
-
-

https://developer.apple.com/documentation/foundation/numbers_data_and_basic_values

- -
-
-
-

- strings​Provider -

-
let stringsProvider
-
-

A value provider with string and text types.

- -
-
-

https://developer.apple.com/documentation/foundation/strings_and_text

- -
-
-
-

- dates​Provider -

-
let datesProvider
-
-

A value provider with date and time types.

- -
-
-

https://developer.apple.com/documentation/foundation/dates_and_times

- -
-
-
-

- standard​Provider -

-
let standardProvider
-
-

All preset value providers.

- -
-
-
-
-

Methods

- -
-

- add(_:​) -

-
mutating public func add(_ other: Self)
-
-

Adds the values from another value provider.

- -
-
-

Value providers can be composed by adding values from another provider. Values in the other -provider have precedence and will overwrite existing values in this provider.

- -
var valueProvider = ValueProvider()
-valueProvider.add(.standardProvider)
-print(valueProvider.provideValue(for: String.self))  // Prints ""
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
otherSelf

A value provider to combine.

-
-
-
-

- adding(_:​) -

-
public func adding(_ other: Self) -> Self
-
-

Returns a new value provider containing the values from both providers.

- -
-
-

Value providers can be composed by adding values from another provider. Values in the added -provider have precendence over those in base provider.

- -
let valueProvider = ValueProvider.collectionsProvider.adding(.primitivesProvider)
-print(valueProvider.provideValue(for: [Bool].self))  // Prints []
-print(valueProvider.provideValue(for: Int.self))     // Prints 0
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
otherSelf

A value provider to combine.

-
-

Returns

-

A new value provider with the values of lhs and rhs.

- -
-
-

- +(lhs:​rhs:​) -

-
static public func +(lhs: Self, rhs: Self) -> Self
-
-

Returns a new value provider containing the values from both providers.

- -
-
-

Value providers can be composed by adding values from other providers. Values in the second -provider have precendence over those in first provider.

- -
let valueProvider = .collectionsProvider + .primitivesProvider
-print(valueProvider.provideValue(for: [Bool].self))  // Prints []
-print(valueProvider.provideValue(for: Int.self))     // Prints 0
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
lhsSelf

A value provider.

-
rhsSelf

A value provider.

-
-

Returns

-

A new value provider with the values of lhs and rhs.

- -
-
-

- register(_:​for:​) -

-
mutating public func register<K, V>(_ value: V, for type: K.Type)
-
-

Register a value for a specific type.

- -
-
-

Create custom value providers by registering values for types.

- -
var valueProvider = ValueProvider()
-valueProvider.register("Ryan", for: String.self)
-print(valueProvider.provideValue(for: String.self))  // Prints "Ryan"
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
valueV

The value to register.

-
typeK.​Type

The type to register the value under. value must be of kind type.

-
-
-
-

- register​Type(_:​) -

-
mutating public func registerType<T: Providable>(_ type: T.Type = T.self)
-
-

Register a Providable type used to provide values for generic types.

- -
-
-

Provide wildcard instances for generic types by conforming the base type to Providable and -registering the type. Non-wildcard instances have precedence over wildcard instances.

- -
extension Array: Providable {
-  public static func createInstance() -> Self? {
-    return Array()
-  }
-}
-
-var valueProvider = ValueProvider()
-valueProvider.registerType(Array<Any>.self)
-
-// All specializations of `Array` return an empty array
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints []
-print(valueProvider.provideValue(for: Array<Data>.self))    // Prints []
-
-// Register a non-wildcard instance of `Array<String>`
-valueProvider.register(["A", "B"], for: Array<String>.self)
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints ["A", "B"]
-print(valueProvider.provideValue(for: Array<Data>.self))    // Prints []
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

A Providable type to register.

-
-
-
-

- remove(_:​) -

-
mutating public func remove<T>(_ type: T.Type)
-
-

Remove a registered value for a given type.

- -
-
-

Previously registered values can be removed from the top-level value provider. This does not -affect values provided by subproviders.

- -
var valueProvider = ValueProvider(from: .standardProvider)
-print(valueProvider.provideValue(for: String.self))  // Prints ""
-
-// Override the subprovider value
-valueProvider.register("Ryan", for: String.self)
-print(valueProvider.provideValue(for: String.self))  // Prints "Ryan"
-
-// Remove the registered value
-valueProvider.remove(String.self)
-print(valueProvider.provideValue(for: String.self))  // Prints ""
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The type to remove a previously registered value for.

-
-
-
-

- remove(_:​) -

-
mutating public func remove<T: Providable>(_ type: T.Type = T.self)
-
-

Remove a registered Providable type.

- -
-
-

Previously registered wildcard instances for generic types can be removed from the top-level -value provider.

- -
var valueProvider = ValueProvider()
-
-valueProvider.registerType(Array<Any>.self)
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints []
-
-valueProvider.remove(Array<Any>.self)
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints nil
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

A Providable type to remove.

-
-
-
-

- provide​Value(for:​) -

-
public func provideValue<T>(for type: T.Type = T.self) -> T?
-
-

Provide a value for a given type.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

A type to provide a value for.

-
-

Returns

-

A concrete instance of the given type, or nil if no value could be provided.

- -
-
-

- provide​Value(for:​) -

-
public func provideValue<T: Providable>(for type: T.Type = T.self) -> T?
-
-

Provide a value a given Providable type.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

A Providable type to provide a value for.

-
-

Returns

-

A concrete instance of the given type, or nil if no value could be provided.

- -
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/VariableDeclaration-c075015/index.html b/docs/0.15.0/VariableDeclaration-c075015/index.html deleted file mode 100755 index f75ae4d6..00000000 --- a/docs/0.15.0/VariableDeclaration-c075015/index.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - Mockingbird - VariableDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Class - Variable​Declaration -

- -
public class VariableDeclaration: Declaration
-
-

Mockable variable declarations.

- -
-
- -
- - - - - - -%3 - - -VariableDeclaration - - -VariableDeclaration - - - - -Declaration - -Declaration - - -VariableDeclaration->Declaration - - - - -PropertyGetterDeclaration - -PropertyGetterDeclaration - - -PropertyGetterDeclaration->VariableDeclaration - - - - -PropertySetterDeclaration - -PropertySetterDeclaration - - -PropertySetterDeclaration->VariableDeclaration - - - - - - - - -
-

Subclasses

-
-
PropertyGetterDeclaration
-

Mockable property getter declarations.

-
-
PropertySetterDeclaration
-

Mockable property setter declarations.

-
-
-

Conforms To

-
-
Declaration
-

All mockable declaration types conform to this protocol.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/VerificationManager-94d5cc8/index.html b/docs/0.15.0/VerificationManager-94d5cc8/index.html deleted file mode 100755 index 42d01be4..00000000 --- a/docs/0.15.0/VerificationManager-94d5cc8/index.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - Mockingbird - VerificationManager - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

- Structure - Verification​Manager -

- -
public struct VerificationManager<InvocationType, ReturnType>
-
-

An intermediate object used for verifying declarations returned by verify.

- -
- -
-

Methods

- -
-

- was​Called(_:​) -

-
public func wasCalled(_ countMatcher: CountMatcher)
-
-

Verify that the mock received the invocation some number of times using a count matcher.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

A count matcher defining the number of invocations to verify.

-
-
-
-

- was​Called(_:​) -

-
public func wasCalled(_ times: Int = once)
-
-

Verify that the mock received the invocation an exact number of times.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

The exact number of invocations expected.

-
-
-
-

- was​Never​Called() -

-
public func wasNeverCalled()
-
-

Verify that the mock never received the invocation.

- -
-
-
-

- returning(_:​) -

-
public func returning(_ type: ReturnType.Type = ReturnType.self) -> Self
-
-

Disambiguate methods overloaded by return type.

- -
-
-

Declarations for methods overloaded by return type cannot type inference and should be -disambiguated.

- -
protocol Bird {
-  func getMessage<T>() throws -> T    // Overloaded generically
-  func getMessage() throws -> String  // Overloaded explicitly
-  func getMessage() throws -> Data
-}
-
-verify(bird.send(any()))
-  .returning(String.self)
-  .wasCalled()
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeReturn​Type.​Type

The return type of the declaration to verify.

-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/all.css b/docs/0.15.0/all.css deleted file mode 100755 index 68137abd..00000000 --- a/docs/0.15.0/all.css +++ /dev/null @@ -1 +0,0 @@ -:root{--system-red:#ff3b30;--system-orange:#ff9500;--system-yellow:#fc0;--system-green:#34c759;--system-teal:#5ac8fa;--system-blue:#007aff;--system-indigo:#5856d6;--system-purple:#af52de;--system-pink:#ff2d55;--system-gray:#8e8e93;--system-gray2:#aeaeb2;--system-gray3:#c7c7cc;--system-gray4:#d1d1d6;--system-gray5:#e5e5ea;--system-gray6:#f2f2f7;--label:#000;--secondary-label:#3c3c43;--tertiary-label:#48484a;--quaternary-label:#636366;--placeholder-text:#8e8e93;--link:#007aff;--separator:#e5e5ea;--opaque-separator:#c6c6c8;--system-fill:#787880;--secondary-system-fill:#787880;--tertiary-system-fill:#767680;--quaternary-system-fill:#747480;--system-background:#fff;--secondary-system-background:#f2f2f7;--tertiary-system-background:#fff;--secondary-system-grouped-background:#fff;--tertiary-system-grouped-background:#f2f2f7}@supports (color:color(display-p3 1 1 1)){:root{--system-red:color(display-p3 1 0.2314 0.1882);--system-orange:color(display-p3 1 0.5843 0);--system-yellow:color(display-p3 1 0.8 0);--system-green:color(display-p3 0.2039 0.7804 0.349);--system-teal:color(display-p3 0.3529 0.7843 0.9804);--system-blue:color(display-p3 0 0.4784 1);--system-indigo:color(display-p3 0.3451 0.3373 0.8392);--system-purple:color(display-p3 0.6863 0.3216 0.8706);--system-pink:color(display-p3 1 0.1765 0.3333);--system-gray:color(display-p3 0.5569 0.5569 0.5765);--system-gray2:color(display-p3 0.6824 0.6824 0.698);--system-gray3:color(display-p3 0.7804 0.7804 0.8);--system-gray4:color(display-p3 0.8196 0.8196 0.8392);--system-gray5:color(display-p3 0.898 0.898 0.9176);--system-gray6:color(display-p3 0.949 0.949 0.9686);--label:color(display-p3 0 0 0);--secondary-label:color(display-p3 0.2353 0.2353 0.2627);--tertiary-label:color(display-p3 0.2823 0.2823 0.2901);--quaternary-label:color(display-p3 0.4627 0.4627 0.5019);--placeholder-text:color(display-p3 0.5568 0.5568 0.5764);--link:color(display-p3 0 0.4784 1);--separator:color(display-p3 0.898 0.898 0.9176);--opaque-separator:color(display-p3 0.7765 0.7765 0.7843);--system-fill:color(display-p3 0.4706 0.4706 0.502);--secondary-system-fill:color(display-p3 0.4706 0.4706 0.502);--tertiary-system-fill:color(display-p3 0.4627 0.4627 0.502);--quaternary-system-fill:color(display-p3 0.4549 0.4549 0.502);--system-background:color(display-p3 1 1 1);--secondary-system-background:color(display-p3 0.949 0.949 0.9686);--tertiary-system-background:color(display-p3 1 1 1);--secondary-system-grouped-background:color(display-p3 1 1 1);--tertiary-system-grouped-background:color(display-p3 0.949 0.949 0.9686)}}:root{--large-title:600 32pt/39pt sans-serif;--title-1:600 26pt/32pt sans-serif;--title-2:600 20pt/25pt sans-serif;--title-3:500 18pt/23pt sans-serif;--headline:500 15pt/20pt sans-serif;--body:300 15pt/20pt sans-serif;--callout:300 14pt/19pt sans-serif;--subhead:300 13pt/18pt sans-serif;--footnote:300 12pt/16pt sans-serif;--caption-1:300 11pt/13pt sans-serif;--caption-2:300 11pt/13pt sans-serif}@media screen and (max-width:768px){:root{--large-title:600 27.2pt/33.15pt sans-serif;--title-1:600 22.1pt/27.2pt sans-serif;--title-2:600 17pt/21.25pt sans-serif;--title-3:500 15.3pt/19.55pt sans-serif;--headline:500 12.75pt/17pt sans-serif;--body:300 12.75pt/17pt sans-serif;--callout:300 11.9pt/16.15pt sans-serif;--subhead:300 11.05pt/15.3pt sans-serif;--footnote:300 10.2pt/13.6pt sans-serif;--caption-1:300 9.35pt/11.05pt sans-serif;--caption-2:300 9.35pt/11.05pt sans-serif}}:root{--icon-case:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%2389c5e6' height='90' rx='8' stroke='%236bb7e1' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M20.21 50c0-20.7 11.9-32.79 30.8-32.79 16 0 28.21 10.33 28.7 25.32H64.19C63.4 35 58.09 30.11 51 30.11c-8.79 0-14.37 7.52-14.37 19.82s5.54 20 14.41 20c7.08 0 12.22-4.66 13.23-12.09h15.52c-.74 15.07-12.43 25-28.78 25C32 82.81 20.21 70.72 20.21 50z' fill='%23fff'/%3E%3C/svg%3E");--icon-class:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%239b98e6' height='90' rx='8' stroke='%235856d6' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='m20.21 50c0-20.7 11.9-32.79 30.8-32.79 16 0 28.21 10.33 28.7 25.32h-15.52c-.79-7.53-6.1-12.42-13.19-12.42-8.79 0-14.37 7.52-14.37 19.82s5.54 20 14.41 20c7.08 0 12.22-4.66 13.23-12.09h15.52c-.74 15.07-12.43 25-28.78 25-19.01-.03-30.8-12.12-30.8-32.84z' fill='%23fff'/%3E%3C/svg%3E");--icon-enumeration:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%23eca95b' height='90' rx='8' stroke='%23e89234' stroke-miterlimit='10' stroke-width='4' width='90' x='5.17' y='5'/%3E%3Cpath d='M71.9 81.71H28.43V18.29H71.9v13H44.56v12.62h25.71v11.87H44.56V68.7H71.9z' fill='%23fff'/%3E%3C/svg%3E");--icon-extension:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%23eca95b' height='90' rx='8' stroke='%23e89234' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cg fill='%23fff'%3E%3Cpath d='M54.43 81.93H20.51V18.07h33.92v12.26H32.61v13.8h20.45v11.32H32.61v14.22h21.82zM68.74 74.58h-.27l-2.78 7.35h-7.28L64 69.32l-6-12.54h8l2.74 7.3h.27l2.76-7.3h7.64l-6.14 12.54 5.89 12.61h-7.64z'/%3E%3C/g%3E%3C/svg%3E");--icon-function:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%237ac673' height='90' rx='8' stroke='%235bb74f' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M24.25 75.66A5.47 5.47 0 0130 69.93c1.55 0 3.55.41 6.46.41 3.19 0 4.78-1.55 5.46-6.65l1.5-10.14h-9.34a6 6 0 110-12h11.1l1.09-7.27C47.82 23.39 54.28 17.7 64 17.7c6.69 0 11.74 1.77 11.74 6.64A5.47 5.47 0 0170 30.07c-1.55 0-3.55-.41-6.46-.41-3.14 0-4.73 1.51-5.46 6.65l-.78 5.27h11.44a6 6 0 11.05 12H55.6l-1.78 12.11C52.23 76.61 45.72 82.3 36 82.3c-6.7 0-11.75-1.77-11.75-6.64z' fill='%23fff'/%3E%3C/svg%3E");--icon-method:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%235a98f8' height='90' rx='8' stroke='%232974ed' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M70.61 81.71v-39.6h-.31l-15.69 39.6h-9.22l-15.65-39.6h-.35v39.6H15.2V18.29h18.63l16 41.44h.36l16-41.44H84.8v63.42z' fill='%23fff'/%3E%3C/svg%3E");--icon-property:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%2389c5e6' height='90' rx='8' stroke='%236bb7e1' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M52.31 18.29c13.62 0 22.85 8.84 22.85 22.46s-9.71 22.37-23.82 22.37H41v18.59H24.84V18.29zM41 51h7c6.85 0 10.89-3.56 10.89-10.2S54.81 30.64 48 30.64h-7z' fill='%23fff'/%3E%3C/svg%3E");--icon-protocol:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%23ff6682' height='90' rx='8' stroke='%23ff2d55' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cg fill='%23fff'%3E%3Cpath d='M46.28 18.29c11.84 0 20 8.66 20 21.71s-8.44 21.71-20.6 21.71H34.87v20H22.78V18.29zM34.87 51.34H43c6.93 0 11-4 11-11.29S50 28.8 43.07 28.8h-8.2zM62 57.45h8v4.77h.16c.84-3.45 2.54-5.12 5.17-5.12a5.06 5.06 0 011.92.35V65a5.69 5.69 0 00-2.39-.51c-3.08 0-4.66 1.74-4.66 5.12v12.1H62z'/%3E%3C/g%3E%3C/svg%3E");--icon-structure:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%23b57edf' height='90' rx='8' stroke='%239454c2' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M38.38 63c.74 4.53 5.62 7.16 11.82 7.16s10.37-2.81 10.37-6.68c0-3.51-2.73-5.31-10.24-6.76l-6.5-1.23C31.17 53.14 24.62 47 24.62 37.28c0-12.22 10.59-20.09 25.18-20.09 16 0 25.36 7.83 25.53 19.91h-15c-.26-4.57-4.57-7.29-10.42-7.29s-9.31 2.63-9.31 6.37c0 3.34 2.9 5.18 9.8 6.5l6.5 1.23C70.46 46.51 76.61 52 76.61 62c0 12.74-10 20.83-26.72 20.83-15.82 0-26.28-7.3-26.5-19.78z' fill='%23fff'/%3E%3C/svg%3E");--icon-typealias:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%237ac673' height='90' rx='8' stroke='%235bb74f' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M42 81.71V31.3H24.47v-13h51.06v13H58v50.41z' fill='%23fff'/%3E%3C/svg%3E");--icon-variable:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%237ac673' height='90' rx='8' stroke='%235bb74f' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M39.85 81.71L19.63 18.29H38l12.18 47.64h.35L62.7 18.29h17.67L60.15 81.71z' fill='%23fff'/%3E%3C/svg%3E")}body,button,input,select,textarea{-moz-font-feature-settings:"kern";-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;direction:ltr;font-synthesis:none;text-align:left}h1:first-of-type,h2:first-of-type,h3:first-of-type,h4:first-of-type,h5:first-of-type,h6:first-of-type{margin-top:0}h1 code,h2 code,h3 code,h4 code,h5 code,h6 code{font-family:inherit;font-weight:inherit}h1 img,h2 img,h3 img,h4 img,h5 img,h6 img{margin:0 .5em .2em 0;vertical-align:middle;display:inline-block}h1+*,h2+*,h3+*,h4+*,h5+*,h6+*{margin-top:.8em}img+h1{margin-top:.5em}img+h1,img+h2,img+h3,img+h4,img+h5,img+h6{margin-top:.3em}:is(h1,h2,h3,h4,h5,h6)+:is(h1,h2,h3,h4,h5,h6){margin-top:.4em}:matches(h1,h2,h3,h4,h5,h6)+:matches(h1,h2,h3,h4,h5,h6){margin-top:.4em}:is(p,ul,ol)+:is(h1,h2,h3,h4,h5,h6){margin-top:1.6em}:matches(p,ul,ol)+:matches(h1,h2,h3,h4,h5,h6){margin-top:1.6em}:is(p,ul,ol)+*{margin-top:.8em}:matches(p,ul,ol)+*{margin-top:.8em}ol,ul{margin-left:1.17647em}:matches(ul,ol) :matches(ul,ol){margin-bottom:0;margin-top:0}nav h2{color:#3c3c43;color:var(--secondary-label);font-size:1rem;font-feature-settings:"c2sc";font-variant:small-caps;font-weight:600;text-transform:uppercase}nav ol,nav ul{margin:0;list-style:none}nav li li{font-size:smaller}a:link,a:visited{text-decoration:none}a:hover{text-decoration:underline}a:active{text-decoration:none}b,strong{font-weight:600}.discussion,.summary{font:300 14pt/19pt sans-serif;font:var(--callout)}article>.discussion{margin-bottom:2em}.discussion .highlight{padding:1em;text-indent:0}cite,dfn,em,i{font-style:italic}:matches(h1,h2,h3) sup{font-size:.4em}sup a{color:inherit;vertical-align:inherit}sup a:hover{color:#007aff;color:var(--link);text-decoration:none}sub{line-height:1}abbr{border:0}:lang(ja),:lang(ko),:lang(th),:lang(zh){font-style:normal}:lang(ko){word-break:keep-all}form fieldset{margin:1em auto;max-width:450px;width:95%}form label{display:block;font-size:1em;font-weight:400;line-height:1.5em;margin-bottom:14px;position:relative;width:100%}input[type=email],input[type=number],input[type=password],input[type=tel],input[type=text],input[type=url],textarea{border-radius:4px;border:1px solid #e5e5ea;border:1px solid var(--separator);color:#333;font-family:inherit;font-size:100%;font-weight:400;height:34px;margin:0;padding:0 1em;position:relative;vertical-align:top;width:100%;z-index:1}input[type=email],input [type=email]:focus,input[type=number],input [type=number]:focus,input[type=password],input [type=password]:focus,input[type=tel],input [type=tel]:focus,input[type=text],input [type=text]:focus,input[type=url],input [type=url]:focus,textarea,textarea:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none}input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,textarea:focus{border-color:#08c;box-shadow:0 0 0 3px rgba(0,136,204,.3);outline:0;z-index:9}input[type=email]:-moz-read-only,input[type=number]:-moz-read-only,input[type=password]:-moz-read-only,input[type=tel]:-moz-read-only,input[type=text]:-moz-read-only,input[type=url]:-moz-read-only,textarea:-moz-read-only{background:none;border:none;box-shadow:none;padding-left:0}input[type=email]:read-only,input[type=number]:read-only,input[type=password]:read-only,input[type=tel]:read-only,input[type=text]:read-only,input[type=url]:read-only,textarea:read-only{background:none;border:none;box-shadow:none;padding-left:0}::-webkit-input-placeholder{color:#8e8e93;color:var(--placeholder-text)}::-moz-placeholder{color:#8e8e93;color:var(--placeholder-text)}:-ms-input-placeholder{color:#8e8e93;color:var(--placeholder-text)}::-ms-input-placeholder{color:#8e8e93;color:var(--placeholder-text)}::placeholder{color:#8e8e93;color:var(--placeholder-text)}textarea{-webkit-overflow-scrolling:touch;line-height:1.4737;min-height:134px;overflow-y:auto;resize:vertical;transform:translateZ(0)}textarea,textarea:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none}select{background:transparent;border-radius:4px;border:none;cursor:pointer;font-family:inherit;font-size:1em;height:34px;margin:0;padding:0 1em;width:100%}select,select:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none}select:focus{border-color:#08c;box-shadow:0 0 0 3px rgba(0,136,204,.3);outline:0;z-index:9}input[type=file]{background:#fafafa;border-radius:4px;color:#333;cursor:pointer;font-family:inherit;font-size:100%;height:34px;margin:0;padding:6px 1em;position:relative;vertical-align:top;width:100%;z-index:1}input[type=file]:focus{border-color:#08c;outline:0;box-shadow:0 0 0 3px rgba(0,136,204,.3);z-index:9}button,button:focus,input[type=file]:focus,input[type=file]:focus:focus,input[type=reset],input[type=reset]:focus,input[type=submit],input[type=submit]:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none}:matches(button,input[type=reset],input[type=submit]){background-color:#e3e3e3;background:linear-gradient(#fff,#e3e3e3);border-color:#d6d6d6;color:#0070c9}:matches(button,input[type=reset],input[type=submit]):hover{background-color:#eee;background:linear-gradient(#fff,#eee);border-color:#d9d9d9}:matches(button,input[type=reset],input[type=submit]):active{background-color:#dcdcdc;background:linear-gradient(#f7f7f7,#dcdcdc);border-color:#d0d0d0}:matches(button,input[type=reset],input[type=submit]):disabled{background-color:#e3e3e3;background:linear-gradient(#fff,#e3e3e3);border-color:#d6d6d6;color:#0070c9}body{background:var(--system-grouped-background);color:#000;color:var(--label);font-family:ui-system,-apple-system,BlinkMacSystemFont,sans-serif;font:300 15pt/20pt sans-serif;font:var(--body)}h1{font:600 32pt/39pt sans-serif;font:var(--large-title)}h2{font:600 20pt/25pt sans-serif;font:var(--title-2)}h3{font:500 18pt/23pt sans-serif;font:var(--title-3)}[role=article]>h3,h4,h5,h6{font:500 15pt/20pt sans-serif;font:var(--headline)}.summary+h4,.summary+h5,.summary+h6{margin-top:2em;margin-bottom:0}a{color:#007aff;color:var(--link)}label{font:300 14pt/19pt sans-serif;font:var(--callout)}input,label{display:block}input{margin-bottom:1em}hr{border:none;border-top:1px solid #e5e5ea;border-top:1px solid var(--separator);margin:1em 0}table{width:100%;font:300 11pt/13pt sans-serif;font:var(--caption-1);caption-side:bottom;margin-bottom:2em}td,th{padding:0 1em}th{font-weight:600;text-align:left}thead th{border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator)}tr:last-of-type td,tr:last-of-type th{border-bottom:none}td,th{border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator);color:#3c3c43;color:var(--secondary-label)}caption{color:#48484a;color:var(--tertiary-label);font:300 11pt/13pt sans-serif;font:var(--caption-2);margin-top:2em;text-align:left}.graph text,[role=article]>h3,code,dl dt[class],nav li[class]{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-weight:300}.graph>polygon{display:none}.graph text{fill:currentColor!important}.graph ellipse,.graph path,.graph polygon,.graph rect{stroke:currentColor!important}body{width:90vw;max-width:1280px;margin:1em auto}body>header{font:600 26pt/32pt sans-serif;font:var(--title-1);padding:.5em 0}body>header a{color:#000;color:var(--label)}body>header span{font-weight:400}body>header sup{text-transform:uppercase;font-size:small;font-weight:300;letter-spacing:.1ch}body>footer,body>header sup{color:#3c3c43;color:var(--secondary-label)}body>footer{clear:both;padding:1em 0;font:300 11pt/13pt sans-serif;font:var(--caption-1)}@media screen and (max-width:768px){body>nav{display:none}}main,nav{overflow-x:auto}main{background:#fff;background:var(--system-background);border-radius:8px;padding:0}main section{border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator);margin-bottom:2em;padding-bottom:1em}main section:last-of-type{border-bottom:none;margin-bottom:0}nav{float:right;margin-left:1em;max-height:100vh;overflow:auto;padding:0 1em 3em;position:-webkit-sticky;position:sticky;top:1em;width:20vw}nav a{color:#3c3c43;color:var(--secondary-label)}nav ul a{color:#48484a;color:var(--tertiary-label)}nav ol,nav ul{padding:0}nav ul{font:300 14pt/19pt sans-serif;font:var(--callout);margin-bottom:1em}nav ol>li>a{display:block;font-size:smaller;font:500 15pt/20pt sans-serif;font:var(--headline);margin:.5em 0}nav li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}blockquote{--link:var(--secondary-label);border-left:4px solid #e5e5ea;border-left:4px solid var(--separator);color:#3c3c43;color:var(--secondary-label);font-size:smaller;margin-left:0;padding-left:2em}blockquote a{text-decoration:underline}article{padding:2em 0 1em}article>.summary{border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator);margin-bottom:2em;padding-bottom:1em}article>.summary:last-child{border-bottom:none}.parameters th{text-align:right}.parameters td{color:#3c3c43;color:var(--secondary-label)}.parameters th+td{text-align:center}dl{display:inline-block;margin-top:0}dt{font:500 15pt/20pt sans-serif;font:var(--headline)}dd{margin-left:2em;margin-bottom:1em}dd p{margin-top:0}.highlight{background:#f2f2f7;background:var(--secondary-system-background);border-radius:8px;font-size:smaller;margin-bottom:2em;overflow-x:auto;padding:1em 1em 1em 3em;text-indent:-2em}.highlight .p{white-space:nowrap}.highlight .placeholder{color:#000;color:var(--label)}.highlight a{text-decoration:underline;color:#8e8e93;color:var(--placeholder-text)}.highlight .attribute,.highlight .keyword,.highlight .literal{color:#af52de;color:var(--system-purple)}.highlight .number{color:#007aff;color:var(--system-blue)}.highlight .declaration{color:#5ac8fa;color:var(--system-teal)}.highlight .type{color:#5856d6;color:var(--system-indigo)}.highlight .directive{color:#ff9500;color:var(--system-orange)}.highlight .comment{color:#8e8e93;color:var(--system-gray)}main summary:hover{text-decoration:underline}figure{margin:2em 0;padding:1em 0}figure svg{max-width:100%;height:auto!important;margin:0 auto;display:block}@media screen and (max-width:768px){#relationships figure{display:none}}h1 small{font-size:.5em;line-height:1.5;display:block;font-weight:400;color:#636366;color:var(--quaternary-label)}dd code,li code,p code{font-size:smaller;color:#3c3c43;color:var(--secondary-label)}a code{text-decoration:underline}dl dt[class],nav li[class],section>[role=article][class]{background-image:var(--background-image);background-size:1em;background-repeat:no-repeat;background-position:left .125em}nav li[class]{background-position:left .25em}section>[role=article]{margin-bottom:1em;padding-bottom:1em;border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator);padding-left:2em}section>[role=article]:last-of-type{margin-bottom:0;padding-bottom:0;border-bottom:none}dl dt[class],nav li[class]{list-style:none;text-indent:2em;margin-bottom:.5em}nav li[class]{text-indent:1.5em;margin-bottom:1em}.case,.enumeration_case{--background-image:var(--icon-case);--link:var(--system-teal)}.class{--background-image:var(--icon-class);--link:var(--system-indigo)}.enumeration{--background-image:var(--icon-enumeration)}.enumeration,.extension{--link:var(--system-orange)}.extension{--background-image:var(--icon-extension)}.function{--background-image:var(--icon-function);--link:var(--system-green)}.initializer,.method{--background-image:var(--icon-method);--link:var(--system-blue)}.property{--background-image:var(--icon-property);--link:var(--system-teal)}.protocol{--background-image:var(--icon-protocol);--link:var(--system-pink)}.structure{--background-image:var(--icon-structure);--link:var(--system-purple)}.typealias{--background-image:var(--icon-typealias)}.typealias,.variable{--link:var(--system-green)}.variable{--background-image:var(--icon-variable)}.unknown{--link:var(--quaternary-label);color:#007aff;color:var(--link)} \ No newline at end of file diff --git a/docs/0.15.0/any(_:)-da61986/index.html b/docs/0.15.0/any(_:)-da61986/index.html deleted file mode 100755 index 3ca54130..00000000 --- a/docs/0.15.0/any(_:)-da61986/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Mockingbird - any(_:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -any(_:​) -

- -
public func any<T>(_ type: T.Type = T.self) -> T
-
-

Matches all argument values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the wildcard argument matcher any as a type safe placeholder for matching any argument -value.

- -
given(bird.canChirp(volume: any())).willReturn(true)
-given(bird.setName(any())).will { print($0) }
-
-print(bird.canChirp(volume: 10))  // Prints "true"
-bird.name = "Ryan"  // Prints "Ryan"
-
-verify(bird.canChirp(volume: any())).wasCalled()
-verify(bird.setName(any())).wasCalled()
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ message: T)    // Overloaded generically
-  func send(_ message: String)  // Overloaded explicitly
-  func send(_ message: Data)
-}
-
-given(bird.send(any(String.self))).will { print($0) }
-
-bird.send("Hello")  // Prints "Hello"
-
-verify(bird.send(any(String.self))).wasCalled()
-verify(bird.send(any(Data.self))).wasNeverCalled()
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/any(_:containing:)-0e18f78/index.html b/docs/0.15.0/any(_:containing:)-0e18f78/index.html deleted file mode 100755 index b0734117..00000000 --- a/docs/0.15.0/any(_:containing:)-0e18f78/index.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - Mockingbird - any(_:containing:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -any(_:​containing:​) -

- -
public func any<T: Collection>(_ type: T.Type = T.self, containing values: T.Element) -> T
-
-

Matches any collection containing all of the values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(containing:) to match collections that contain all specified -values.

- -
protocol Bird {
-  func send(_ messages: [String])
-}
-
-given(bird.send(any(containing: "Hi", "Hello")))
-  .will { print($0) }
-
-bird.send(["Hi", "Hello"])  // Prints ["Hi", "Hello"]
-bird.send(["Hi", "Bye"])    // Error: Missing stubbed implementation
-bird.send(["Bye"])          // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [T])    // Overloaded generically
-  func send(_ messages: [String])  // Overloaded explicitly
-  func send(_ messages: [Data])
-}
-
-given(bird.send(any([String].self, containing: ["Hi", "Hello"])))
-  .will { print($0) }
-
-bird.send(["Hi", "Hello"])       // Prints ["Hi", "Hello"]
-bird.send([Data([1]), Data(2)])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
valuesT.​Element

A set of values that must all exist in the collection to match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/any(_:containing:)-365e26e/index.html b/docs/0.15.0/any(_:containing:)-365e26e/index.html deleted file mode 100755 index 4219985c..00000000 --- a/docs/0.15.0/any(_:containing:)-365e26e/index.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - Mockingbird - any(_:containing:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -any(_:​containing:​) -

- -
public func any<K, V>(_ type: Dictionary<K, V>.Type = Dictionary<K, V>.self, containing values: V) -> Dictionary<K, V>
-
-

Matches any dictionary containing all of the values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(containing:) to match dictionaries that contain all specified -values.

- -
protocol Bird {
-  func send(_ messages: [UUID: String])
-}
-
-given(bird.send(any(containing: "Hi", "Hello")))
-  .will { print($0) }
-
-bird.send([
-  UUID(): "Hi",
-  UUID(): "Hello",
-])  // Prints ["Hi", "Hello"]
-
-bird.send([
-  UUID(): "Hi",
-  UUID(): "Bye",
-])  // Error: Missing stubbed implementation
-
-bird.send([
-  UUID(): "Bye",
-]) // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [UUID: T])    // Overloaded generically
-  func send(_ messages: [UUID: String])  // Overloaded explicitly
-  func send(_ messages: [UUID: Data])
-}
-
-given(bird.send(any([UUID: String].self, containing: "Hi", "Hello")))
-  .will { print($0) }
-
-bird.send([
-  UUID(): "Hi",
-  UUID(): "Hello",
-])  // Prints ["Hi", "Hello"]
-
-bird.send([
-  UUID(): Data([1]),
-  UUID(): Data([2]),
-])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeDictionary<K, V>.​Type

The parameter type used to disambiguate overloaded methods.

-
valuesV

A set of values that must all exist in the dictionary to match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/any(_:count:)-860fd11/index.html b/docs/0.15.0/any(_:count:)-860fd11/index.html deleted file mode 100755 index e926cdba..00000000 --- a/docs/0.15.0/any(_:count:)-860fd11/index.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - Mockingbird - any(_:count:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -any(_:​count:​) -

- -
public func any<T: Collection>(_ type: T.Type = T.self, count countMatcher: CountMatcher) -> T
-
-

Matches any collection with a specific number of elements.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(count:) to match collections with a specific number of elements.

- -
protocol Bird {
-  func send(_ messages: [String])
-}
-
-given(bird.send(any(count: 2))).will { print($0) }
-
-bird.send(["Hi", "Hello"])  // Prints ["Hi", "Hello"]
-bird.send(["Hi"])           // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [T])    // Overloaded generically
-  func send(_ messages: [String])  // Overloaded explicitly
-  func send(_ messages: [Data])
-}
-
-given(bird.send(any([String].self, count: 2)))
-  .will { print($0) }
-
-bird.send(["Hi", "Hello"])         // Prints ["Hi", "Hello"]
-bird.send([Data([1]), Data([2])])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
count​MatcherCount​Matcher

A count matcher defining the number of acceptable elements in the collection.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/any(_:keys:)-e7f89d4/index.html b/docs/0.15.0/any(_:keys:)-e7f89d4/index.html deleted file mode 100755 index e38ccf21..00000000 --- a/docs/0.15.0/any(_:keys:)-e7f89d4/index.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - Mockingbird - any(_:keys:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -any(_:​keys:​) -

- -
public func any<K, V>(_ type: Dictionary<K, V>.Type = Dictionary<K, V>.self, keys: K) -> Dictionary<K, V>
-
-

Matches any dictionary containing all of the keys.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(keys:) to match dictionaries that contain all specified keys.

- -
protocol Bird {
-  func send(_ messages: [UUID: String])
-}
-
-let messageId1 = UUID()
-let messageId2 = UUID()
-given(bird.send(any(containing: messageId1, messageId2)))
-  .will { print($0) }
-
-bird.send([
-  messageId1: "Hi",
-  messageId2: "Hello",
-])  // Prints ["Hi", "Hello"]
-
-bird.send([
-  UUID(): "Hi",
-  UUID(): "Hello",
-])  // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [UUID: T])    // Overloaded generically
-  func send(_ messages: [UUID: String])  // Overloaded explicitly
-  func send(_ messages: [UUID: Data])
-}
-
-let messageId1 = UUID()
-let messageId2 = UUID()
-given(bird.send(any([UUID: String].self, containing: messageId1, messageId2)))
-  .will { print($0) }
-
-bird.send([
-  messageId1: "Hi",
-  messageId2: "Hello",
-])  // Prints ["Hi", "Hello"]
-
-bird.send([
-  messageId1: Data([1]),
-  messageId2: Data([2]),
-])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeDictionary<K, V>.​Type

The parameter type used to disambiguate overloaded methods.

-
keysK

A set of keys that must all exist in the dictionary to match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/any(_:of:)-89cb3ec/index.html b/docs/0.15.0/any(_:of:)-89cb3ec/index.html deleted file mode 100755 index c61dfb01..00000000 --- a/docs/0.15.0/any(_:of:)-89cb3ec/index.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - Mockingbird - any(_:of:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -any(_:​of:​) -

- -
public func any<T: AnyObject>(_ type: T.Type = T.self, of objects: T) -> T
-
-

Matches argument values identical to any of the provided values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(of:) to match objects identical to one or more of the specified -values.

- -
// Reference type
-class Location {
-  let name: String
-  init(name: String) { self.name = name }
-}
-
-protocol Bird {
-  func fly(to location: Location)
-}
-
-let home = Location(name: "Home")
-let work = Location("Work")
-given(bird.fly(to: any(of: home, work)))
-  .will { print($0.name) }
-
-bird.fly(to: home)  // Prints "Home"
-bird.fly(to: work)  // Prints "Work"
-
-let hawaii = Location("Hawaii")
-bird.fly(to: hawaii))  // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func fly<T>(to location: T)        // Overloaded generically
-  func fly(to location: Location)    // Overloaded explicitly
-  func fly(to locationName: String)
-}
-
-given(bird.fly(to: any(String.self, of: "Home", "Work")))
-  .will { print($0) }
-
-bird.send("Home")    // Prints "Hi"
-bird.send("Work")    // Prints "Hello"
-bird.send("Hawaii")  // Error: Missing stubbed implementation
-
- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
objectsT

A set of non-equatable objects that should result in a match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/any(_:of:)-e376f19/index.html b/docs/0.15.0/any(_:of:)-e376f19/index.html deleted file mode 100755 index f97737a5..00000000 --- a/docs/0.15.0/any(_:of:)-e376f19/index.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - Mockingbird - any(_:of:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -any(_:​of:​) -

- -
public func any<T: Equatable>(_ type: T.Type = T.self, of objects: T) -> T
-
-

Matches argument values equal to any of the provided values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(of:) to match Equatable argument values equal to one or more of -the specified values.

- -
given(bird.canChirp(volume: any(of: 1, 3)))
-  .willReturn(true)
-
-given(bird.canChirp(volume: any(of: 2, 4)))
-  .willReturn(false)
-
-print(bird.canChirp(volume: 1))  // Prints "true"
-print(bird.canChirp(volume: 2))  // Prints "false"
-print(bird.canChirp(volume: 3))  // Prints "true"
-print(bird.canChirp(volume: 4))  // Prints "false"
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ message: T)    // Overloaded generically
-  func send(_ message: String)  // Overloaded explicitly
-  func send(_ message: Data)
-}
-
-given(bird.send(any(String.self, of: "Hi", "Hello")))
-  .will { print($0) }
-
-bird.send("Hi")     // Prints "Hi"
-bird.send("Hello")  // Prints "Hello"
-bird.send("Bye")    // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
objectsT

A set of equatable objects that should result in a match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/any(_:where:)-ea2d92e/index.html b/docs/0.15.0/any(_:where:)-ea2d92e/index.html deleted file mode 100755 index d1c16c2c..00000000 --- a/docs/0.15.0/any(_:where:)-ea2d92e/index.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - Mockingbird - any(_:where:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -any(_:​where:​) -

- -
public func any<T>(_ type: T.Type = T.self, where predicate: @escaping (_ value: T) -> Bool) -> T
-
-

Matches any argument values where the predicate returns true.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(where:) to match objects with custom equality logic. This is -particularly useful for parameter types that do not conform to Equatable.

- -
// Value type not explicitly conforming to `Equatable`
-struct Fruit {
-  let size: Int
-}
-
-protocol Bird {
-  func eat(_ fruit: Fruit)
-}
-
-given(bird.eat(any(where: { $0.size < 100 })))
-  .will { print($0.size) }
-
-let apple = Fruit(size: 42)
-bird.eat(apple)  // Prints "42"
-
-let pear = Fruit(size: 9001)
-bird.eat(pear)   // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func eat<T>(_ object: T)     // Overloaded generically
-  func eat(_ fruit: Fruit)     // Overloaded explicitly
-  func eat(_ fruits: [Fruit])
-}
-
-given(bird.eat(any(Fruit.self, where: { $0.size < 100 })))
-  .will { print($0) }
-
-let apple = Fruit(size: 42)
-bird.eat(apple)    // Prints "42"
-bird.eat("Apple")  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
predicate@escaping (_ value:​ T) -> Bool

A closure that takes a value and returns true if it represents a match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/around(_:tolerance:)-831b19f/index.html b/docs/0.15.0/around(_:tolerance:)-831b19f/index.html deleted file mode 100755 index 16ac0bc2..00000000 --- a/docs/0.15.0/around(_:tolerance:)-831b19f/index.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - Mockingbird - around(_:tolerance:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -around(_:​tolerance:​) -

- -
public func around<T: FloatingPoint>(_ value: T, tolerance: T) -> T
-
-

Matches floating point arguments within some tolerance.

- -
-
-

Mathematical operations on floating point numbers can cause loss of precision. Fuzzily match floating point arguments instead of using exact values to increase the robustness of tests.

- -
protocol Bird {
-  func canChirp(volume: Double) -> Bool
-}
-
-given(bird.canChirp(volume: around(42.0, tolerance: 0.1)))
-  .willReturn(true)
-
-print(bird.canChirp(volume: 42.0))     // Prints "true"
-print(bird.canChirp(volume: 42.0999))  // Prints "true"
-print(bird.canChirp(volume: 42.1))     // Prints "false"
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
valueT

The expected value.

-
toleranceT

Only matches if the absolute difference is strictly less than this value.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/atLeast(_:)-c832002/index.html b/docs/0.15.0/atLeast(_:)-c832002/index.html deleted file mode 100755 index 2097b3f2..00000000 --- a/docs/0.15.0/atLeast(_:)-c832002/index.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - Mockingbird - atLeast(_:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -at​Least(_:​) -

- -
public func atLeast(_ times: Int) -> CountMatcher
-
-

Matches greater than or equal to some count.

- -
-
-

The atLeast count matcher can be used to verify that the actual number of invocations received -by a mock is greater than or equal to the expected number of invocations.

- -
// Given two invocations (n = 2)
-bird.fly()
-bird.fly()
-
-verify(bird.fly()).wasCalled(atLeast(1))  // Passes
-verify(bird.fly()).wasCalled(atLeast(2))  // Passes
-verify(bird.fly()).wasCalled(atLeast(3))  // Fails (n < 3)
-
-

You can combine count matchers with adverbial counts for improved readability.

- -
verify(bird.fly()).wasCalled(atLeast(once))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An inclusive lower bound.

-
-

Returns

-

A count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/atMost(_:)-a2b82d3/index.html b/docs/0.15.0/atMost(_:)-a2b82d3/index.html deleted file mode 100755 index 391e42a5..00000000 --- a/docs/0.15.0/atMost(_:)-a2b82d3/index.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - Mockingbird - atMost(_:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -at​Most(_:​) -

- -
public func atMost(_ times: Int) -> CountMatcher
-
-

Matches less than or equal to some count.

- -
-
-

The atMost count matcher can be used to verify that the actual number of invocations received -by a mock is less than or equal to the expected number of invocations.

- -
// Given two invocations (n = 2)
-bird.fly()
-bird.fly()
-
-verify(bird.fly()).wasCalled(atMost(1))  // Fails (n > 1)
-verify(bird.fly()).wasCalled(atMost(2))  // Passes
-verify(bird.fly()).wasCalled(atMost(3))  // Passes
-
-

You can combine count matchers with adverbial counts for improved readability.

- -
verify(bird.fly()).wasCalled(atMost(once))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An inclusive upper bound.

-
-

Returns

-

A count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/between(_:)-cfca747/index.html b/docs/0.15.0/between(_:)-cfca747/index.html deleted file mode 100755 index d55227f9..00000000 --- a/docs/0.15.0/between(_:)-cfca747/index.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - Mockingbird - between(_:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -between(_:​) -

- -
public func between(_ range: Range<Int>) -> CountMatcher
-
-

Matches counts that fall within some range.

- -
-
-

The between count matcher can be used to verify that the actual number of invocations received -by a mock is within an inclusive range of expected invocations.

- -
// Given two invocations (n = 2)
-bird.fly()
-bird.fly()
-
-verify(bird.fly()).wasCalled(between(1...2))  // Passes
-verify(bird.fly()).wasCalled(between(3...4))  // Fails (3 &nlt; n < 4)
-
-

You can combine count matchers with adverbial counts for improved readability.

- -
verify(bird.fly()).wasCalled(between(once...twice))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
rangeRange<Int>

An closed integer range.

-
-

Returns

-

A count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/clearDefaultValues(on:)-112773d/index.html b/docs/0.15.0/clearDefaultValues(on:)-112773d/index.html deleted file mode 100755 index 08fb4962..00000000 --- a/docs/0.15.0/clearDefaultValues(on:)-112773d/index.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - Mockingbird - clearDefaultValues(on:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -clear​Default​Values(on:​) -

- -
public func clearDefaultValues(on mocks: Mock)
-
-

Remove all registered default values.

- -
-
-

Partially reset a set of mocks during test runs by removing all registered default values.

- -
let bird = mock(Bird.self)
-bird.useDefaultValues(from: .standardProvider)
-
-print(bird.name)  // Prints ""
-verify(bird.getName()).wasCalled()  // Passes
-
-clearDefaultValues(on: bird)
-
-print(bird.name)  // Error: Missing stubbed implementation
-verify(bird.getName()).wasCalled()  // Passes
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mocksMock

A set of mocks to reset.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/clearInvocations(on:)-4120e8f/index.html b/docs/0.15.0/clearInvocations(on:)-4120e8f/index.html deleted file mode 100755 index d81defc1..00000000 --- a/docs/0.15.0/clearInvocations(on:)-4120e8f/index.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - Mockingbird - clearInvocations(on:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -clear​Invocations(on:​) -

- -
public func clearInvocations(on mocks: Mock)
-
-

Remove all recorded invocations.

- -
-
-

Partially reset a set of mocks during test runs by removing all recorded invocations.

- -
let bird = mock(Bird.self)
-given(bird.getName()).willReturn("Ryan")
-
-print(bird.name)  // Prints "Ryan"
-verify(bird.getName()).wasCalled()  // Passes
-
-clearInvocations(on: bird)
-
-print(bird.name)  // Prints "Ryan"
-verify(bird.getName()).wasCalled()  // Error: Got 0 invocations
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mocksMock

A set of mocks to reset.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/clearStubs(on:)-f985ed7/index.html b/docs/0.15.0/clearStubs(on:)-f985ed7/index.html deleted file mode 100755 index c9ad7bbd..00000000 --- a/docs/0.15.0/clearStubs(on:)-f985ed7/index.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - Mockingbird - clearStubs(on:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -clear​Stubs(on:​) -

- -
public func clearStubs(on mocks: Mock)
-
-

Remove all concrete stubs.

- -
-
-

Partially reset a set of mocks during test runs by removing all stubs.

- -
let bird = mock(Bird.self)
-given(bird.getName()).willReturn("Ryan")
-
-print(bird.name)  // Prints "Ryan"
-verify(bird.getName()).wasCalled()  // Passes
-
-clearStubs(on: bird)
-
-print(bird.name)  // Error: Missing stubbed implementation
-verify(bird.getName()).wasCalled()  // Passes
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mocksMock

A set of mocks to reset.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/eventually(_:_:)-28d4191/index.html b/docs/0.15.0/eventually(_:_:)-28d4191/index.html deleted file mode 100755 index 2e2ee885..00000000 --- a/docs/0.15.0/eventually(_:_:)-28d4191/index.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - Mockingbird - eventually(_:_:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -eventually(_:​_:​) -

- -
public func eventually(_ description: String? = nil, _ block: () -> Void) -> XCTestExpectation
-
-

Create a deferrable test expectation from a block containing verification calls.

- -
-
-

Mocked methods that are invoked asynchronously can be verified using an eventually block which -returns an XCTestExpectation.

- -
DispatchQueue.main.async {
-  Tree(with: bird).shake()
-}
-
-let expectation =
-  eventually {
-    verify(bird.fly()).wasCalled()
-    verify(bird.chirp()).wasCalled()
-  }
-
-wait(for: [expectation], timeout: 1.0)
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
descriptionString?

An optional description for the created XCTestExpectation.

-
block() -> Void

A block containing verification calls.

-
-

Returns

-

An XCTestExpectation that fulfilles once all verifications in the block are met.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/exactly(_:)-47abdfc/index.html b/docs/0.15.0/exactly(_:)-47abdfc/index.html deleted file mode 100755 index b804dcfd..00000000 --- a/docs/0.15.0/exactly(_:)-47abdfc/index.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - Mockingbird - exactly(_:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -exactly(_:​) -

- -
public func exactly(_ times: Int) -> CountMatcher
-
-

Matches an exact count.

- -
-
-

The exactly count matcher can be used to verify that the actual number of invocations received -by a mock equals the expected number of invocations.

- -
// Given two invocations (n = 2)
-bird.fly()
-bird.fly()
-
-verify(bird.fly()).wasCalled(exactly(1))  // Fails (n ≠ 1)
-verify(bird.fly()).wasCalled(exactly(2))  // Passes
-
-

You can combine count matchers with adverbial counts for improved readability.

- -
verify(bird.fly()).wasCalled(exactly(once))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An exact integer count.

-
-

Returns

-

A count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/finiteSequence(of:)-9390bb3/index.html b/docs/0.15.0/finiteSequence(of:)-9390bb3/index.html deleted file mode 100755 index da63c24f..00000000 --- a/docs/0.15.0/finiteSequence(of:)-9390bb3/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - Mockingbird - finiteSequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -finite​Sequence(of:​) -

- -
public func finiteSequence<DeclarationType: Declaration, InvocationType, ReturnType>(of values: ReturnType) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>
-
-

Stub a finite sequence of values.

- -
-
-

Provide one or more values which will be returned sequentially for each invocation. The stub -will be invalidated if the number of invocations is greater than the number of values provided.

- -
given(bird.getName())
-  .willReturn(finiteSequence(of: "Ryan", "Sterling"))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
valuesReturn​Type

A sequence of values to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/finiteSequence(of:)-ff3ed8b/index.html b/docs/0.15.0/finiteSequence(of:)-ff3ed8b/index.html deleted file mode 100755 index b6e1168f..00000000 --- a/docs/0.15.0/finiteSequence(of:)-ff3ed8b/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Mockingbird - finiteSequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -finite​Sequence(of:​) -

- -
public func finiteSequence<DeclarationType: Declaration, InvocationType, ReturnType>(of implementations: InvocationType) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>
-
-

Stub a finite sequence of implementations.

- -
-
-

Provide one or more implementations which will be returned sequentially for each invocation. The -stub will be invalidated if the number of invocations is greater than the number of -implementations provided.

- -
given(bird.getName()).willReturn(finiteSequence(of: {
-  return Bool.random() ? "Ryan" : "Meisters"
-}, {
-  return Bool.random() ? "Sterling" : "Hackley"
-}))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementationsInvocation​Type

A sequence of implementations to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/given(_:)-05dd78f/index.html b/docs/0.15.0/given(_:)-05dd78f/index.html deleted file mode 100755 index d2bba6e2..00000000 --- a/docs/0.15.0/given(_:)-05dd78f/index.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - Mockingbird - given(_:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -given(_:​) -

- -
public func given<DeclarationType: Declaration, InvocationType, ReturnType>(_ declarations: Mockable<DeclarationType, InvocationType, ReturnType>) -> StubbingManager<DeclarationType, InvocationType, ReturnType>
-
-

Stub one or more declarations to return a value or perform an operation.

- -
-
-

Stubbing allows you to define custom behavior for mocks to perform.

- -
given(bird.canChirp()).willReturn(true)
-given(bird.canChirp()).willThrow(BirdError())
-given(bird.canChirp(volume: any())).will { volume in
-  return volume < 42
-}
-
-

This is equivalent to the shorthand syntax using the stubbing operator ~>.

- -
given(bird.canChirp()) ~> true
-given(bird.canChirp()) ~> { throw BirdError() }
-given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-

Properties can be stubbed with their getter and setter methods.

- -
given(bird.getName()).willReturn("Ryan")
-given(bird.setName(any())).will { print($0) }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
declarationsMockable<Declaration​Type, Invocation​Type, Return​Type>

One or more stubbable declarations.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/inOrder(with:file:line:_:)-3c038cb/index.html b/docs/0.15.0/inOrder(with:file:line:_:)-3c038cb/index.html deleted file mode 100755 index 027532fa..00000000 --- a/docs/0.15.0/inOrder(with:file:line:_:)-3c038cb/index.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - Mockingbird - inOrder(with:file:line:_:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -in​Order(with:​file:​line:​_:​) -

- -
public func inOrder(with options: OrderedVerificationOptions = [], file: StaticString = #file, line: UInt = #line, _ block: () -> Void)
-
-

Enforce the relative order of invocations.

- -
-
-

Calls to verify within the scope of an inOrder verification block are checked relative to -each other.

- -
// Verify that `fly` was called before `chirp`
-inOrder {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-

Pass options to inOrder verification blocks for stricter checks with additional invariants.

- -
inOrder(with: .noInvocationsAfter) {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-

An inOrder block is resolved greedily, such that each verification must happen from the oldest -remaining unsatisfied invocations.

- -
// Given these unsatisfied invocations
-bird.fly()
-bird.fly()
-bird.chirp()
-
-// Greedy strategy _must_ start from the first `fly`
-inOrder {
-  verify(bird.fly()).wasCalled(twice)
-  verify(bird.chirp()).wasCalled()
-}
-
-// Non-greedy strategy can start from the second `fly`
-inOrder {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
optionsOrdered​Verification​Options

Options to use when verifying invocations.

-
block() -> Void

A block containing ordered verification calls.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/index.html b/docs/0.15.0/index.html deleted file mode 100755 index 036232df..00000000 --- a/docs/0.15.0/index.html +++ /dev/null @@ -1,746 +0,0 @@ - - - - - - Mockingbird - Mockingbird - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-
-

Classes

-
-
- - Argument​Captor - -
-
-

Captures method arguments passed during mock invocations.

- -
-
- - Argument​Matcher - -
-
-

Matches argument values with a comparator.

- -
-
- - Static​Mock - -
-
-

Used to store invocations on static or class scoped methods.

- -
-
- - Variable​Declaration - -
-
-

Mockable variable declarations.

- -
-
- - Property​Getter​Declaration - -
-
-

Mockable property getter declarations.

- -
-
- - Property​Setter​Declaration - -
-
-

Mockable property setter declarations.

- -
-
- - Function​Declaration - -
-
-

Mockable function declarations.

- -
-
- - Throwing​Function​Declaration - -
-
-

Mockable throwing function declarations.

- -
-
- - Subscript​Declaration - -
-
-

Mockable subscript declarations.

- -
-
- - Subscript​Getter​Declaration - -
-
-

Mockable subscript getter declarations.

- -
-
- - Subscript​Setter​Declaration - -
-
-

Mockable subscript setter declarations.

- -
-
- - Mocking​Context - -
-
-

Stores invocations received by mocks.

- -
-
- - Stubbing​Manager - -
-
-

An intermediate object used for stubbing declarations returned by given.

- -
-
- - Stubbing​Context - -
-
-

Stores stubbed implementations used by mocks.

- -
-
- - Non​Escaping​Closure - -
-
-

Placeholder for non-escaping closure parameter types.

- -
-
-
-
-

Structures

-
-
- - Count​Matcher - -
-
-

Checks whether a number matches some expected count.

- -
-
- - Mock​Metadata - -
-
-

Stores information about generated mocks.

- -
-
- - Mockable - -
-
-

Represents a mocked declaration that can be stubbed or verified.

- -
-
- - Implementation​Provider - -
-
-

Provides implementation functions used to stub behavior and return values.

- -
-
- - Value​Provider - -
-
-

Provides concrete instances of types.

- -
-
- - Symbol​Print​Options - -
-
-

These options mimic those used in the Swift project. Check that project for details.

- -
-
- - Swift​Symbol - -
-
- -
-
- - Source​Location - -
-
-

References a line of code in a file.

- -
-
- - Ordered​Verification​Options - -
-
-

Additional options to increase the strictness of inOrder verification blocks.

- -
-
- - Verification​Manager - -
-
-

An intermediate object used for verifying declarations returned by verify.

- -
-
-
-
-

Enumerations

-
-
- - Stubbing​Manager.​Transition​Strategy - -
-
-

When to use the next chained implementation provider.

- -
-
- - Swift​Symbol.​Contents - -
-
- -
-
- - Swift​Symbol.​Kind - -
-
- -
-
- - Swift​Symbol​Parse​Error - -
-
-

A type for representing the different possible failure conditions when using ScalarScanner

- -
-
-
-
-

Protocols

-
-
- - Mock - -
-
-

All generated mocks conform to this protocol.

- -
-
- - Declaration - -
-
-

All mockable declaration types conform to this protocol.

- -
-
- - Providable - -
-
-

A type that can provide concrete instances of itself.

- -
-
- - Test​Failer - -
-
-

A type that can handle test failures emitted by Mockingbird.

- -
-
-
-
-

Functions

-
-
- - any(_:​containing:​) - -
-
-

Matches any collection containing all of the values.

- -
-
- - any(_:​containing:​) - -
-
-

Matches any dictionary containing all of the values.

- -
-
- - any(_:​keys:​) - -
-
-

Matches any dictionary containing all of the keys.

- -
-
- - any(_:​count:​) - -
-
-

Matches any collection with a specific number of elements.

- -
-
- - not​Empty(_:​) - -
-
-

Matches any collection with at least one element.

- -
-
- - around(_:​tolerance:​) - -
-
-

Matches floating point arguments within some tolerance.

- -
-
- - exactly(_:​) - -
-
-

Matches an exact count.

- -
-
- - at​Least(_:​) - -
-
-

Matches greater than or equal to some count.

- -
-
- - at​Most(_:​) - -
-
-

Matches less than or equal to some count.

- -
-
- - between(_:​) - -
-
-

Matches counts that fall within some range.

- -
-
- - not(_:​) - -
-
-

Negate a count matcher, only passing on non-matching counts.

- -
-
- - not(_:​) - -
-
-

Negate an exact count, only passing on non-matching counts.

- -
-
- - any(_:​) - -
-
-

Matches all argument values.

- -
-
- - any(_:​of:​) - -
-
-

Matches argument values equal to any of the provided values.

- -
-
- - any(_:​of:​) - -
-
-

Matches argument values identical to any of the provided values.

- -
-
- - any(_:​where:​) - -
-
-

Matches any argument values where the predicate returns true.

- -
-
- - not​Nil(_:​) - -
-
-

Matches any non-nil argument value.

- -
-
- - mock(_:​) - -
-
-

Returns a mock of a given type.

- -
-
- - reset(_:​) - -
-
-

Remove all recorded invocations and configured stubs.

- -
-
- - clear​Invocations(on:​) - -
-
-

Remove all recorded invocations.

- -
-
- - clear​Stubs(on:​) - -
-
-

Remove all concrete stubs.

- -
-
- - clear​Default​Values(on:​) - -
-
-

Remove all registered default values.

- -
-
- - use​Default​Values(from:​on:​) - -
-
-

Start returning default values for unstubbed methods on multiple mocks.

- -
-
- - use​Default​Values(from:​on:​) - -
-
-

Start returning default values for unstubbed methods on a single mock.

- -
-
- - sequence(of:​) - -
-
-

Stub a sequence of values.

- -
-
- - sequence(of:​) - -
-
-

Stub a sequence of implementations.

- -
-
- - looping​Sequence(of:​) - -
-
-

Stub a looping sequence of values.

- -
-
- - looping​Sequence(of:​) - -
-
-

Stub a looping sequence of implementations.

- -
-
- - finite​Sequence(of:​) - -
-
-

Stub a finite sequence of values.

- -
-
- - finite​Sequence(of:​) - -
-
-

Stub a finite sequence of implementations.

- -
-
- - last​Set​Value(initial:​) - -
-
-

Stubs a variable getter to return the last value received by the setter.

- -
-
- - given(_:​) - -
-
-

Stub one or more declarations to return a value or perform an operation.

- -
-
- - parse​Mangled​Swift​Symbol(_:​is​Type:​) - -
-
-

This is likely to be the primary entry point to this file. Pass a string containing a Swift mangled symbol or type, get a parsed SwiftSymbol structure which can then be directly examined or printed.

- -
-
- - parse​Mangled​Swift​Symbol(_:​is​Type:​symbolic​Reference​Resolver:​) - -
-
-

Pass a collection of UnicodeScalars containing a Swift mangled symbol or type, get a parsed SwiftSymbol structure which can then be directly examined or printed.

- -
-
- - eventually(_:​_:​) - -
-
-

Create a deferrable test expectation from a block containing verification calls.

- -
-
- - in​Order(with:​file:​line:​_:​) - -
-
-

Enforce the relative order of invocations.

- -
-
- - verify(_:​file:​line:​) - -
-
-

Verify that a mock recieved a specific invocation some number of times.

- -
-
- - swizzle​Test​Failer(_:​) - -
-
-

Change the current global test failer.

- -
-
- - MKBFail(_:​is​Fatal:​file:​line:​) - -
-
-

Called by Mockingbird on test assertion failures.

- -
-
-
-
-

Variables

-
-
- - never - -
-
-

A count of zero.

- -
-
- - once - -
-
-

A count of one.

- -
-
- - twice - -
-
-

A count of two.

- -
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/lastSetValue(initial:)-576c55c/index.html b/docs/0.15.0/lastSetValue(initial:)-576c55c/index.html deleted file mode 100755 index 408ff4c0..00000000 --- a/docs/0.15.0/lastSetValue(initial:)-576c55c/index.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - Mockingbird - lastSetValue(initial:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -last​Set​Value(initial:​) -

- -
public func lastSetValue<DeclarationType: PropertyGetterDeclaration, InvocationType, ReturnType>(initial: ReturnType) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>
-
-

Stubs a variable getter to return the last value received by the setter.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
initialReturn​Type

The initial value to return.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/loopingSequence(of:)-8ab9cb4/index.html b/docs/0.15.0/loopingSequence(of:)-8ab9cb4/index.html deleted file mode 100755 index 72156c5e..00000000 --- a/docs/0.15.0/loopingSequence(of:)-8ab9cb4/index.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - Mockingbird - loopingSequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -looping​Sequence(of:​) -

- -
public func loopingSequence<DeclarationType: Declaration, InvocationType, ReturnType>(of values: ReturnType) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>
-
-

Stub a looping sequence of values.

- -
-
-

Provide one or more values which will be returned sequentially for each invocation. The sequence -will loop from the beginning if the number of invocations is greater than the number of values -provided.

- -
given(bird.getName())
-  .willReturn(loopingSequence(of: "Ryan", "Sterling"))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
valuesReturn​Type

A sequence of values to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/loopingSequence(of:)-9da831b/index.html b/docs/0.15.0/loopingSequence(of:)-9da831b/index.html deleted file mode 100755 index a83596ac..00000000 --- a/docs/0.15.0/loopingSequence(of:)-9da831b/index.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - Mockingbird - loopingSequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -looping​Sequence(of:​) -

- -
public func loopingSequence<DeclarationType: Declaration, InvocationType, ReturnType>(of implementations: InvocationType) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>
-
-

Stub a looping sequence of implementations.

- -
-
-

Provide one or more implementations which will be returned sequentially for each invocation. The -sequence will loop from the beginning if the number of invocations is greater than the number of -implementations provided.

- -
given(bird.getName()).willReturn(loopingSequence(of: {
-  return Bool.random() ? "Ryan" : "Meisters"
-}, {
-  return Bool.random() ? "Sterling" : "Hackley"
-}))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Meisters"
-print(bird.name)  // Prints "Hackley"
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementationsInvocation​Type

A sequence of implementations to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/mock(_:)-b93ee0e/index.html b/docs/0.15.0/mock(_:)-b93ee0e/index.html deleted file mode 100755 index 21e93439..00000000 --- a/docs/0.15.0/mock(_:)-b93ee0e/index.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - Mockingbird - mock(_:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -mock(_:​) -

- -
@available(*, unavailable, message: "No generated mock for this type which might be resolved by building the test target (⇧⌘U)") public func mock<T>(_ type: T.Type) -> T
-
-

Returns a mock of a given type.

- -
-
-

Initialized mocks can be passed in place of the original type. Protocol mocks do not require -explicit initialization while class mocks should be created using initialize(…).

- -
protocol Bird {
-  init(name: String)
-}
-class Tree {
-  init(with bird: Bird) {}
-}
-
-let bird = mock(Bird.self)  // Protocol mock
-let tree = mock(Tree.self).initialize(with: bird)  // Class mock
-
-

Generated mock types are suffixed with Mock and should not be coerced into their supertype.

- -
let bird: BirdMock = mock(Bird.self)  // The concrete type is `BirdMock`
-let inferredBird = mock(Bird.self)    // Type inference also works
-let coerced: Bird = mock(Bird.self)   // Avoid upcasting mocks
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The type to mock.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/never-9661ceb/index.html b/docs/0.15.0/never-9661ceb/index.html deleted file mode 100755 index b003a7e2..00000000 --- a/docs/0.15.0/never-9661ceb/index.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - Mockingbird - never - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Variable -never -

- -
let never: Int
-
-

A count of zero.

- -
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/not(_:)-3f926b2/index.html b/docs/0.15.0/not(_:)-3f926b2/index.html deleted file mode 100755 index aa626e89..00000000 --- a/docs/0.15.0/not(_:)-3f926b2/index.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - Mockingbird - not(_:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -not(_:​) -

- -
public func not(_ times: Int) -> CountMatcher
-
-

Negate an exact count, only passing on non-matching counts.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n ≠ 1
-verify(bird.fly()).wasCalled(not(once))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​Matcher

An exact count to negate.

-
-

Returns

-

A negated count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/not(_:)-cf99a2a/index.html b/docs/0.15.0/not(_:)-cf99a2a/index.html deleted file mode 100755 index a3af824c..00000000 --- a/docs/0.15.0/not(_:)-cf99a2a/index.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - Mockingbird - not(_:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -not(_:​) -

- -
public func not(_ countMatcher: CountMatcher) -> CountMatcher
-
-

Negate a count matcher, only passing on non-matching counts.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n ≠ 1
-verify(bird.fly()).wasCalled(not(exactly(once)))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

A count matcher to negate.

-
-

Returns

-

A negated count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/notEmpty(_:)-3cab350/index.html b/docs/0.15.0/notEmpty(_:)-3cab350/index.html deleted file mode 100755 index 96adbca4..00000000 --- a/docs/0.15.0/notEmpty(_:)-3cab350/index.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - Mockingbird - notEmpty(_:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -not​Empty(_:​) -

- -
public func notEmpty<T: Collection>(_ type: T.Type = T.self) -> T
-
-

Matches any collection with at least one element.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher notEmpty to match collections with one or more elements.

- -
protocol Bird {
-  func send(_ messages: [String])
-}
-
-given(bird.send(any(count: 2))).will { print($0) }
-
-bird.send(["Hi"])  // Prints ["Hi"]
-bird.send([])      // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [T])    // Overloaded generically
-  func send(_ messages: [String])  // Overloaded explicitly
-  func send(_ messages: [Data])
-}
-
-given(bird.send(notEmpty([String].self)))
-  .will { print($0) }
-
-bird.send(["Hi"])       // Prints ["Hi"]
-bird.send([Data([1])])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/notNil(_:)-42278eb/index.html b/docs/0.15.0/notNil(_:)-42278eb/index.html deleted file mode 100755 index 290d505e..00000000 --- a/docs/0.15.0/notNil(_:)-42278eb/index.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - Mockingbird - notNil(_:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -not​Nil(_:​) -

- -
public func notNil<T>(_ type: T.Type = T.self) -> T
-
-

Matches any non-nil argument value.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher notNil to match non-nil argument values.

- -
protocol Bird {
-  func send(_ message: String?)
-}
-
-given(bird.send(notNil())).will { print($0) }
-
-bird.send("Hello")  // Prints Optional("Hello")
-bird.send(nil)      // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ message: T?)    // Overloaded generically
-  func send(_ message: String?)  // Overloaded explicitly
-  func send(_ messages: Data?)
-}
-
-given(bird.send(notNil(String?.self)))
-  .will { print($0) }
-
-bird.send("Hello")    // Prints Optional("Hello")
-bird.send(nil)        // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/once-3db83dd/index.html b/docs/0.15.0/once-3db83dd/index.html deleted file mode 100755 index 746782ff..00000000 --- a/docs/0.15.0/once-3db83dd/index.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - Mockingbird - once - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Variable -once -

- -
let once: Int
-
-

A count of one.

- -
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/parseMangledSwiftSymbol(_:isType:)-3be6b73/index.html b/docs/0.15.0/parseMangledSwiftSymbol(_:isType:)-3be6b73/index.html deleted file mode 100755 index 7884692d..00000000 --- a/docs/0.15.0/parseMangledSwiftSymbol(_:isType:)-3be6b73/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - Mockingbird - parseMangledSwiftSymbol(_:isType:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -parse​Mangled​Swift​Symbol(_:​is​Type:​) -

- -
public func parseMangledSwiftSymbol(_ mangled: String, isType: Bool = false) throws -> SwiftSymbol
-
-

This is likely to be the primary entry point to this file. Pass a string containing a Swift mangled symbol or type, get a parsed SwiftSymbol structure which can then be directly examined or printed.

- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
mangledString

the string to be parsed ("isType` is false, the string should start with a Swift Symbol prefix, _T, _$S or $S).

-
is​TypeBool

if true, no prefix is parsed and, on completion, the first item on the parse stack is returned.

-
-

Throws

-

a SwiftSymbolParseError error that contains parse position when the error occurred.

- -

Returns

-

the successfully parsed result

- -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/parseMangledSwiftSymbol(_:isType:symbolicReferenceResolver:)-111617a/index.html b/docs/0.15.0/parseMangledSwiftSymbol(_:isType:symbolicReferenceResolver:)-111617a/index.html deleted file mode 100755 index 31dffe20..00000000 --- a/docs/0.15.0/parseMangledSwiftSymbol(_:isType:symbolicReferenceResolver:)-111617a/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - Mockingbird - parseMangledSwiftSymbol(_:isType:symbolicReferenceResolver:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -parse​Mangled​Swift​Symbol(_:​is​Type:​symbolic​Reference​Resolver:​) -

- -
public func parseMangledSwiftSymbol<C: Collection>(_ mangled: C, isType: Bool = false, symbolicReferenceResolver: ((Int32, Int) throws -> SwiftSymbol)? = nil) throws -> SwiftSymbol where C.Iterator.Element == UnicodeScalar
-
-

Pass a collection of UnicodeScalars containing a Swift mangled symbol or type, get a parsed SwiftSymbol structure which can then be directly examined or printed.

- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
mangledC

the collection of UnicodeScalars to be parsed ("isType` is false, the string should start with a Swift Symbol prefix, _T, _$S or $S).

-
is​TypeBool

if true, no prefix is parsed and, on completion, the first item on the parse stack is returned.

-
-

Throws

-

a SwiftSymbolParseError error that contains parse position when the error occurred.

- -

Returns

-

the successfully parsed result

- -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/reset(_:)-2a0feaf/index.html b/docs/0.15.0/reset(_:)-2a0feaf/index.html deleted file mode 100755 index dd225481..00000000 --- a/docs/0.15.0/reset(_:)-2a0feaf/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Mockingbird - reset(_:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -reset(_:​) -

- -
public func reset(_ mocks: Mock)
-
-

Remove all recorded invocations and configured stubs.

- -
-
-

Fully reset a set of mocks during test runs by removing all recorded invocations and clearing -all configurations.

- -
let bird = mock(Bird.self)
-given(bird.getName()).willReturn("Ryan")
-
-print(bird.name)  // Prints "Ryan"
-verify(bird.getName()).wasCalled()  // Passes
-
-reset(bird)
-
-print(bird.name)  // Error: Missing stubbed implementation
-verify(bird.getName()).wasCalled()  // Error: Got 0 invocations
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mocksMock

A set of mocks to reset.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/sequence(of:)-c40bb93/index.html b/docs/0.15.0/sequence(of:)-c40bb93/index.html deleted file mode 100755 index a5add1b4..00000000 --- a/docs/0.15.0/sequence(of:)-c40bb93/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Mockingbird - sequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -sequence(of:​) -

- -
public func sequence<DeclarationType: Declaration, InvocationType, ReturnType>(of implementations: InvocationType) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>
-
-

Stub a sequence of implementations.

- -
-
-

Provide one or more implementations which will be returned sequentially for each invocation. The -last implementation will be used if the number of invocations is greater than the number of -implementations provided.

- -
given(bird.getName()).willReturn(sequence(of: {
-  return Bool.random() ? "Ryan" : "Meisters"
-}, {
-  return Bool.random() ? "Sterling" : "Hackley"
-}))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Hackley"
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementationsInvocation​Type

A sequence of implementations to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/sequence(of:)-d9da3e4/index.html b/docs/0.15.0/sequence(of:)-d9da3e4/index.html deleted file mode 100755 index c9e48c4e..00000000 --- a/docs/0.15.0/sequence(of:)-d9da3e4/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - Mockingbird - sequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -sequence(of:​) -

- -
public func sequence<DeclarationType: Declaration, InvocationType, ReturnType>(of values: ReturnType) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>
-
-

Stub a sequence of values.

- -
-
-

Provide one or more values which will be returned sequentially for each invocation. The last -value will be used if the number of invocations is greater than the number of values provided.

- -
given(bird.getName())
-  .willReturn(sequence(of: "Ryan", "Sterling"))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Sterling"
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
valuesReturn​Type

A sequence of values to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/swizzleTestFailer(_:)-d923326/index.html b/docs/0.15.0/swizzleTestFailer(_:)-d923326/index.html deleted file mode 100755 index f99aa1f8..00000000 --- a/docs/0.15.0/swizzleTestFailer(_:)-d923326/index.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - Mockingbird - swizzleTestFailer(_:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -swizzle​Test​Failer(_:​) -

- -
public func swizzleTestFailer(_ newTestFailer: TestFailer)
-
-

Change the current global test failer.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
new​Test​FailerTest​Failer

A test failer instance to start handling test failures.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/twice-f36cfd6/index.html b/docs/0.15.0/twice-f36cfd6/index.html deleted file mode 100755 index 3e5116be..00000000 --- a/docs/0.15.0/twice-f36cfd6/index.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - Mockingbird - twice - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Variable -twice -

- -
let twice: Int
-
-

A count of two.

- -
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/useDefaultValues(from:on:)-5df93fa/index.html b/docs/0.15.0/useDefaultValues(from:on:)-5df93fa/index.html deleted file mode 100755 index 1e88b784..00000000 --- a/docs/0.15.0/useDefaultValues(from:on:)-5df93fa/index.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - Mockingbird - useDefaultValues(from:on:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -use​Default​Values(from:​on:​) -

- -
public func useDefaultValues(from valueProvider: ValueProvider, on mock: Mock)
-
-

Start returning default values for unstubbed methods on a single mock.

- -
-
-

Mocks are strict by default, meaning that calls to unstubbed methods will trigger a test -failure. Methods returning Void do not need to be stubbed in strict mode.

- -
let bird = mock(Bird.self)
-print(bird.name)  // Fails because `bird.getName()` is not stubbed
-bird.fly()        // Okay because `fly()` has a `Void` return type
-
-

To return default values for unstubbed methods, use a ValueProvider with the initialized mock. -Mockingbird provides preset value providers which are guaranteed to be backwards compatible, -such as .standardProvider.

- -
useDefaultValues(from: .standardProvider, on: bird)
-print(bird.name)  // Prints ""
-
-

You can create custom value providers by registering values for types. See Providable for how -to provide "wildcard" instances for generic types.

- -
var valueProvider = ValueProvider(from: .standardProvider)
-valueProvider.register("Ryan", for: String.self)
-useDefaultValues(from: valueProvider, on: bird)
-print(bird.name)  // Prints "Ryan"
-
-

Values from concrete stubs always have a higher precedence than default values.

- -
given(bird.getName()) ~> "Ryan"
-print(bird.name)  // Prints "Ryan"
-
-useDefaultValues(from: .standardProvider, on: bird)
-print(bird.name)  // Prints "Ryan"
-
- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
value​ProviderValue​Provider

A value provider to add.

-
mockMock

A mock that should start using the value provider.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/useDefaultValues(from:on:)-7eb6cc5/index.html b/docs/0.15.0/useDefaultValues(from:on:)-7eb6cc5/index.html deleted file mode 100755 index 3b51f506..00000000 --- a/docs/0.15.0/useDefaultValues(from:on:)-7eb6cc5/index.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - Mockingbird - useDefaultValues(from:on:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -use​Default​Values(from:​on:​) -

- -
public func useDefaultValues(from valueProvider: ValueProvider, on mocks: [Mock])
-
-

Start returning default values for unstubbed methods on multiple mocks.

- -
-
-

Mocks are strict by default, meaning that calls to unstubbed methods will trigger a test -failure. Methods returning Void do not need to be stubbed in strict mode.

- -
let bird = mock(Bird.self)
-print(bird.name)  // Fails because `bird.getName()` is not stubbed
-bird.fly()        // Okay because `fly()` has a `Void` return type
-
-

To return default values for unstubbed methods, use a ValueProvider with the initialized mock. -Mockingbird provides preset value providers which are guaranteed to be backwards compatible, -such as .standardProvider.

- -
let anotherBird = mock(Bird.self)
-useDefaultValues(from: .standardProvider, on: [bird, anotherBird])
-print(bird.name)  // Prints ""
-print(anotherBird.name)  // Prints ""
-
-

You can create custom value providers by registering values for types. See Providable for how -to provide "wildcard" instances for generic types.

- -
var valueProvider = ValueProvider(from: .standardProvider)
-valueProvider.register("Ryan", for: String.self)
-
-useDefaultValues(from: valueProvider, on: [bird, anotherBird])
-
-print(bird.name)  // Prints "Ryan"
-print(anotherBird.name)  // Prints "Ryan"
-
-

Values from concrete stubs always have a higher precedence than default values.

- -
given(bird.getName()) ~> "Ryan"
-print(bird.name)  // Prints "Ryan"
-
-useDefaultValues(from: .standardProvider, on: [bird, anotherBird])
-
-print(bird.name)  // Prints "Ryan"
-print(anotherBird.name)  // Prints ""
-
- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
value​ProviderValue​Provider

A value provider to add.

-
mocks[Mock]

A list of mocks that should start using the value provider.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.15.0/verify(_:file:line:)-a722fba/index.html b/docs/0.15.0/verify(_:file:line:)-a722fba/index.html deleted file mode 100755 index a667de79..00000000 --- a/docs/0.15.0/verify(_:file:line:)-a722fba/index.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - Mockingbird - verify(_:file:line:) - - - -
- - - Mockingbird - - Documentation - - 0.15.0 -
- - - - - -
-
-

-Function -verify(_:​file:​line:​) -

- -
public func verify<DeclarationType: Declaration, InvocationType, ReturnType>(_ declaration: Mockable<DeclarationType, InvocationType, ReturnType>, file: StaticString = #file, line: UInt = #line) -> VerificationManager<InvocationType, ReturnType>
-
-

Verify that a mock recieved a specific invocation some number of times.

- -
-
-

Verification lets you assert that a mock received a particular invocation during its lifetime.

- -
verify(bird.doMethod()).wasCalled()
-verify(bird.getProperty()).wasCalled()
-verify(bird.setProperty(any())).wasCalled()
-
-

Match exact or wildcard argument values when verifying methods with parameters.

- -
verify(bird.canChirp(volume: any())).wasCalled()     // Called with any volume
-verify(bird.canChirp(volume: notNil())).wasCalled()  // Called with any non-nil volume
-verify(bird.canChirp(volume: 10)).wasCalled()        // Called with volume = 10
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mock

A mocked declaration to verify.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/ArgumentCaptor-1017688/index.html b/docs/0.16.0/ArgumentCaptor-1017688/index.html deleted file mode 100755 index 8fbcbb61..00000000 --- a/docs/0.16.0/ArgumentCaptor-1017688/index.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - Mockingbird - ArgumentCaptor - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Class - Argument​Captor -

- -
public class ArgumentCaptor<ParameterType>: ArgumentMatcher
-
-

Captures method arguments passed during mock invocations.

- -
-
-

An argument captor extracts received argument values which can be used in other parts of the -test.

- -
let bird = mock(Bird.self)
-bird.name = "Ryan"
-
-let nameCaptor = ArgumentCaptor<String>()
-verify(bird.setName(nameCaptor.matcher)).wasCalled()
-print(nameCaptor.value)  // Prints "Ryan"
-
-
-
- -
- - - - - - -%3 - - -ArgumentCaptor - - -ArgumentCaptor - - - - -ArgumentMatcher - -ArgumentMatcher - - -ArgumentCaptor->ArgumentMatcher - - - - - - - - -
-

Superclass

-
-
ArgumentMatcher
-

Matches argument values with a comparator.

-
-
-
-
-

Initializers

- -
-

- init(weak:​) -

-
public init(weak: Bool = false)
-
-

Create a new argument captor.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
weakBool

Whether captured arguments should be stored weakly.

-
-
-
-
-

Properties

- -
-

- matcher -

-
var matcher: ParameterType
-
-

Passed as a parameter to mock verification contexts.

- -
-
-
-

- all​Values -

-
var allValues: [ParameterType]
-
-

All recorded argument values.

- -
-
-
-

- value -

-
var value: ParameterType?
-
-

The last recorded argument value.

- -
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/ArgumentMatcher-f013d1a/index.html b/docs/0.16.0/ArgumentMatcher-f013d1a/index.html deleted file mode 100755 index 3d1b596d..00000000 --- a/docs/0.16.0/ArgumentMatcher-f013d1a/index.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - Mockingbird - ArgumentMatcher - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Class - Argument​Matcher -

- -
public class ArgumentMatcher: CustomStringConvertible
-
-

Matches argument values with a comparator.

- -
-
- -
- - - - - - -%3 - - -ArgumentMatcher - - -ArgumentMatcher - - - - -CustomStringConvertible - -CustomStringConvertible - - -ArgumentMatcher->CustomStringConvertible - - - - -Equatable - -Equatable - - -ArgumentMatcher->Equatable - - - - -ArgumentCaptor - -ArgumentCaptor - - -ArgumentCaptor->ArgumentMatcher - - - - - - - - -
-

Subclasses

-
-
ArgumentCaptor
-

Captures method arguments passed during mock invocations.

-
-
-

Conforms To

-
-
CustomStringConvertible
-
Equatable
-
-
-
-

Properties

- -
-

- description -

-
let description: String
-
-

A description for test failure output.

- -
-
-
-
-

Methods

- -
-

- ==(lhs:​rhs:​) -

-
public static func ==(lhs: ArgumentMatcher, rhs: ArgumentMatcher) -> Bool
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/CountMatcher-4be5ae3/index.html b/docs/0.16.0/CountMatcher-4be5ae3/index.html deleted file mode 100755 index cb87ec5b..00000000 --- a/docs/0.16.0/CountMatcher-4be5ae3/index.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - Mockingbird - CountMatcher - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Structure - Count​Matcher -

- -
public struct CountMatcher
-
-

Checks whether a number matches some expected count.

- -
- -
-

Methods

- -
-

- or(_:​) -

-
public func or(_ countMatcher: CountMatcher) -> CountMatcher
-
-

Logically combine another count matcher, passing if either matches.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n = 1 || n ≥ 42
-verify(bird.fly()).wasCalled(exactly(once).or(atLeast(42)))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

Another count matcher to combine.

-
-

Returns

-

A combined count matcher.

- -
-
-

- or(_:​) -

-
public func or(_ times: Int) -> CountMatcher
-
-

Logically combine with an exact count, passing if either matches.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n = 1 || n = 2
-verify(bird.fly()).wasCalled(exactly(once).or(twice))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An exact count to combine.

-
-

Returns

-

A combined count matcher.

- -
-
-

- and(_:​) -

-
public func and(_ countMatcher: CountMatcher) -> CountMatcher
-
-

Logically combine another count matcher, only passing if both match.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n = 1 && n ≥ 42
-verify(bird.fly()).wasCalled(exactly(once).and(atLeast(42)))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

Another count matcher to combine.

-
-

Returns

-

A combined count matcher.

- -
-
-

- xor(_:​) -

-
public func xor(_ countMatcher: CountMatcher) -> CountMatcher
-
-

Logically combine another count matcher, only passing if one matches but not the other.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n ≤ 2 ⊕ n ≥ 1
-verify(bird.fly()).wasCalled(atMost(twice).xor(atLeast(once)))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

Another count matcher to combine.

-
-

Returns

-

A combined count matcher.

- -
-
-

- xor(_:​) -

-
public func xor(_ times: Int) -> CountMatcher
-
-

Logically combine an exact count, only passing if one matches but not the other.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n ≥ 1 ⊕ n = 2
-verify(bird.fly()).wasCalled(atLeast(once).xor(twice))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An exact count.

-
-

Returns

-

A combined count matcher.

- -
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/Declaration-f6338ac/index.html b/docs/0.16.0/Declaration-f6338ac/index.html deleted file mode 100755 index c4f80064..00000000 --- a/docs/0.16.0/Declaration-f6338ac/index.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - Mockingbird - Declaration - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Protocol - Declaration -

- -
public protocol Declaration
-
-

All mockable declaration types conform to this protocol.

- -
-
- -
- - - - - - -%3 - - -Declaration - - -Declaration - - - - -SubscriptDeclaration - -SubscriptDeclaration - - -SubscriptDeclaration->Declaration - - - - -FunctionDeclaration - -FunctionDeclaration - - -FunctionDeclaration->Declaration - - - - -VariableDeclaration - -VariableDeclaration - - -VariableDeclaration->Declaration - - - - - - - - -
-

Types Conforming to Declaration

-
-
VariableDeclaration
-

Mockable variable declarations.

-
-
FunctionDeclaration
-

Mockable function declarations.

-
-
SubscriptDeclaration
-

Mockable subscript declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/FunctionDeclaration-2ccea11/index.html b/docs/0.16.0/FunctionDeclaration-2ccea11/index.html deleted file mode 100755 index 5a09e84d..00000000 --- a/docs/0.16.0/FunctionDeclaration-2ccea11/index.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - Mockingbird - FunctionDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Class - Function​Declaration -

- -
public class FunctionDeclaration: Declaration
-
-

Mockable function declarations.

- -
-
- -
- - - - - - -%3 - - -FunctionDeclaration - - -FunctionDeclaration - - - - -Declaration - -Declaration - - -FunctionDeclaration->Declaration - - - - -ThrowingFunctionDeclaration - -ThrowingFunctionDeclaration - - -ThrowingFunctionDeclaration->FunctionDeclaration - - - - - - - - -
-

Subclasses

-
-
ThrowingFunctionDeclaration
-

Mockable throwing function declarations.

-
-
-

Conforms To

-
-
Declaration
-

All mockable declaration types conform to this protocol.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/ImplementationProvider-c664b1e/index.html b/docs/0.16.0/ImplementationProvider-c664b1e/index.html deleted file mode 100755 index 89a7180f..00000000 --- a/docs/0.16.0/ImplementationProvider-c664b1e/index.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - Mockingbird - ImplementationProvider - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Structure - Implementation​Provider -

- -
public struct ImplementationProvider<DeclarationType: Declaration, InvocationType, ReturnType>
-
-

Provides implementation functions used to stub behavior and return values.

- -
- -
-

Initializers

- -
-

- init(implementation​Creator:​) -

-
public init(implementationCreator: @escaping () -> Any?)
-
-

Create an implementation provider with an optional callback.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
implementation​Creator@escaping () -> Any?

A closure returning an implementation when evaluated.

-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/MKBFail(_:isFatal:file:line:)-c41bd8d/index.html b/docs/0.16.0/MKBFail(_:isFatal:file:line:)-c41bd8d/index.html deleted file mode 100755 index 868cb7b9..00000000 --- a/docs/0.16.0/MKBFail(_:isFatal:file:line:)-c41bd8d/index.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - Mockingbird - MKBFail(_:isFatal:file:line:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -MKBFail(_:​is​Fatal:​file:​line:​) -

- -
public func MKBFail(_ message: String, isFatal: Bool = false, file: StaticString = #file, line: UInt = #line)
-
-

Called by Mockingbird on test assertion failures.

- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
messageString

A description of the failure.

-
is​FatalBool

If true, test case execution should not continue.

-
fileStatic​String

The file where the failure occurred.

-
lineUInt

The line in the file where the failure occurred.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/Mock-28ffcc3/index.html b/docs/0.16.0/Mock-28ffcc3/index.html deleted file mode 100755 index 3b876075..00000000 --- a/docs/0.16.0/Mock-28ffcc3/index.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - Mockingbird - Mock - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Protocol - Mock -

- -
public protocol Mock
-
-

All generated mocks conform to this protocol.

- -
-
- -
- - - - - - -%3 - - -Mock - - -Mock - - - - -StaticMock - -StaticMock - - -StaticMock->Mock - - - - - - - - -
-

Types Conforming to Mock

-
-
StaticMock
-

Used to store invocations on static or class scoped methods.

-
-
-
- - - -
-

Requirements

- -
-

- mocking​Context -

-
var mockingContext: MockingContext
-
-

Information about received invocations.

- -
-
-
-

- stubbing​Context -

-
var stubbingContext: StubbingContext
-
-

Implementations for stubbing behaviors.

- -
-
-
-

- mock​Metadata -

-
var mockMetadata: MockMetadata
-
-

Static metadata about the mock created at generation time.

- -
-
-
-

- source​Location -

-
var sourceLocation: SourceLocation?
-
-

Where the mock was initialized.

- -
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/MockMetadata-36657c4/index.html b/docs/0.16.0/MockMetadata-36657c4/index.html deleted file mode 100755 index 8d3f40ab..00000000 --- a/docs/0.16.0/MockMetadata-36657c4/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - Mockingbird - MockMetadata - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Structure - Mock​Metadata -

- -
public struct MockMetadata
-
-

Stores information about generated mocks.

- -
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/Mockable-9a5a67c/index.html b/docs/0.16.0/Mockable-9a5a67c/index.html deleted file mode 100755 index b97b726b..00000000 --- a/docs/0.16.0/Mockable-9a5a67c/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - Mockingbird - Mockable - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Structure - Mockable -

- -
public struct Mockable<DeclarationType: Declaration, InvocationType, ReturnType>
-
-

Represents a mocked declaration that can be stubbed or verified.

- -
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/MockingContext-c5faed5/index.html b/docs/0.16.0/MockingContext-c5faed5/index.html deleted file mode 100755 index ecf76a83..00000000 --- a/docs/0.16.0/MockingContext-c5faed5/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - Mockingbird - MockingContext - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Class - Mocking​Context -

- -
public class MockingContext
-
-

Stores invocations received by mocks.

- -
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/NonEscapingClosure-e61507c/index.html b/docs/0.16.0/NonEscapingClosure-e61507c/index.html deleted file mode 100755 index 50c9f842..00000000 --- a/docs/0.16.0/NonEscapingClosure-e61507c/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - Mockingbird - NonEscapingClosure - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Class - Non​Escaping​Closure -

- -
public class NonEscapingClosure<ClosureType>: NonEscapingType
-
-

Placeholder for non-escaping closure parameter types.

- -
-
-

Non-escaping closures cannot be stored in an Invocation so an instance of a -NonEscapingClosure is stored instead.

- -
protocol Bird {
-  func send(_ message: String, callback: (Result) -> Void)
-}
-
-bird.send("Hello", callback: { print($0) })
-
-// Must use a wildcard argument matcher like `any`
-verify(bird.send("Hello", callback: any())).wasCalled()
-
-

Mark closure parameter types as @escaping to capture closures during verification.

- -
protocol Bird {
-  func send(_ message: String, callback: @escaping (Result) -> Void)
-}
-
-bird.send("Hello", callback: { print($0) })
-
-let argumentCaptor = ArgumentCaptor<(Result) -> Void>()
-verify(bird.send("Hello", callback: argumentCaptor.matcher)).wasCalled()
-argumentCaptor.value?(.success)  // Prints Result.success
-
-
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/OrderedVerificationOptions-77823cc/index.html b/docs/0.16.0/OrderedVerificationOptions-77823cc/index.html deleted file mode 100755 index 045e7b2e..00000000 --- a/docs/0.16.0/OrderedVerificationOptions-77823cc/index.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - Mockingbird - OrderedVerificationOptions - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Structure - Ordered​Verification​Options -

- -
public struct OrderedVerificationOptions: OptionSet
-
-

Additional options to increase the strictness of inOrder verification blocks.

- -
-
- -
- - - - - - -%3 - - -OrderedVerificationOptions - - -OrderedVerificationOptions - - - - -OptionSet - -OptionSet - - -OrderedVerificationOptions->OptionSet - - - - - - - - -
-

Conforms To

-
-
OptionSet
-
-
-
-

Initializers

- -
-

- init(raw​Value:​) -

-
public init(rawValue: Int)
-
-
-
-

Properties

- -
-

- raw​Value -

-
let rawValue: Int
-
-
-

- no​Invocations​Before -

-
let noInvocationsBefore
-
-

Check that there are no recorded invocations before those explicitly verified in the block.

- -
-
-

Use this option to disallow invocations prior to those satisfying the first verification.

- -
bird.eat()
-bird.fly()
-bird.chirp()
-
-// Passes _without_ the option
-inOrder {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-// Fails with the option
-inOrder(with: .noInvocationsBefore) {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-
-
-
-

- no​Invocations​After -

-
let noInvocationsAfter
-
-

Check that there are no recorded invocations after those explicitly verified in the block.

- -
-
-

Use this option to disallow subsequent invocations to those satisfying the last verification.

- -
bird.fly()
-bird.chirp()
-bird.eat()
-
-// Passes _without_ the option
-inOrder {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-// Fails with the option
-inOrder(with: .noInvocationsAfter) {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-
-
-
-

- only​Consecutive​Invocations -

-
let onlyConsecutiveInvocations
-
-

Check that there are no recorded invocations between those explicitly verified in the block.

- -
-
-

Use this option to disallow non-consecutive invocations to each verification.

- -
bird.fly()
-bird.eat()
-bird.chirp()
-
-// Passes _without_ the option
-inOrder {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-// Fails with the option
-inOrder(with: .noInvocationsAfter) {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/PropertyGetterDeclaration-db9ea0d/index.html b/docs/0.16.0/PropertyGetterDeclaration-db9ea0d/index.html deleted file mode 100755 index 807df7d6..00000000 --- a/docs/0.16.0/PropertyGetterDeclaration-db9ea0d/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Mockingbird - PropertyGetterDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Class - Property​Getter​Declaration -

- -
public class PropertyGetterDeclaration: VariableDeclaration
-
-

Mockable property getter declarations.

- -
-
- -
- - - - - - -%3 - - -PropertyGetterDeclaration - - -PropertyGetterDeclaration - - - - -VariableDeclaration - -VariableDeclaration - - -PropertyGetterDeclaration->VariableDeclaration - - - - - - - - -
-

Superclass

-
-
VariableDeclaration
-

Mockable variable declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/PropertySetterDeclaration-7cfb3cc/index.html b/docs/0.16.0/PropertySetterDeclaration-7cfb3cc/index.html deleted file mode 100755 index 840a14b5..00000000 --- a/docs/0.16.0/PropertySetterDeclaration-7cfb3cc/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Mockingbird - PropertySetterDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Class - Property​Setter​Declaration -

- -
public class PropertySetterDeclaration: VariableDeclaration
-
-

Mockable property setter declarations.

- -
-
- -
- - - - - - -%3 - - -PropertySetterDeclaration - - -PropertySetterDeclaration - - - - -VariableDeclaration - -VariableDeclaration - - -PropertySetterDeclaration->VariableDeclaration - - - - - - - - -
-

Superclass

-
-
VariableDeclaration
-

Mockable variable declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/Providable-7bc5aa7/index.html b/docs/0.16.0/Providable-7bc5aa7/index.html deleted file mode 100755 index 936fb8ba..00000000 --- a/docs/0.16.0/Providable-7bc5aa7/index.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - Mockingbird - Providable - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Protocol - Providable -

- -
public protocol Providable
-
-

A type that can provide concrete instances of itself.

- -
-
-

Provide wildcard instances for generic types by conforming the base type to Providable and -registering the type. Non-wildcard instances have precedence over wildcard instances.

- -
extension Array: Providable {
-  public static func createInstance() -> Self? {
-    return Array()
-  }
-}
-
-var valueProvider = ValueProvider()
-valueProvider.registerType(Array<Any>.self)
-
-// All specializations of `Array` return an empty array
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints []
-print(valueProvider.provideValue(for: Array<Data>.self))    // Prints []
-
-// Register a non-wildcard instance of `Array<String>`
-valueProvider.register(["A", "B"], for: Array<String>.self)
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints ["A", "B"]
-print(valueProvider.provideValue(for: Array<Data>.self))    // Prints []
-
- -
- - - - -
-

Requirements

- -
-

- create​Instance() -

-
static func createInstance() -> Self?
-
-

Create a concrete instance of this type, or nil if no concrete instance is available.

- -
-
- -
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/SourceLocation-656fd60/index.html b/docs/0.16.0/SourceLocation-656fd60/index.html deleted file mode 100755 index 02362fb6..00000000 --- a/docs/0.16.0/SourceLocation-656fd60/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - Mockingbird - SourceLocation - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Structure - Source​Location -

- -
public struct SourceLocation
-
-

References a line of code in a file.

- -
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/StaticMock-882efeb/index.html b/docs/0.16.0/StaticMock-882efeb/index.html deleted file mode 100755 index 1b69b03e..00000000 --- a/docs/0.16.0/StaticMock-882efeb/index.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - Mockingbird - StaticMock - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Class - Static​Mock -

- -
public class StaticMock: Mock
-
-

Used to store invocations on static or class scoped methods.

- -
-
- -
- - - - - - -%3 - - -StaticMock - - -StaticMock - - - - -Mock - -Mock - - -StaticMock->Mock - - - - - - - - -
-

Conforms To

-
-
Mock
-

All generated mocks conform to this protocol.

-
-
-
-
-

Properties

- -
-

- mocking​Context -

-
let mockingContext
-
-

Information about received invocations.

- -
-
-
-

- stubbing​Context -

-
let stubbingContext
-
-

Implementations for stubbing behaviors.

- -
-
-
-

- mock​Metadata -

-
let mockMetadata
-
-

Static metadata about the mock created at generation time.

- -
-
-
-

- source​Location -

-
var sourceLocation: SourceLocation?
-
-

Where the mock was initialized.

- -
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/StubbingContext-794fb76/index.html b/docs/0.16.0/StubbingContext-794fb76/index.html deleted file mode 100755 index ab6a1c78..00000000 --- a/docs/0.16.0/StubbingContext-794fb76/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - Mockingbird - StubbingContext - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Class - Stubbing​Context -

- -
public class StubbingContext
-
-

Stores stubbed implementations used by mocks.

- -
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/StubbingManager-761d798/index.html b/docs/0.16.0/StubbingManager-761d798/index.html deleted file mode 100755 index 2d707f4e..00000000 --- a/docs/0.16.0/StubbingManager-761d798/index.html +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - Mockingbird - StubbingManager - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Class - Stubbing​Manager -

- -
public class StubbingManager<DeclarationType: Declaration, InvocationType, ReturnType>
-
-

An intermediate object used for stubbing declarations returned by given.

- -
-
- - -

Nested Types

-
-
StubbingManager.TransitionStrategy
-

When to use the next chained implementation provider.

-
-
-
-
-

Methods

- -
-

- will​Return(_:​) -

-
@discardableResult public func willReturn(_ value: ReturnType) -> Self
-
-

Stub a mocked method or property by returning a single value.

- -
-
-

Stubbing allows you to define custom behavior for mocks to perform.

- -
given(bird.doMethod()).willReturn(someValue)
-given(bird.getProperty()).willReturn(someValue)
-
-

Match exact or wildcard argument values when stubbing methods with parameters. Stubs added -later have a higher precedence, so add stubs with specific matchers last.

- -
given(bird.canChirp(volume: any())).willReturn(true)     // Any volume
-given(bird.canChirp(volume: notNil())).willReturn(true)  // Any non-nil volume
-given(bird.canChirp(volume: 10)).willReturn(true)        // Volume = 10
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
valueReturn​Type

A stubbed value to return.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will​Return(_:​transition:​) -

-
@discardableResult public func willReturn(_ provider: ImplementationProvider<DeclarationType, InvocationType, ReturnType>, transition: TransitionStrategy = .onFirstNil) -> Self
-
-

Stub a mocked method or property with an implementation provider.

- -
-
-

There are several preset implementation providers such as lastSetValue, which can be used -with property getters to automatically save and return values.

- -
given(bird.getName()).willReturn(lastSetValue(initial: ""))
-print(bird.name)  // Prints ""
-bird.name = "Ryan"
-print(bird.name)  // Prints "Ryan"
-
-

Implementation providers usually return multiple values, so when using chained stubbing it's -necessary to specify a transition strategy that defines when to go to the next stub.

- -
given(bird.getName())
-  .willReturn(lastSetValue(initial: ""), transition: .after(2))
-  .willReturn("Sterling")
-
-print(bird.name)  // Prints ""
-bird.name = "Ryan"
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
providerImplementation​Provider<Declaration​Type, Invocation​Type, Return​Type>

An implementation provider that creates closure implementation stubs.

-
transitionTransition​Strategy

When to use the next implementation provider in the list.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
@discardableResult public func will(_ implementation: InvocationType) -> Self
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-

Stubs are type safe and work with inout and closure parameter types.

- -
protocol Bird {
-  func send(_ message: inout String)
-  func fly(callback: (Result) -> Void)
-}
-
-// Inout parameter type
-var message = "Hello!"
-bird.send(&message)
-print(message)   // Prints "HELLO!"
-
-// Closure parameter type
-given(bird.fly(callback: any())).will { callback in
-  callback(.success)
-}
-bird.fly(callback: { result in
-  print(result)  // Prints Result.success
-})
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementationInvocation​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/StubbingManager_TransitionStrategy-9f44b8f/index.html b/docs/0.16.0/StubbingManager_TransitionStrategy-9f44b8f/index.html deleted file mode 100755 index 425f2efa..00000000 --- a/docs/0.16.0/StubbingManager_TransitionStrategy-9f44b8f/index.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - Mockingbird - StubbingManager.TransitionStrategy - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Enumeration - Stubbing​Manager.​Transition​Strategy -

- -
public enum TransitionStrategy
-
-

When to use the next chained implementation provider.

- -
-
- - -

Member Of

-
-
StubbingManager
-

An intermediate object used for stubbing declarations returned by given.

-
-
-
-
-

Enumeration Cases

- -
-

- after -

-
case after(_ times: Int)
-
-

Go to the next provider after providing a certain number of implementations.

- -
-
-

This transition strategy is particularly useful for non-finite value providers such as -sequence and loopingSequence.

- -
given(bird.getName())
-  .willReturn(loopingSequence(of: "Ryan", "Sterling"), transition: .after(3))
-  .willReturn("Andrew")
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Andrew"
-
-
-
-
-

- on​First​Nil -

-
case onFirstNil
-
-

Use the current provider until it provides a nil implementation.

- -
-
-

This transition strategy should be used for finite value providers like finiteSequence -that are nil terminated to indicate an invalidated state.

- -
given(bird.getName())
-  .willReturn(finiteSequence(of: "Ryan", "Sterling"), transition: .onFirstNil)
-  .willReturn("Andrew")
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Andrew"
-
-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/SubscriptDeclaration-38e94f4/index.html b/docs/0.16.0/SubscriptDeclaration-38e94f4/index.html deleted file mode 100755 index efc53e6c..00000000 --- a/docs/0.16.0/SubscriptDeclaration-38e94f4/index.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - Mockingbird - SubscriptDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Class - Subscript​Declaration -

- -
public class SubscriptDeclaration: Declaration
-
-

Mockable subscript declarations.

- -
-
- -
- - - - - - -%3 - - -SubscriptDeclaration - - -SubscriptDeclaration - - - - -Declaration - -Declaration - - -SubscriptDeclaration->Declaration - - - - -SubscriptSetterDeclaration - -SubscriptSetterDeclaration - - -SubscriptSetterDeclaration->SubscriptDeclaration - - - - -SubscriptGetterDeclaration - -SubscriptGetterDeclaration - - -SubscriptGetterDeclaration->SubscriptDeclaration - - - - - - - - -
-

Subclasses

-
-
SubscriptGetterDeclaration
-

Mockable subscript getter declarations.

-
-
SubscriptSetterDeclaration
-

Mockable subscript setter declarations.

-
-
-

Conforms To

-
-
Declaration
-

All mockable declaration types conform to this protocol.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/SubscriptGetterDeclaration-2324199/index.html b/docs/0.16.0/SubscriptGetterDeclaration-2324199/index.html deleted file mode 100755 index 2a7bf376..00000000 --- a/docs/0.16.0/SubscriptGetterDeclaration-2324199/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Mockingbird - SubscriptGetterDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Class - Subscript​Getter​Declaration -

- -
public class SubscriptGetterDeclaration: SubscriptDeclaration
-
-

Mockable subscript getter declarations.

- -
-
- -
- - - - - - -%3 - - -SubscriptGetterDeclaration - - -SubscriptGetterDeclaration - - - - -SubscriptDeclaration - -SubscriptDeclaration - - -SubscriptGetterDeclaration->SubscriptDeclaration - - - - - - - - -
-

Superclass

-
-
SubscriptDeclaration
-

Mockable subscript declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/SubscriptSetterDeclaration-a66f358/index.html b/docs/0.16.0/SubscriptSetterDeclaration-a66f358/index.html deleted file mode 100755 index 96920cce..00000000 --- a/docs/0.16.0/SubscriptSetterDeclaration-a66f358/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Mockingbird - SubscriptSetterDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Class - Subscript​Setter​Declaration -

- -
public class SubscriptSetterDeclaration: SubscriptDeclaration
-
-

Mockable subscript setter declarations.

- -
-
- -
- - - - - - -%3 - - -SubscriptSetterDeclaration - - -SubscriptSetterDeclaration - - - - -SubscriptDeclaration - -SubscriptDeclaration - - -SubscriptSetterDeclaration->SubscriptDeclaration - - - - - - - - -
-

Superclass

-
-
SubscriptDeclaration
-

Mockable subscript declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/TestFailer-4ae7a4d/index.html b/docs/0.16.0/TestFailer-4ae7a4d/index.html deleted file mode 100755 index 611a6ae3..00000000 --- a/docs/0.16.0/TestFailer-4ae7a4d/index.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - Mockingbird - TestFailer - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Protocol - Test​Failer -

- -
public protocol TestFailer
-
-

A type that can handle test failures emitted by Mockingbird.

- -
- - - - -
-

Requirements

- -
-

- fail(message:​is​Fatal:​file:​line:​) -

-
func fail(message: String, isFatal: Bool, file: StaticString, line: UInt)
-
-

Fail the current test case.

- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
messageString

A description of the failure.

-
is​FatalBool

If true, test case execution should not continue.

-
fileStatic​String

The file where the failure occurred.

-
lineUInt

The line in the file where the failure occurred.

-
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/ThrowingFunctionDeclaration-9b512dc/index.html b/docs/0.16.0/ThrowingFunctionDeclaration-9b512dc/index.html deleted file mode 100755 index a1c3c12d..00000000 --- a/docs/0.16.0/ThrowingFunctionDeclaration-9b512dc/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Mockingbird - ThrowingFunctionDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Class - Throwing​Function​Declaration -

- -
public class ThrowingFunctionDeclaration: FunctionDeclaration
-
-

Mockable throwing function declarations.

- -
-
- -
- - - - - - -%3 - - -ThrowingFunctionDeclaration - - -ThrowingFunctionDeclaration - - - - -FunctionDeclaration - -FunctionDeclaration - - -ThrowingFunctionDeclaration->FunctionDeclaration - - - - - - - - -
-

Superclass

-
-
FunctionDeclaration
-

Mockable function declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/ValueProvider-54037ad/index.html b/docs/0.16.0/ValueProvider-54037ad/index.html deleted file mode 100755 index 87b4ea71..00000000 --- a/docs/0.16.0/ValueProvider-54037ad/index.html +++ /dev/null @@ -1,550 +0,0 @@ - - - - - - Mockingbird - ValueProvider - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Structure - Value​Provider -

- -
public struct ValueProvider
-
-

Provides concrete instances of types.

- -
-
-

To return default values for unstubbed methods, use a ValueProvider with the initialized mock. -Mockingbird provides preset value providers which are guaranteed to be backwards compatible, -such as .standardProvider.

- -
let bird = mock(Bird.self)
-bird.useDefaultValues(from: .standardProvider)
-print(bird.name)  // Prints ""
-
-

You can create custom value providers by registering values for types.

- -
var valueProvider = ValueProvider()
-valueProvider.register("Ryan", for: String.self)
-
-bird.useDefaultValues(from: valueProvider)
-print(bird.name)  // Prints "Ryan"
-
-
- -
-

Initializers

- -
-

- init() -

-
public init()
-
-

Create an empty value provider.

- -
-
-
-
-

Properties

- -
-

- collections​Provider -

-
let collectionsProvider
-
-

A value provider with default-initialized collections.

- -
-
-

https://developer.apple.com/documentation/foundation/collections

- -
-
-
-

- primitives​Provider -

-
let primitivesProvider
-
-

A value provider with primitive Swift types.

- -
-
-

https://developer.apple.com/documentation/foundation/numbers_data_and_basic_values

- -
-
-
-

- basics​Provider -

-
let basicsProvider
-
-

A value provider with basic number and data types that are not primitives.

- -
-
-

https://developer.apple.com/documentation/foundation/numbers_data_and_basic_values

- -
-
-
-

- strings​Provider -

-
let stringsProvider
-
-

A value provider with string and text types.

- -
-
-

https://developer.apple.com/documentation/foundation/strings_and_text

- -
-
-
-

- dates​Provider -

-
let datesProvider
-
-

A value provider with date and time types.

- -
-
-

https://developer.apple.com/documentation/foundation/dates_and_times

- -
-
-
-

- standard​Provider -

-
let standardProvider
-
-

All preset value providers.

- -
-
-
-
-

Methods

- -
-

- add(_:​) -

-
mutating public func add(_ other: Self)
-
-

Adds the values from another value provider.

- -
-
-

Value providers can be composed by adding values from another provider. Values in the other -provider have precedence and will overwrite existing values in this provider.

- -
var valueProvider = ValueProvider()
-valueProvider.add(.standardProvider)
-print(valueProvider.provideValue(for: String.self))  // Prints ""
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
otherSelf

A value provider to combine.

-
-
-
-

- adding(_:​) -

-
public func adding(_ other: Self) -> Self
-
-

Returns a new value provider containing the values from both providers.

- -
-
-

Value providers can be composed by adding values from another provider. Values in the added -provider have precendence over those in base provider.

- -
let valueProvider = ValueProvider.collectionsProvider.adding(.primitivesProvider)
-print(valueProvider.provideValue(for: [Bool].self))  // Prints []
-print(valueProvider.provideValue(for: Int.self))     // Prints 0
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
otherSelf

A value provider to combine.

-
-

Returns

-

A new value provider with the values of lhs and rhs.

- -
-
-

- +(lhs:​rhs:​) -

-
static public func +(lhs: Self, rhs: Self) -> Self
-
-

Returns a new value provider containing the values from both providers.

- -
-
-

Value providers can be composed by adding values from other providers. Values in the second -provider have precendence over those in first provider.

- -
let valueProvider = .collectionsProvider + .primitivesProvider
-print(valueProvider.provideValue(for: [Bool].self))  // Prints []
-print(valueProvider.provideValue(for: Int.self))     // Prints 0
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
lhsSelf

A value provider.

-
rhsSelf

A value provider.

-
-

Returns

-

A new value provider with the values of lhs and rhs.

- -
-
-

- register(_:​for:​) -

-
mutating public func register<K, V>(_ value: V, for type: K.Type)
-
-

Register a value for a specific type.

- -
-
-

Create custom value providers by registering values for types.

- -
var valueProvider = ValueProvider()
-valueProvider.register("Ryan", for: String.self)
-print(valueProvider.provideValue(for: String.self))  // Prints "Ryan"
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
valueV

The value to register.

-
typeK.​Type

The type to register the value under. value must be of kind type.

-
-
-
-

- register​Type(_:​) -

-
mutating public func registerType<T: Providable>(_ type: T.Type = T.self)
-
-

Register a Providable type used to provide values for generic types.

- -
-
-

Provide wildcard instances for generic types by conforming the base type to Providable and -registering the type. Non-wildcard instances have precedence over wildcard instances.

- -
extension Array: Providable {
-  public static func createInstance() -> Self? {
-    return Array()
-  }
-}
-
-var valueProvider = ValueProvider()
-valueProvider.registerType(Array<Any>.self)
-
-// All specializations of `Array` return an empty array
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints []
-print(valueProvider.provideValue(for: Array<Data>.self))    // Prints []
-
-// Register a non-wildcard instance of `Array<String>`
-valueProvider.register(["A", "B"], for: Array<String>.self)
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints ["A", "B"]
-print(valueProvider.provideValue(for: Array<Data>.self))    // Prints []
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

A Providable type to register.

-
-
-
-

- remove(_:​) -

-
mutating public func remove<T>(_ type: T.Type)
-
-

Remove a registered value for a given type.

- -
-
-

Previously registered values can be removed from the top-level value provider. This does not -affect values provided by subproviders.

- -
var valueProvider = ValueProvider(from: .standardProvider)
-print(valueProvider.provideValue(for: String.self))  // Prints ""
-
-// Override the subprovider value
-valueProvider.register("Ryan", for: String.self)
-print(valueProvider.provideValue(for: String.self))  // Prints "Ryan"
-
-// Remove the registered value
-valueProvider.remove(String.self)
-print(valueProvider.provideValue(for: String.self))  // Prints ""
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The type to remove a previously registered value for.

-
-
-
-

- remove(_:​) -

-
mutating public func remove<T: Providable>(_ type: T.Type = T.self)
-
-

Remove a registered Providable type.

- -
-
-

Previously registered wildcard instances for generic types can be removed from the top-level -value provider.

- -
var valueProvider = ValueProvider()
-
-valueProvider.registerType(Array<Any>.self)
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints []
-
-valueProvider.remove(Array<Any>.self)
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints nil
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

A Providable type to remove.

-
-
-
-

- provide​Value(for:​) -

-
public func provideValue<T>(for type: T.Type = T.self) -> T?
-
-

Provide a value for a given type.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

A type to provide a value for.

-
-

Returns

-

A concrete instance of the given type, or nil if no value could be provided.

- -
-
-

- provide​Value(for:​) -

-
public func provideValue<T: Providable>(for type: T.Type = T.self) -> T?
-
-

Provide a value a given Providable type.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

A Providable type to provide a value for.

-
-

Returns

-

A concrete instance of the given type, or nil if no value could be provided.

- -
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/VariableDeclaration-c075015/index.html b/docs/0.16.0/VariableDeclaration-c075015/index.html deleted file mode 100755 index 8f05344e..00000000 --- a/docs/0.16.0/VariableDeclaration-c075015/index.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - Mockingbird - VariableDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Class - Variable​Declaration -

- -
public class VariableDeclaration: Declaration
-
-

Mockable variable declarations.

- -
-
- -
- - - - - - -%3 - - -VariableDeclaration - - -VariableDeclaration - - - - -Declaration - -Declaration - - -VariableDeclaration->Declaration - - - - -PropertySetterDeclaration - -PropertySetterDeclaration - - -PropertySetterDeclaration->VariableDeclaration - - - - -PropertyGetterDeclaration - -PropertyGetterDeclaration - - -PropertyGetterDeclaration->VariableDeclaration - - - - - - - - -
-

Subclasses

-
-
PropertyGetterDeclaration
-

Mockable property getter declarations.

-
-
PropertySetterDeclaration
-

Mockable property setter declarations.

-
-
-

Conforms To

-
-
Declaration
-

All mockable declaration types conform to this protocol.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/VerificationManager-94d5cc8/index.html b/docs/0.16.0/VerificationManager-94d5cc8/index.html deleted file mode 100755 index 2edcdf31..00000000 --- a/docs/0.16.0/VerificationManager-94d5cc8/index.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - Mockingbird - VerificationManager - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

- Structure - Verification​Manager -

- -
public struct VerificationManager<InvocationType, ReturnType>
-
-

An intermediate object used for verifying declarations returned by verify.

- -
- -
-

Methods

- -
-

- was​Called(_:​) -

-
public func wasCalled(_ countMatcher: CountMatcher)
-
-

Verify that the mock received the invocation some number of times using a count matcher.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

A count matcher defining the number of invocations to verify.

-
-
-
-

- was​Called(_:​) -

-
public func wasCalled(_ times: Int = once)
-
-

Verify that the mock received the invocation an exact number of times.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

The exact number of invocations expected.

-
-
-
-

- was​Never​Called() -

-
public func wasNeverCalled()
-
-

Verify that the mock never received the invocation.

- -
-
-
-

- returning(_:​) -

-
public func returning(_ type: ReturnType.Type = ReturnType.self) -> Self
-
-

Disambiguate methods overloaded by return type.

- -
-
-

Declarations for methods overloaded by return type cannot type inference and should be -disambiguated.

- -
protocol Bird {
-  func getMessage<T>() throws -> T    // Overloaded generically
-  func getMessage() throws -> String  // Overloaded explicitly
-  func getMessage() throws -> Data
-}
-
-verify(bird.send(any()))
-  .returning(String.self)
-  .wasCalled()
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeReturn​Type.​Type

The return type of the declaration to verify.

-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/all.css b/docs/0.16.0/all.css deleted file mode 100755 index 68137abd..00000000 --- a/docs/0.16.0/all.css +++ /dev/null @@ -1 +0,0 @@ -:root{--system-red:#ff3b30;--system-orange:#ff9500;--system-yellow:#fc0;--system-green:#34c759;--system-teal:#5ac8fa;--system-blue:#007aff;--system-indigo:#5856d6;--system-purple:#af52de;--system-pink:#ff2d55;--system-gray:#8e8e93;--system-gray2:#aeaeb2;--system-gray3:#c7c7cc;--system-gray4:#d1d1d6;--system-gray5:#e5e5ea;--system-gray6:#f2f2f7;--label:#000;--secondary-label:#3c3c43;--tertiary-label:#48484a;--quaternary-label:#636366;--placeholder-text:#8e8e93;--link:#007aff;--separator:#e5e5ea;--opaque-separator:#c6c6c8;--system-fill:#787880;--secondary-system-fill:#787880;--tertiary-system-fill:#767680;--quaternary-system-fill:#747480;--system-background:#fff;--secondary-system-background:#f2f2f7;--tertiary-system-background:#fff;--secondary-system-grouped-background:#fff;--tertiary-system-grouped-background:#f2f2f7}@supports (color:color(display-p3 1 1 1)){:root{--system-red:color(display-p3 1 0.2314 0.1882);--system-orange:color(display-p3 1 0.5843 0);--system-yellow:color(display-p3 1 0.8 0);--system-green:color(display-p3 0.2039 0.7804 0.349);--system-teal:color(display-p3 0.3529 0.7843 0.9804);--system-blue:color(display-p3 0 0.4784 1);--system-indigo:color(display-p3 0.3451 0.3373 0.8392);--system-purple:color(display-p3 0.6863 0.3216 0.8706);--system-pink:color(display-p3 1 0.1765 0.3333);--system-gray:color(display-p3 0.5569 0.5569 0.5765);--system-gray2:color(display-p3 0.6824 0.6824 0.698);--system-gray3:color(display-p3 0.7804 0.7804 0.8);--system-gray4:color(display-p3 0.8196 0.8196 0.8392);--system-gray5:color(display-p3 0.898 0.898 0.9176);--system-gray6:color(display-p3 0.949 0.949 0.9686);--label:color(display-p3 0 0 0);--secondary-label:color(display-p3 0.2353 0.2353 0.2627);--tertiary-label:color(display-p3 0.2823 0.2823 0.2901);--quaternary-label:color(display-p3 0.4627 0.4627 0.5019);--placeholder-text:color(display-p3 0.5568 0.5568 0.5764);--link:color(display-p3 0 0.4784 1);--separator:color(display-p3 0.898 0.898 0.9176);--opaque-separator:color(display-p3 0.7765 0.7765 0.7843);--system-fill:color(display-p3 0.4706 0.4706 0.502);--secondary-system-fill:color(display-p3 0.4706 0.4706 0.502);--tertiary-system-fill:color(display-p3 0.4627 0.4627 0.502);--quaternary-system-fill:color(display-p3 0.4549 0.4549 0.502);--system-background:color(display-p3 1 1 1);--secondary-system-background:color(display-p3 0.949 0.949 0.9686);--tertiary-system-background:color(display-p3 1 1 1);--secondary-system-grouped-background:color(display-p3 1 1 1);--tertiary-system-grouped-background:color(display-p3 0.949 0.949 0.9686)}}:root{--large-title:600 32pt/39pt sans-serif;--title-1:600 26pt/32pt sans-serif;--title-2:600 20pt/25pt sans-serif;--title-3:500 18pt/23pt sans-serif;--headline:500 15pt/20pt sans-serif;--body:300 15pt/20pt sans-serif;--callout:300 14pt/19pt sans-serif;--subhead:300 13pt/18pt sans-serif;--footnote:300 12pt/16pt sans-serif;--caption-1:300 11pt/13pt sans-serif;--caption-2:300 11pt/13pt sans-serif}@media screen and (max-width:768px){:root{--large-title:600 27.2pt/33.15pt sans-serif;--title-1:600 22.1pt/27.2pt sans-serif;--title-2:600 17pt/21.25pt sans-serif;--title-3:500 15.3pt/19.55pt sans-serif;--headline:500 12.75pt/17pt sans-serif;--body:300 12.75pt/17pt sans-serif;--callout:300 11.9pt/16.15pt sans-serif;--subhead:300 11.05pt/15.3pt sans-serif;--footnote:300 10.2pt/13.6pt sans-serif;--caption-1:300 9.35pt/11.05pt sans-serif;--caption-2:300 9.35pt/11.05pt sans-serif}}:root{--icon-case:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%2389c5e6' height='90' rx='8' stroke='%236bb7e1' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M20.21 50c0-20.7 11.9-32.79 30.8-32.79 16 0 28.21 10.33 28.7 25.32H64.19C63.4 35 58.09 30.11 51 30.11c-8.79 0-14.37 7.52-14.37 19.82s5.54 20 14.41 20c7.08 0 12.22-4.66 13.23-12.09h15.52c-.74 15.07-12.43 25-28.78 25C32 82.81 20.21 70.72 20.21 50z' fill='%23fff'/%3E%3C/svg%3E");--icon-class:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%239b98e6' height='90' rx='8' stroke='%235856d6' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='m20.21 50c0-20.7 11.9-32.79 30.8-32.79 16 0 28.21 10.33 28.7 25.32h-15.52c-.79-7.53-6.1-12.42-13.19-12.42-8.79 0-14.37 7.52-14.37 19.82s5.54 20 14.41 20c7.08 0 12.22-4.66 13.23-12.09h15.52c-.74 15.07-12.43 25-28.78 25-19.01-.03-30.8-12.12-30.8-32.84z' fill='%23fff'/%3E%3C/svg%3E");--icon-enumeration:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%23eca95b' height='90' rx='8' stroke='%23e89234' stroke-miterlimit='10' stroke-width='4' width='90' x='5.17' y='5'/%3E%3Cpath d='M71.9 81.71H28.43V18.29H71.9v13H44.56v12.62h25.71v11.87H44.56V68.7H71.9z' fill='%23fff'/%3E%3C/svg%3E");--icon-extension:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%23eca95b' height='90' rx='8' stroke='%23e89234' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cg fill='%23fff'%3E%3Cpath d='M54.43 81.93H20.51V18.07h33.92v12.26H32.61v13.8h20.45v11.32H32.61v14.22h21.82zM68.74 74.58h-.27l-2.78 7.35h-7.28L64 69.32l-6-12.54h8l2.74 7.3h.27l2.76-7.3h7.64l-6.14 12.54 5.89 12.61h-7.64z'/%3E%3C/g%3E%3C/svg%3E");--icon-function:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%237ac673' height='90' rx='8' stroke='%235bb74f' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M24.25 75.66A5.47 5.47 0 0130 69.93c1.55 0 3.55.41 6.46.41 3.19 0 4.78-1.55 5.46-6.65l1.5-10.14h-9.34a6 6 0 110-12h11.1l1.09-7.27C47.82 23.39 54.28 17.7 64 17.7c6.69 0 11.74 1.77 11.74 6.64A5.47 5.47 0 0170 30.07c-1.55 0-3.55-.41-6.46-.41-3.14 0-4.73 1.51-5.46 6.65l-.78 5.27h11.44a6 6 0 11.05 12H55.6l-1.78 12.11C52.23 76.61 45.72 82.3 36 82.3c-6.7 0-11.75-1.77-11.75-6.64z' fill='%23fff'/%3E%3C/svg%3E");--icon-method:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%235a98f8' height='90' rx='8' stroke='%232974ed' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M70.61 81.71v-39.6h-.31l-15.69 39.6h-9.22l-15.65-39.6h-.35v39.6H15.2V18.29h18.63l16 41.44h.36l16-41.44H84.8v63.42z' fill='%23fff'/%3E%3C/svg%3E");--icon-property:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%2389c5e6' height='90' rx='8' stroke='%236bb7e1' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M52.31 18.29c13.62 0 22.85 8.84 22.85 22.46s-9.71 22.37-23.82 22.37H41v18.59H24.84V18.29zM41 51h7c6.85 0 10.89-3.56 10.89-10.2S54.81 30.64 48 30.64h-7z' fill='%23fff'/%3E%3C/svg%3E");--icon-protocol:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%23ff6682' height='90' rx='8' stroke='%23ff2d55' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cg fill='%23fff'%3E%3Cpath d='M46.28 18.29c11.84 0 20 8.66 20 21.71s-8.44 21.71-20.6 21.71H34.87v20H22.78V18.29zM34.87 51.34H43c6.93 0 11-4 11-11.29S50 28.8 43.07 28.8h-8.2zM62 57.45h8v4.77h.16c.84-3.45 2.54-5.12 5.17-5.12a5.06 5.06 0 011.92.35V65a5.69 5.69 0 00-2.39-.51c-3.08 0-4.66 1.74-4.66 5.12v12.1H62z'/%3E%3C/g%3E%3C/svg%3E");--icon-structure:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%23b57edf' height='90' rx='8' stroke='%239454c2' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M38.38 63c.74 4.53 5.62 7.16 11.82 7.16s10.37-2.81 10.37-6.68c0-3.51-2.73-5.31-10.24-6.76l-6.5-1.23C31.17 53.14 24.62 47 24.62 37.28c0-12.22 10.59-20.09 25.18-20.09 16 0 25.36 7.83 25.53 19.91h-15c-.26-4.57-4.57-7.29-10.42-7.29s-9.31 2.63-9.31 6.37c0 3.34 2.9 5.18 9.8 6.5l6.5 1.23C70.46 46.51 76.61 52 76.61 62c0 12.74-10 20.83-26.72 20.83-15.82 0-26.28-7.3-26.5-19.78z' fill='%23fff'/%3E%3C/svg%3E");--icon-typealias:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%237ac673' height='90' rx='8' stroke='%235bb74f' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M42 81.71V31.3H24.47v-13h51.06v13H58v50.41z' fill='%23fff'/%3E%3C/svg%3E");--icon-variable:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%237ac673' height='90' rx='8' stroke='%235bb74f' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M39.85 81.71L19.63 18.29H38l12.18 47.64h.35L62.7 18.29h17.67L60.15 81.71z' fill='%23fff'/%3E%3C/svg%3E")}body,button,input,select,textarea{-moz-font-feature-settings:"kern";-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;direction:ltr;font-synthesis:none;text-align:left}h1:first-of-type,h2:first-of-type,h3:first-of-type,h4:first-of-type,h5:first-of-type,h6:first-of-type{margin-top:0}h1 code,h2 code,h3 code,h4 code,h5 code,h6 code{font-family:inherit;font-weight:inherit}h1 img,h2 img,h3 img,h4 img,h5 img,h6 img{margin:0 .5em .2em 0;vertical-align:middle;display:inline-block}h1+*,h2+*,h3+*,h4+*,h5+*,h6+*{margin-top:.8em}img+h1{margin-top:.5em}img+h1,img+h2,img+h3,img+h4,img+h5,img+h6{margin-top:.3em}:is(h1,h2,h3,h4,h5,h6)+:is(h1,h2,h3,h4,h5,h6){margin-top:.4em}:matches(h1,h2,h3,h4,h5,h6)+:matches(h1,h2,h3,h4,h5,h6){margin-top:.4em}:is(p,ul,ol)+:is(h1,h2,h3,h4,h5,h6){margin-top:1.6em}:matches(p,ul,ol)+:matches(h1,h2,h3,h4,h5,h6){margin-top:1.6em}:is(p,ul,ol)+*{margin-top:.8em}:matches(p,ul,ol)+*{margin-top:.8em}ol,ul{margin-left:1.17647em}:matches(ul,ol) :matches(ul,ol){margin-bottom:0;margin-top:0}nav h2{color:#3c3c43;color:var(--secondary-label);font-size:1rem;font-feature-settings:"c2sc";font-variant:small-caps;font-weight:600;text-transform:uppercase}nav ol,nav ul{margin:0;list-style:none}nav li li{font-size:smaller}a:link,a:visited{text-decoration:none}a:hover{text-decoration:underline}a:active{text-decoration:none}b,strong{font-weight:600}.discussion,.summary{font:300 14pt/19pt sans-serif;font:var(--callout)}article>.discussion{margin-bottom:2em}.discussion .highlight{padding:1em;text-indent:0}cite,dfn,em,i{font-style:italic}:matches(h1,h2,h3) sup{font-size:.4em}sup a{color:inherit;vertical-align:inherit}sup a:hover{color:#007aff;color:var(--link);text-decoration:none}sub{line-height:1}abbr{border:0}:lang(ja),:lang(ko),:lang(th),:lang(zh){font-style:normal}:lang(ko){word-break:keep-all}form fieldset{margin:1em auto;max-width:450px;width:95%}form label{display:block;font-size:1em;font-weight:400;line-height:1.5em;margin-bottom:14px;position:relative;width:100%}input[type=email],input[type=number],input[type=password],input[type=tel],input[type=text],input[type=url],textarea{border-radius:4px;border:1px solid #e5e5ea;border:1px solid var(--separator);color:#333;font-family:inherit;font-size:100%;font-weight:400;height:34px;margin:0;padding:0 1em;position:relative;vertical-align:top;width:100%;z-index:1}input[type=email],input [type=email]:focus,input[type=number],input [type=number]:focus,input[type=password],input [type=password]:focus,input[type=tel],input [type=tel]:focus,input[type=text],input [type=text]:focus,input[type=url],input [type=url]:focus,textarea,textarea:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none}input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,textarea:focus{border-color:#08c;box-shadow:0 0 0 3px rgba(0,136,204,.3);outline:0;z-index:9}input[type=email]:-moz-read-only,input[type=number]:-moz-read-only,input[type=password]:-moz-read-only,input[type=tel]:-moz-read-only,input[type=text]:-moz-read-only,input[type=url]:-moz-read-only,textarea:-moz-read-only{background:none;border:none;box-shadow:none;padding-left:0}input[type=email]:read-only,input[type=number]:read-only,input[type=password]:read-only,input[type=tel]:read-only,input[type=text]:read-only,input[type=url]:read-only,textarea:read-only{background:none;border:none;box-shadow:none;padding-left:0}::-webkit-input-placeholder{color:#8e8e93;color:var(--placeholder-text)}::-moz-placeholder{color:#8e8e93;color:var(--placeholder-text)}:-ms-input-placeholder{color:#8e8e93;color:var(--placeholder-text)}::-ms-input-placeholder{color:#8e8e93;color:var(--placeholder-text)}::placeholder{color:#8e8e93;color:var(--placeholder-text)}textarea{-webkit-overflow-scrolling:touch;line-height:1.4737;min-height:134px;overflow-y:auto;resize:vertical;transform:translateZ(0)}textarea,textarea:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none}select{background:transparent;border-radius:4px;border:none;cursor:pointer;font-family:inherit;font-size:1em;height:34px;margin:0;padding:0 1em;width:100%}select,select:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none}select:focus{border-color:#08c;box-shadow:0 0 0 3px rgba(0,136,204,.3);outline:0;z-index:9}input[type=file]{background:#fafafa;border-radius:4px;color:#333;cursor:pointer;font-family:inherit;font-size:100%;height:34px;margin:0;padding:6px 1em;position:relative;vertical-align:top;width:100%;z-index:1}input[type=file]:focus{border-color:#08c;outline:0;box-shadow:0 0 0 3px rgba(0,136,204,.3);z-index:9}button,button:focus,input[type=file]:focus,input[type=file]:focus:focus,input[type=reset],input[type=reset]:focus,input[type=submit],input[type=submit]:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none}:matches(button,input[type=reset],input[type=submit]){background-color:#e3e3e3;background:linear-gradient(#fff,#e3e3e3);border-color:#d6d6d6;color:#0070c9}:matches(button,input[type=reset],input[type=submit]):hover{background-color:#eee;background:linear-gradient(#fff,#eee);border-color:#d9d9d9}:matches(button,input[type=reset],input[type=submit]):active{background-color:#dcdcdc;background:linear-gradient(#f7f7f7,#dcdcdc);border-color:#d0d0d0}:matches(button,input[type=reset],input[type=submit]):disabled{background-color:#e3e3e3;background:linear-gradient(#fff,#e3e3e3);border-color:#d6d6d6;color:#0070c9}body{background:var(--system-grouped-background);color:#000;color:var(--label);font-family:ui-system,-apple-system,BlinkMacSystemFont,sans-serif;font:300 15pt/20pt sans-serif;font:var(--body)}h1{font:600 32pt/39pt sans-serif;font:var(--large-title)}h2{font:600 20pt/25pt sans-serif;font:var(--title-2)}h3{font:500 18pt/23pt sans-serif;font:var(--title-3)}[role=article]>h3,h4,h5,h6{font:500 15pt/20pt sans-serif;font:var(--headline)}.summary+h4,.summary+h5,.summary+h6{margin-top:2em;margin-bottom:0}a{color:#007aff;color:var(--link)}label{font:300 14pt/19pt sans-serif;font:var(--callout)}input,label{display:block}input{margin-bottom:1em}hr{border:none;border-top:1px solid #e5e5ea;border-top:1px solid var(--separator);margin:1em 0}table{width:100%;font:300 11pt/13pt sans-serif;font:var(--caption-1);caption-side:bottom;margin-bottom:2em}td,th{padding:0 1em}th{font-weight:600;text-align:left}thead th{border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator)}tr:last-of-type td,tr:last-of-type th{border-bottom:none}td,th{border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator);color:#3c3c43;color:var(--secondary-label)}caption{color:#48484a;color:var(--tertiary-label);font:300 11pt/13pt sans-serif;font:var(--caption-2);margin-top:2em;text-align:left}.graph text,[role=article]>h3,code,dl dt[class],nav li[class]{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-weight:300}.graph>polygon{display:none}.graph text{fill:currentColor!important}.graph ellipse,.graph path,.graph polygon,.graph rect{stroke:currentColor!important}body{width:90vw;max-width:1280px;margin:1em auto}body>header{font:600 26pt/32pt sans-serif;font:var(--title-1);padding:.5em 0}body>header a{color:#000;color:var(--label)}body>header span{font-weight:400}body>header sup{text-transform:uppercase;font-size:small;font-weight:300;letter-spacing:.1ch}body>footer,body>header sup{color:#3c3c43;color:var(--secondary-label)}body>footer{clear:both;padding:1em 0;font:300 11pt/13pt sans-serif;font:var(--caption-1)}@media screen and (max-width:768px){body>nav{display:none}}main,nav{overflow-x:auto}main{background:#fff;background:var(--system-background);border-radius:8px;padding:0}main section{border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator);margin-bottom:2em;padding-bottom:1em}main section:last-of-type{border-bottom:none;margin-bottom:0}nav{float:right;margin-left:1em;max-height:100vh;overflow:auto;padding:0 1em 3em;position:-webkit-sticky;position:sticky;top:1em;width:20vw}nav a{color:#3c3c43;color:var(--secondary-label)}nav ul a{color:#48484a;color:var(--tertiary-label)}nav ol,nav ul{padding:0}nav ul{font:300 14pt/19pt sans-serif;font:var(--callout);margin-bottom:1em}nav ol>li>a{display:block;font-size:smaller;font:500 15pt/20pt sans-serif;font:var(--headline);margin:.5em 0}nav li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}blockquote{--link:var(--secondary-label);border-left:4px solid #e5e5ea;border-left:4px solid var(--separator);color:#3c3c43;color:var(--secondary-label);font-size:smaller;margin-left:0;padding-left:2em}blockquote a{text-decoration:underline}article{padding:2em 0 1em}article>.summary{border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator);margin-bottom:2em;padding-bottom:1em}article>.summary:last-child{border-bottom:none}.parameters th{text-align:right}.parameters td{color:#3c3c43;color:var(--secondary-label)}.parameters th+td{text-align:center}dl{display:inline-block;margin-top:0}dt{font:500 15pt/20pt sans-serif;font:var(--headline)}dd{margin-left:2em;margin-bottom:1em}dd p{margin-top:0}.highlight{background:#f2f2f7;background:var(--secondary-system-background);border-radius:8px;font-size:smaller;margin-bottom:2em;overflow-x:auto;padding:1em 1em 1em 3em;text-indent:-2em}.highlight .p{white-space:nowrap}.highlight .placeholder{color:#000;color:var(--label)}.highlight a{text-decoration:underline;color:#8e8e93;color:var(--placeholder-text)}.highlight .attribute,.highlight .keyword,.highlight .literal{color:#af52de;color:var(--system-purple)}.highlight .number{color:#007aff;color:var(--system-blue)}.highlight .declaration{color:#5ac8fa;color:var(--system-teal)}.highlight .type{color:#5856d6;color:var(--system-indigo)}.highlight .directive{color:#ff9500;color:var(--system-orange)}.highlight .comment{color:#8e8e93;color:var(--system-gray)}main summary:hover{text-decoration:underline}figure{margin:2em 0;padding:1em 0}figure svg{max-width:100%;height:auto!important;margin:0 auto;display:block}@media screen and (max-width:768px){#relationships figure{display:none}}h1 small{font-size:.5em;line-height:1.5;display:block;font-weight:400;color:#636366;color:var(--quaternary-label)}dd code,li code,p code{font-size:smaller;color:#3c3c43;color:var(--secondary-label)}a code{text-decoration:underline}dl dt[class],nav li[class],section>[role=article][class]{background-image:var(--background-image);background-size:1em;background-repeat:no-repeat;background-position:left .125em}nav li[class]{background-position:left .25em}section>[role=article]{margin-bottom:1em;padding-bottom:1em;border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator);padding-left:2em}section>[role=article]:last-of-type{margin-bottom:0;padding-bottom:0;border-bottom:none}dl dt[class],nav li[class]{list-style:none;text-indent:2em;margin-bottom:.5em}nav li[class]{text-indent:1.5em;margin-bottom:1em}.case,.enumeration_case{--background-image:var(--icon-case);--link:var(--system-teal)}.class{--background-image:var(--icon-class);--link:var(--system-indigo)}.enumeration{--background-image:var(--icon-enumeration)}.enumeration,.extension{--link:var(--system-orange)}.extension{--background-image:var(--icon-extension)}.function{--background-image:var(--icon-function);--link:var(--system-green)}.initializer,.method{--background-image:var(--icon-method);--link:var(--system-blue)}.property{--background-image:var(--icon-property);--link:var(--system-teal)}.protocol{--background-image:var(--icon-protocol);--link:var(--system-pink)}.structure{--background-image:var(--icon-structure);--link:var(--system-purple)}.typealias{--background-image:var(--icon-typealias)}.typealias,.variable{--link:var(--system-green)}.variable{--background-image:var(--icon-variable)}.unknown{--link:var(--quaternary-label);color:#007aff;color:var(--link)} \ No newline at end of file diff --git a/docs/0.16.0/any(_:)-da61986/index.html b/docs/0.16.0/any(_:)-da61986/index.html deleted file mode 100755 index 0ea8d5b0..00000000 --- a/docs/0.16.0/any(_:)-da61986/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Mockingbird - any(_:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -any(_:​) -

- -
public func any<T>(_ type: T.Type = T.self) -> T
-
-

Matches all argument values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the wildcard argument matcher any as a type safe placeholder for matching any argument -value.

- -
given(bird.canChirp(volume: any())).willReturn(true)
-given(bird.setName(any())).will { print($0) }
-
-print(bird.canChirp(volume: 10))  // Prints "true"
-bird.name = "Ryan"  // Prints "Ryan"
-
-verify(bird.canChirp(volume: any())).wasCalled()
-verify(bird.setName(any())).wasCalled()
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ message: T)    // Overloaded generically
-  func send(_ message: String)  // Overloaded explicitly
-  func send(_ message: Data)
-}
-
-given(bird.send(any(String.self))).will { print($0) }
-
-bird.send("Hello")  // Prints "Hello"
-
-verify(bird.send(any(String.self))).wasCalled()
-verify(bird.send(any(Data.self))).wasNeverCalled()
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/any(_:containing:)-0e18f78/index.html b/docs/0.16.0/any(_:containing:)-0e18f78/index.html deleted file mode 100755 index d0b49fac..00000000 --- a/docs/0.16.0/any(_:containing:)-0e18f78/index.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - Mockingbird - any(_:containing:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -any(_:​containing:​) -

- -
public func any<T: Collection>(_ type: T.Type = T.self, containing values: T.Element) -> T
-
-

Matches any collection containing all of the values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(containing:) to match collections that contain all specified -values.

- -
protocol Bird {
-  func send(_ messages: [String])
-}
-
-given(bird.send(any(containing: "Hi", "Hello")))
-  .will { print($0) }
-
-bird.send(["Hi", "Hello"])  // Prints ["Hi", "Hello"]
-bird.send(["Hi", "Bye"])    // Error: Missing stubbed implementation
-bird.send(["Bye"])          // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [T])    // Overloaded generically
-  func send(_ messages: [String])  // Overloaded explicitly
-  func send(_ messages: [Data])
-}
-
-given(bird.send(any([String].self, containing: ["Hi", "Hello"])))
-  .will { print($0) }
-
-bird.send(["Hi", "Hello"])       // Prints ["Hi", "Hello"]
-bird.send([Data([1]), Data(2)])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
valuesT.​Element

A set of values that must all exist in the collection to match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/any(_:containing:)-365e26e/index.html b/docs/0.16.0/any(_:containing:)-365e26e/index.html deleted file mode 100755 index 11de4e23..00000000 --- a/docs/0.16.0/any(_:containing:)-365e26e/index.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - Mockingbird - any(_:containing:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -any(_:​containing:​) -

- -
public func any<K, V>(_ type: Dictionary<K, V>.Type = Dictionary<K, V>.self, containing values: V) -> Dictionary<K, V>
-
-

Matches any dictionary containing all of the values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(containing:) to match dictionaries that contain all specified -values.

- -
protocol Bird {
-  func send(_ messages: [UUID: String])
-}
-
-given(bird.send(any(containing: "Hi", "Hello")))
-  .will { print($0) }
-
-bird.send([
-  UUID(): "Hi",
-  UUID(): "Hello",
-])  // Prints ["Hi", "Hello"]
-
-bird.send([
-  UUID(): "Hi",
-  UUID(): "Bye",
-])  // Error: Missing stubbed implementation
-
-bird.send([
-  UUID(): "Bye",
-]) // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [UUID: T])    // Overloaded generically
-  func send(_ messages: [UUID: String])  // Overloaded explicitly
-  func send(_ messages: [UUID: Data])
-}
-
-given(bird.send(any([UUID: String].self, containing: "Hi", "Hello")))
-  .will { print($0) }
-
-bird.send([
-  UUID(): "Hi",
-  UUID(): "Hello",
-])  // Prints ["Hi", "Hello"]
-
-bird.send([
-  UUID(): Data([1]),
-  UUID(): Data([2]),
-])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeDictionary<K, V>.​Type

The parameter type used to disambiguate overloaded methods.

-
valuesV

A set of values that must all exist in the dictionary to match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/any(_:count:)-860fd11/index.html b/docs/0.16.0/any(_:count:)-860fd11/index.html deleted file mode 100755 index 6d6fd836..00000000 --- a/docs/0.16.0/any(_:count:)-860fd11/index.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - Mockingbird - any(_:count:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -any(_:​count:​) -

- -
public func any<T: Collection>(_ type: T.Type = T.self, count countMatcher: CountMatcher) -> T
-
-

Matches any collection with a specific number of elements.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(count:) to match collections with a specific number of elements.

- -
protocol Bird {
-  func send(_ messages: [String])
-}
-
-given(bird.send(any(count: 2))).will { print($0) }
-
-bird.send(["Hi", "Hello"])  // Prints ["Hi", "Hello"]
-bird.send(["Hi"])           // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [T])    // Overloaded generically
-  func send(_ messages: [String])  // Overloaded explicitly
-  func send(_ messages: [Data])
-}
-
-given(bird.send(any([String].self, count: 2)))
-  .will { print($0) }
-
-bird.send(["Hi", "Hello"])         // Prints ["Hi", "Hello"]
-bird.send([Data([1]), Data([2])])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
count​MatcherCount​Matcher

A count matcher defining the number of acceptable elements in the collection.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/any(_:keys:)-e7f89d4/index.html b/docs/0.16.0/any(_:keys:)-e7f89d4/index.html deleted file mode 100755 index 0d0bb52a..00000000 --- a/docs/0.16.0/any(_:keys:)-e7f89d4/index.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - Mockingbird - any(_:keys:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -any(_:​keys:​) -

- -
public func any<K, V>(_ type: Dictionary<K, V>.Type = Dictionary<K, V>.self, keys: K) -> Dictionary<K, V>
-
-

Matches any dictionary containing all of the keys.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(keys:) to match dictionaries that contain all specified keys.

- -
protocol Bird {
-  func send(_ messages: [UUID: String])
-}
-
-let messageId1 = UUID()
-let messageId2 = UUID()
-given(bird.send(any(containing: messageId1, messageId2)))
-  .will { print($0) }
-
-bird.send([
-  messageId1: "Hi",
-  messageId2: "Hello",
-])  // Prints ["Hi", "Hello"]
-
-bird.send([
-  UUID(): "Hi",
-  UUID(): "Hello",
-])  // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [UUID: T])    // Overloaded generically
-  func send(_ messages: [UUID: String])  // Overloaded explicitly
-  func send(_ messages: [UUID: Data])
-}
-
-let messageId1 = UUID()
-let messageId2 = UUID()
-given(bird.send(any([UUID: String].self, containing: messageId1, messageId2)))
-  .will { print($0) }
-
-bird.send([
-  messageId1: "Hi",
-  messageId2: "Hello",
-])  // Prints ["Hi", "Hello"]
-
-bird.send([
-  messageId1: Data([1]),
-  messageId2: Data([2]),
-])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeDictionary<K, V>.​Type

The parameter type used to disambiguate overloaded methods.

-
keysK

A set of keys that must all exist in the dictionary to match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/any(_:of:)-89cb3ec/index.html b/docs/0.16.0/any(_:of:)-89cb3ec/index.html deleted file mode 100755 index 72b159a2..00000000 --- a/docs/0.16.0/any(_:of:)-89cb3ec/index.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - Mockingbird - any(_:of:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -any(_:​of:​) -

- -
public func any<T: AnyObject>(_ type: T.Type = T.self, of objects: T) -> T
-
-

Matches argument values identical to any of the provided values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(of:) to match objects identical to one or more of the specified -values.

- -
// Reference type
-class Location {
-  let name: String
-  init(name: String) { self.name = name }
-}
-
-protocol Bird {
-  func fly(to location: Location)
-}
-
-let home = Location(name: "Home")
-let work = Location("Work")
-given(bird.fly(to: any(of: home, work)))
-  .will { print($0.name) }
-
-bird.fly(to: home)  // Prints "Home"
-bird.fly(to: work)  // Prints "Work"
-
-let hawaii = Location("Hawaii")
-bird.fly(to: hawaii))  // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func fly<T>(to location: T)        // Overloaded generically
-  func fly(to location: Location)    // Overloaded explicitly
-  func fly(to locationName: String)
-}
-
-given(bird.fly(to: any(String.self, of: "Home", "Work")))
-  .will { print($0) }
-
-bird.send("Home")    // Prints "Hi"
-bird.send("Work")    // Prints "Hello"
-bird.send("Hawaii")  // Error: Missing stubbed implementation
-
- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
objectsT

A set of non-equatable objects that should result in a match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/any(_:of:)-e376f19/index.html b/docs/0.16.0/any(_:of:)-e376f19/index.html deleted file mode 100755 index 9cba3395..00000000 --- a/docs/0.16.0/any(_:of:)-e376f19/index.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - Mockingbird - any(_:of:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -any(_:​of:​) -

- -
public func any<T: Equatable>(_ type: T.Type = T.self, of objects: T) -> T
-
-

Matches argument values equal to any of the provided values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(of:) to match Equatable argument values equal to one or more of -the specified values.

- -
given(bird.canChirp(volume: any(of: 1, 3)))
-  .willReturn(true)
-
-given(bird.canChirp(volume: any(of: 2, 4)))
-  .willReturn(false)
-
-print(bird.canChirp(volume: 1))  // Prints "true"
-print(bird.canChirp(volume: 2))  // Prints "false"
-print(bird.canChirp(volume: 3))  // Prints "true"
-print(bird.canChirp(volume: 4))  // Prints "false"
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ message: T)    // Overloaded generically
-  func send(_ message: String)  // Overloaded explicitly
-  func send(_ message: Data)
-}
-
-given(bird.send(any(String.self, of: "Hi", "Hello")))
-  .will { print($0) }
-
-bird.send("Hi")     // Prints "Hi"
-bird.send("Hello")  // Prints "Hello"
-bird.send("Bye")    // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
objectsT

A set of equatable objects that should result in a match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/any(_:where:)-ea2d92e/index.html b/docs/0.16.0/any(_:where:)-ea2d92e/index.html deleted file mode 100755 index cdcb6d5f..00000000 --- a/docs/0.16.0/any(_:where:)-ea2d92e/index.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - Mockingbird - any(_:where:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -any(_:​where:​) -

- -
public func any<T>(_ type: T.Type = T.self, where predicate: @escaping (_ value: T) -> Bool) -> T
-
-

Matches any argument values where the predicate returns true.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(where:) to match objects with custom equality logic. This is -particularly useful for parameter types that do not conform to Equatable.

- -
// Value type not explicitly conforming to `Equatable`
-struct Fruit {
-  let size: Int
-}
-
-protocol Bird {
-  func eat(_ fruit: Fruit)
-}
-
-given(bird.eat(any(where: { $0.size < 100 })))
-  .will { print($0.size) }
-
-let apple = Fruit(size: 42)
-bird.eat(apple)  // Prints "42"
-
-let pear = Fruit(size: 9001)
-bird.eat(pear)   // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func eat<T>(_ object: T)     // Overloaded generically
-  func eat(_ fruit: Fruit)     // Overloaded explicitly
-  func eat(_ fruits: [Fruit])
-}
-
-given(bird.eat(any(Fruit.self, where: { $0.size < 100 })))
-  .will { print($0) }
-
-let apple = Fruit(size: 42)
-bird.eat(apple)    // Prints "42"
-bird.eat("Apple")  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
predicate@escaping (_ value:​ T) -> Bool

A closure that takes a value and returns true if it represents a match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/around(_:tolerance:)-831b19f/index.html b/docs/0.16.0/around(_:tolerance:)-831b19f/index.html deleted file mode 100755 index 0b062b48..00000000 --- a/docs/0.16.0/around(_:tolerance:)-831b19f/index.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - Mockingbird - around(_:tolerance:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -around(_:​tolerance:​) -

- -
public func around<T: FloatingPoint>(_ value: T, tolerance: T) -> T
-
-

Matches floating point arguments within some tolerance.

- -
-
-

Mathematical operations on floating point numbers can cause loss of precision. Fuzzily match floating point arguments instead of using exact values to increase the robustness of tests.

- -
protocol Bird {
-  func canChirp(volume: Double) -> Bool
-}
-
-given(bird.canChirp(volume: around(42.0, tolerance: 0.1)))
-  .willReturn(true)
-
-print(bird.canChirp(volume: 42.0))     // Prints "true"
-print(bird.canChirp(volume: 42.0999))  // Prints "true"
-print(bird.canChirp(volume: 42.1))     // Prints "false"
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
valueT

The expected value.

-
toleranceT

Only matches if the absolute difference is strictly less than this value.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/atLeast(_:)-c832002/index.html b/docs/0.16.0/atLeast(_:)-c832002/index.html deleted file mode 100755 index 90f2f0ac..00000000 --- a/docs/0.16.0/atLeast(_:)-c832002/index.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - Mockingbird - atLeast(_:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -at​Least(_:​) -

- -
public func atLeast(_ times: Int) -> CountMatcher
-
-

Matches greater than or equal to some count.

- -
-
-

The atLeast count matcher can be used to verify that the actual number of invocations received -by a mock is greater than or equal to the expected number of invocations.

- -
// Given two invocations (n = 2)
-bird.fly()
-bird.fly()
-
-verify(bird.fly()).wasCalled(atLeast(1))  // Passes
-verify(bird.fly()).wasCalled(atLeast(2))  // Passes
-verify(bird.fly()).wasCalled(atLeast(3))  // Fails (n < 3)
-
-

You can combine count matchers with adverbial counts for improved readability.

- -
verify(bird.fly()).wasCalled(atLeast(once))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An inclusive lower bound.

-
-

Returns

-

A count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/atMost(_:)-a2b82d3/index.html b/docs/0.16.0/atMost(_:)-a2b82d3/index.html deleted file mode 100755 index 829df926..00000000 --- a/docs/0.16.0/atMost(_:)-a2b82d3/index.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - Mockingbird - atMost(_:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -at​Most(_:​) -

- -
public func atMost(_ times: Int) -> CountMatcher
-
-

Matches less than or equal to some count.

- -
-
-

The atMost count matcher can be used to verify that the actual number of invocations received -by a mock is less than or equal to the expected number of invocations.

- -
// Given two invocations (n = 2)
-bird.fly()
-bird.fly()
-
-verify(bird.fly()).wasCalled(atMost(1))  // Fails (n > 1)
-verify(bird.fly()).wasCalled(atMost(2))  // Passes
-verify(bird.fly()).wasCalled(atMost(3))  // Passes
-
-

You can combine count matchers with adverbial counts for improved readability.

- -
verify(bird.fly()).wasCalled(atMost(once))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An inclusive upper bound.

-
-

Returns

-

A count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/between(_:)-cfca747/index.html b/docs/0.16.0/between(_:)-cfca747/index.html deleted file mode 100755 index d836cc6e..00000000 --- a/docs/0.16.0/between(_:)-cfca747/index.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - Mockingbird - between(_:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -between(_:​) -

- -
public func between(_ range: Range<Int>) -> CountMatcher
-
-

Matches counts that fall within some range.

- -
-
-

The between count matcher can be used to verify that the actual number of invocations received -by a mock is within an inclusive range of expected invocations.

- -
// Given two invocations (n = 2)
-bird.fly()
-bird.fly()
-
-verify(bird.fly()).wasCalled(between(1...2))  // Passes
-verify(bird.fly()).wasCalled(between(3...4))  // Fails (3 &nlt; n < 4)
-
-

You can combine count matchers with adverbial counts for improved readability.

- -
verify(bird.fly()).wasCalled(between(once...twice))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
rangeRange<Int>

An closed integer range.

-
-

Returns

-

A count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/clearDefaultValues(on:)-112773d/index.html b/docs/0.16.0/clearDefaultValues(on:)-112773d/index.html deleted file mode 100755 index 23dd3f57..00000000 --- a/docs/0.16.0/clearDefaultValues(on:)-112773d/index.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - Mockingbird - clearDefaultValues(on:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -clear​Default​Values(on:​) -

- -
public func clearDefaultValues(on mocks: Mock)
-
-

Remove all registered default values.

- -
-
-

Partially reset a set of mocks during test runs by removing all registered default values.

- -
let bird = mock(Bird.self)
-bird.useDefaultValues(from: .standardProvider)
-
-print(bird.name)  // Prints ""
-verify(bird.getName()).wasCalled()  // Passes
-
-clearDefaultValues(on: bird)
-
-print(bird.name)  // Error: Missing stubbed implementation
-verify(bird.getName()).wasCalled()  // Passes
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mocksMock

A set of mocks to reset.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/clearInvocations(on:)-4120e8f/index.html b/docs/0.16.0/clearInvocations(on:)-4120e8f/index.html deleted file mode 100755 index 106da1aa..00000000 --- a/docs/0.16.0/clearInvocations(on:)-4120e8f/index.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - Mockingbird - clearInvocations(on:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -clear​Invocations(on:​) -

- -
public func clearInvocations(on mocks: Mock)
-
-

Remove all recorded invocations.

- -
-
-

Partially reset a set of mocks during test runs by removing all recorded invocations.

- -
let bird = mock(Bird.self)
-given(bird.getName()).willReturn("Ryan")
-
-print(bird.name)  // Prints "Ryan"
-verify(bird.getName()).wasCalled()  // Passes
-
-clearInvocations(on: bird)
-
-print(bird.name)  // Prints "Ryan"
-verify(bird.getName()).wasCalled()  // Error: Got 0 invocations
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mocksMock

A set of mocks to reset.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/clearStubs(on:)-f985ed7/index.html b/docs/0.16.0/clearStubs(on:)-f985ed7/index.html deleted file mode 100755 index 673c2d90..00000000 --- a/docs/0.16.0/clearStubs(on:)-f985ed7/index.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - Mockingbird - clearStubs(on:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -clear​Stubs(on:​) -

- -
public func clearStubs(on mocks: Mock)
-
-

Remove all concrete stubs.

- -
-
-

Partially reset a set of mocks during test runs by removing all stubs.

- -
let bird = mock(Bird.self)
-given(bird.getName()).willReturn("Ryan")
-
-print(bird.name)  // Prints "Ryan"
-verify(bird.getName()).wasCalled()  // Passes
-
-clearStubs(on: bird)
-
-print(bird.name)  // Error: Missing stubbed implementation
-verify(bird.getName()).wasCalled()  // Passes
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mocksMock

A set of mocks to reset.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/eventually(_:_:)-28d4191/index.html b/docs/0.16.0/eventually(_:_:)-28d4191/index.html deleted file mode 100755 index 25f87dd7..00000000 --- a/docs/0.16.0/eventually(_:_:)-28d4191/index.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - Mockingbird - eventually(_:_:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -eventually(_:​_:​) -

- -
public func eventually(_ description: String? = nil, _ block: () -> Void) -> XCTestExpectation
-
-

Create a deferrable test expectation from a block containing verification calls.

- -
-
-

Mocked methods that are invoked asynchronously can be verified using an eventually block which -returns an XCTestExpectation.

- -
DispatchQueue.main.async {
-  Tree(with: bird).shake()
-}
-
-let expectation =
-  eventually {
-    verify(bird.fly()).wasCalled()
-    verify(bird.chirp()).wasCalled()
-  }
-
-wait(for: [expectation], timeout: 1.0)
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
descriptionString?

An optional description for the created XCTestExpectation.

-
block() -> Void

A block containing verification calls.

-
-

Returns

-

An XCTestExpectation that fulfilles once all verifications in the block are met.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/exactly(_:)-47abdfc/index.html b/docs/0.16.0/exactly(_:)-47abdfc/index.html deleted file mode 100755 index 2b9a1c0d..00000000 --- a/docs/0.16.0/exactly(_:)-47abdfc/index.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - Mockingbird - exactly(_:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -exactly(_:​) -

- -
public func exactly(_ times: Int) -> CountMatcher
-
-

Matches an exact count.

- -
-
-

The exactly count matcher can be used to verify that the actual number of invocations received -by a mock equals the expected number of invocations.

- -
// Given two invocations (n = 2)
-bird.fly()
-bird.fly()
-
-verify(bird.fly()).wasCalled(exactly(1))  // Fails (n ≠ 1)
-verify(bird.fly()).wasCalled(exactly(2))  // Passes
-
-

You can combine count matchers with adverbial counts for improved readability.

- -
verify(bird.fly()).wasCalled(exactly(once))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An exact integer count.

-
-

Returns

-

A count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/finiteSequence(of:)-9390bb3/index.html b/docs/0.16.0/finiteSequence(of:)-9390bb3/index.html deleted file mode 100755 index 7998b264..00000000 --- a/docs/0.16.0/finiteSequence(of:)-9390bb3/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - Mockingbird - finiteSequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -finite​Sequence(of:​) -

- -
public func finiteSequence<DeclarationType: Declaration, InvocationType, ReturnType>(of values: ReturnType) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>
-
-

Stub a finite sequence of values.

- -
-
-

Provide one or more values which will be returned sequentially for each invocation. The stub -will be invalidated if the number of invocations is greater than the number of values provided.

- -
given(bird.getName())
-  .willReturn(finiteSequence(of: "Ryan", "Sterling"))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
valuesReturn​Type

A sequence of values to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/finiteSequence(of:)-ff3ed8b/index.html b/docs/0.16.0/finiteSequence(of:)-ff3ed8b/index.html deleted file mode 100755 index 819fb37f..00000000 --- a/docs/0.16.0/finiteSequence(of:)-ff3ed8b/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Mockingbird - finiteSequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -finite​Sequence(of:​) -

- -
public func finiteSequence<DeclarationType: Declaration, InvocationType, ReturnType>(of implementations: InvocationType) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>
-
-

Stub a finite sequence of implementations.

- -
-
-

Provide one or more implementations which will be returned sequentially for each invocation. The -stub will be invalidated if the number of invocations is greater than the number of -implementations provided.

- -
given(bird.getName()).willReturn(finiteSequence(of: {
-  return Bool.random() ? "Ryan" : "Meisters"
-}, {
-  return Bool.random() ? "Sterling" : "Hackley"
-}))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementationsInvocation​Type

A sequence of implementations to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/given(_:)-05dd78f/index.html b/docs/0.16.0/given(_:)-05dd78f/index.html deleted file mode 100755 index 2f1f0b94..00000000 --- a/docs/0.16.0/given(_:)-05dd78f/index.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - Mockingbird - given(_:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -given(_:​) -

- -
public func given<DeclarationType: Declaration, InvocationType, ReturnType>(_ declarations: Mockable<DeclarationType, InvocationType, ReturnType>) -> StubbingManager<DeclarationType, InvocationType, ReturnType>
-
-

Stub one or more declarations to return a value or perform an operation.

- -
-
-

Stubbing allows you to define custom behavior for mocks to perform.

- -
given(bird.canChirp()).willReturn(true)
-given(bird.canChirp()).willThrow(BirdError())
-given(bird.canChirp(volume: any())).will { volume in
-  return volume < 42
-}
-
-

This is equivalent to the shorthand syntax using the stubbing operator ~>.

- -
given(bird.canChirp()) ~> true
-given(bird.canChirp()) ~> { throw BirdError() }
-given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-

Properties can be stubbed with their getter and setter methods.

- -
given(bird.getName()).willReturn("Ryan")
-given(bird.setName(any())).will { print($0) }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
declarationsMockable<Declaration​Type, Invocation​Type, Return​Type>

One or more stubbable declarations.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/inOrder(with:file:line:_:)-3c038cb/index.html b/docs/0.16.0/inOrder(with:file:line:_:)-3c038cb/index.html deleted file mode 100755 index 4398c87a..00000000 --- a/docs/0.16.0/inOrder(with:file:line:_:)-3c038cb/index.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - Mockingbird - inOrder(with:file:line:_:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -in​Order(with:​file:​line:​_:​) -

- -
public func inOrder(with options: OrderedVerificationOptions = [], file: StaticString = #file, line: UInt = #line, _ block: () -> Void)
-
-

Enforce the relative order of invocations.

- -
-
-

Calls to verify within the scope of an inOrder verification block are checked relative to -each other.

- -
// Verify that `fly` was called before `chirp`
-inOrder {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-

Pass options to inOrder verification blocks for stricter checks with additional invariants.

- -
inOrder(with: .noInvocationsAfter) {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-

An inOrder block is resolved greedily, such that each verification must happen from the oldest -remaining unsatisfied invocations.

- -
// Given these unsatisfied invocations
-bird.fly()
-bird.fly()
-bird.chirp()
-
-// Greedy strategy _must_ start from the first `fly`
-inOrder {
-  verify(bird.fly()).wasCalled(twice)
-  verify(bird.chirp()).wasCalled()
-}
-
-// Non-greedy strategy can start from the second `fly`
-inOrder {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
optionsOrdered​Verification​Options

Options to use when verifying invocations.

-
block() -> Void

A block containing ordered verification calls.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/index.html b/docs/0.16.0/index.html deleted file mode 100755 index 6e3a38d8..00000000 --- a/docs/0.16.0/index.html +++ /dev/null @@ -1,686 +0,0 @@ - - - - - - Mockingbird - Mockingbird - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-
-

Classes

-
-
- - Argument​Captor - -
-
-

Captures method arguments passed during mock invocations.

- -
-
- - Argument​Matcher - -
-
-

Matches argument values with a comparator.

- -
-
- - Static​Mock - -
-
-

Used to store invocations on static or class scoped methods.

- -
-
- - Variable​Declaration - -
-
-

Mockable variable declarations.

- -
-
- - Property​Getter​Declaration - -
-
-

Mockable property getter declarations.

- -
-
- - Property​Setter​Declaration - -
-
-

Mockable property setter declarations.

- -
-
- - Function​Declaration - -
-
-

Mockable function declarations.

- -
-
- - Throwing​Function​Declaration - -
-
-

Mockable throwing function declarations.

- -
-
- - Subscript​Declaration - -
-
-

Mockable subscript declarations.

- -
-
- - Subscript​Getter​Declaration - -
-
-

Mockable subscript getter declarations.

- -
-
- - Subscript​Setter​Declaration - -
-
-

Mockable subscript setter declarations.

- -
-
- - Mocking​Context - -
-
-

Stores invocations received by mocks.

- -
-
- - Stubbing​Manager - -
-
-

An intermediate object used for stubbing declarations returned by given.

- -
-
- - Stubbing​Context - -
-
-

Stores stubbed implementations used by mocks.

- -
-
- - Non​Escaping​Closure - -
-
-

Placeholder for non-escaping closure parameter types.

- -
-
-
-
-

Structures

-
-
- - Count​Matcher - -
-
-

Checks whether a number matches some expected count.

- -
-
- - Mock​Metadata - -
-
-

Stores information about generated mocks.

- -
-
- - Mockable - -
-
-

Represents a mocked declaration that can be stubbed or verified.

- -
-
- - Implementation​Provider - -
-
-

Provides implementation functions used to stub behavior and return values.

- -
-
- - Value​Provider - -
-
-

Provides concrete instances of types.

- -
-
- - Source​Location - -
-
-

References a line of code in a file.

- -
-
- - Ordered​Verification​Options - -
-
-

Additional options to increase the strictness of inOrder verification blocks.

- -
-
- - Verification​Manager - -
-
-

An intermediate object used for verifying declarations returned by verify.

- -
-
-
-
-

Enumerations

-
-
- - Stubbing​Manager.​Transition​Strategy - -
-
-

When to use the next chained implementation provider.

- -
-
-
-
-

Protocols

-
-
- - Mock - -
-
-

All generated mocks conform to this protocol.

- -
-
- - Declaration - -
-
-

All mockable declaration types conform to this protocol.

- -
-
- - Providable - -
-
-

A type that can provide concrete instances of itself.

- -
-
- - Test​Failer - -
-
-

A type that can handle test failures emitted by Mockingbird.

- -
-
-
-
-

Functions

-
-
- - any(_:​containing:​) - -
-
-

Matches any collection containing all of the values.

- -
-
- - any(_:​containing:​) - -
-
-

Matches any dictionary containing all of the values.

- -
-
- - any(_:​keys:​) - -
-
-

Matches any dictionary containing all of the keys.

- -
-
- - any(_:​count:​) - -
-
-

Matches any collection with a specific number of elements.

- -
-
- - not​Empty(_:​) - -
-
-

Matches any collection with at least one element.

- -
-
- - around(_:​tolerance:​) - -
-
-

Matches floating point arguments within some tolerance.

- -
-
- - exactly(_:​) - -
-
-

Matches an exact count.

- -
-
- - at​Least(_:​) - -
-
-

Matches greater than or equal to some count.

- -
-
- - at​Most(_:​) - -
-
-

Matches less than or equal to some count.

- -
-
- - between(_:​) - -
-
-

Matches counts that fall within some range.

- -
-
- - not(_:​) - -
-
-

Negate a count matcher, only passing on non-matching counts.

- -
-
- - not(_:​) - -
-
-

Negate an exact count, only passing on non-matching counts.

- -
-
- - any(_:​) - -
-
-

Matches all argument values.

- -
-
- - any(_:​of:​) - -
-
-

Matches argument values equal to any of the provided values.

- -
-
- - any(_:​of:​) - -
-
-

Matches argument values identical to any of the provided values.

- -
-
- - any(_:​where:​) - -
-
-

Matches any argument values where the predicate returns true.

- -
-
- - not​Nil(_:​) - -
-
-

Matches any non-nil argument value.

- -
-
- - mock(_:​) - -
-
-

Returns a mock of a given type.

- -
-
- - reset(_:​) - -
-
-

Remove all recorded invocations and configured stubs.

- -
-
- - clear​Invocations(on:​) - -
-
-

Remove all recorded invocations.

- -
-
- - clear​Stubs(on:​) - -
-
-

Remove all concrete stubs.

- -
-
- - clear​Default​Values(on:​) - -
-
-

Remove all registered default values.

- -
-
- - use​Default​Values(from:​on:​) - -
-
-

Start returning default values for unstubbed methods on multiple mocks.

- -
-
- - use​Default​Values(from:​on:​) - -
-
-

Start returning default values for unstubbed methods on a single mock.

- -
-
- - sequence(of:​) - -
-
-

Stub a sequence of values.

- -
-
- - sequence(of:​) - -
-
-

Stub a sequence of implementations.

- -
-
- - looping​Sequence(of:​) - -
-
-

Stub a looping sequence of values.

- -
-
- - looping​Sequence(of:​) - -
-
-

Stub a looping sequence of implementations.

- -
-
- - finite​Sequence(of:​) - -
-
-

Stub a finite sequence of values.

- -
-
- - finite​Sequence(of:​) - -
-
-

Stub a finite sequence of implementations.

- -
-
- - last​Set​Value(initial:​) - -
-
-

Stubs a variable getter to return the last value received by the setter.

- -
-
- - given(_:​) - -
-
-

Stub one or more declarations to return a value or perform an operation.

- -
-
- - eventually(_:​_:​) - -
-
-

Create a deferrable test expectation from a block containing verification calls.

- -
-
- - in​Order(with:​file:​line:​_:​) - -
-
-

Enforce the relative order of invocations.

- -
-
- - verify(_:​file:​line:​) - -
-
-

Verify that a mock recieved a specific invocation some number of times.

- -
-
- - swizzle​Test​Failer(_:​) - -
-
-

Change the current global test failer.

- -
-
- - MKBFail(_:​is​Fatal:​file:​line:​) - -
-
-

Called by Mockingbird on test assertion failures.

- -
-
-
-
-

Variables

-
-
- - never - -
-
-

A count of zero.

- -
-
- - once - -
-
-

A count of one.

- -
-
- - twice - -
-
-

A count of two.

- -
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/lastSetValue(initial:)-576c55c/index.html b/docs/0.16.0/lastSetValue(initial:)-576c55c/index.html deleted file mode 100755 index 4292f150..00000000 --- a/docs/0.16.0/lastSetValue(initial:)-576c55c/index.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - Mockingbird - lastSetValue(initial:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -last​Set​Value(initial:​) -

- -
public func lastSetValue<DeclarationType: PropertyGetterDeclaration, InvocationType, ReturnType>(initial: ReturnType) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>
-
-

Stubs a variable getter to return the last value received by the setter.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
initialReturn​Type

The initial value to return.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/loopingSequence(of:)-8ab9cb4/index.html b/docs/0.16.0/loopingSequence(of:)-8ab9cb4/index.html deleted file mode 100755 index 18c7fc2c..00000000 --- a/docs/0.16.0/loopingSequence(of:)-8ab9cb4/index.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - Mockingbird - loopingSequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -looping​Sequence(of:​) -

- -
public func loopingSequence<DeclarationType: Declaration, InvocationType, ReturnType>(of values: ReturnType) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>
-
-

Stub a looping sequence of values.

- -
-
-

Provide one or more values which will be returned sequentially for each invocation. The sequence -will loop from the beginning if the number of invocations is greater than the number of values -provided.

- -
given(bird.getName())
-  .willReturn(loopingSequence(of: "Ryan", "Sterling"))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
valuesReturn​Type

A sequence of values to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/loopingSequence(of:)-9da831b/index.html b/docs/0.16.0/loopingSequence(of:)-9da831b/index.html deleted file mode 100755 index 32909987..00000000 --- a/docs/0.16.0/loopingSequence(of:)-9da831b/index.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - Mockingbird - loopingSequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -looping​Sequence(of:​) -

- -
public func loopingSequence<DeclarationType: Declaration, InvocationType, ReturnType>(of implementations: InvocationType) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>
-
-

Stub a looping sequence of implementations.

- -
-
-

Provide one or more implementations which will be returned sequentially for each invocation. The -sequence will loop from the beginning if the number of invocations is greater than the number of -implementations provided.

- -
given(bird.getName()).willReturn(loopingSequence(of: {
-  return Bool.random() ? "Ryan" : "Meisters"
-}, {
-  return Bool.random() ? "Sterling" : "Hackley"
-}))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Meisters"
-print(bird.name)  // Prints "Hackley"
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementationsInvocation​Type

A sequence of implementations to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/mock(_:)-b93ee0e/index.html b/docs/0.16.0/mock(_:)-b93ee0e/index.html deleted file mode 100755 index 8e22bfb8..00000000 --- a/docs/0.16.0/mock(_:)-b93ee0e/index.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - Mockingbird - mock(_:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -mock(_:​) -

- -
@available(*, unavailable, message: "No generated mock for this type which might be resolved by building the test target (⇧⌘U)") public func mock<T>(_ type: T.Type) -> T
-
-

Returns a mock of a given type.

- -
-
-

Initialized mocks can be passed in place of the original type. Protocol mocks do not require -explicit initialization while class mocks should be created using initialize(…).

- -
protocol Bird {
-  init(name: String)
-}
-class Tree {
-  init(with bird: Bird) {}
-}
-
-let bird = mock(Bird.self)  // Protocol mock
-let tree = mock(Tree.self).initialize(with: bird)  // Class mock
-
-

Generated mock types are suffixed with Mock and should not be coerced into their supertype.

- -
let bird: BirdMock = mock(Bird.self)  // The concrete type is `BirdMock`
-let inferredBird = mock(Bird.self)    // Type inference also works
-let coerced: Bird = mock(Bird.self)   // Avoid upcasting mocks
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The type to mock.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/never-9661ceb/index.html b/docs/0.16.0/never-9661ceb/index.html deleted file mode 100755 index b36ce995..00000000 --- a/docs/0.16.0/never-9661ceb/index.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - Mockingbird - never - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Variable -never -

- -
let never: Int
-
-

A count of zero.

- -
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/not(_:)-3f926b2/index.html b/docs/0.16.0/not(_:)-3f926b2/index.html deleted file mode 100755 index b8e73847..00000000 --- a/docs/0.16.0/not(_:)-3f926b2/index.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - Mockingbird - not(_:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -not(_:​) -

- -
public func not(_ times: Int) -> CountMatcher
-
-

Negate an exact count, only passing on non-matching counts.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n ≠ 1
-verify(bird.fly()).wasCalled(not(once))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​Matcher

An exact count to negate.

-
-

Returns

-

A negated count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/not(_:)-cf99a2a/index.html b/docs/0.16.0/not(_:)-cf99a2a/index.html deleted file mode 100755 index 1f87288a..00000000 --- a/docs/0.16.0/not(_:)-cf99a2a/index.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - Mockingbird - not(_:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -not(_:​) -

- -
public func not(_ countMatcher: CountMatcher) -> CountMatcher
-
-

Negate a count matcher, only passing on non-matching counts.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n ≠ 1
-verify(bird.fly()).wasCalled(not(exactly(once)))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

A count matcher to negate.

-
-

Returns

-

A negated count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/notEmpty(_:)-3cab350/index.html b/docs/0.16.0/notEmpty(_:)-3cab350/index.html deleted file mode 100755 index a7d0e79b..00000000 --- a/docs/0.16.0/notEmpty(_:)-3cab350/index.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - Mockingbird - notEmpty(_:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -not​Empty(_:​) -

- -
public func notEmpty<T: Collection>(_ type: T.Type = T.self) -> T
-
-

Matches any collection with at least one element.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher notEmpty to match collections with one or more elements.

- -
protocol Bird {
-  func send(_ messages: [String])
-}
-
-given(bird.send(any(count: 2))).will { print($0) }
-
-bird.send(["Hi"])  // Prints ["Hi"]
-bird.send([])      // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [T])    // Overloaded generically
-  func send(_ messages: [String])  // Overloaded explicitly
-  func send(_ messages: [Data])
-}
-
-given(bird.send(notEmpty([String].self)))
-  .will { print($0) }
-
-bird.send(["Hi"])       // Prints ["Hi"]
-bird.send([Data([1])])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/notNil(_:)-42278eb/index.html b/docs/0.16.0/notNil(_:)-42278eb/index.html deleted file mode 100755 index 6543003d..00000000 --- a/docs/0.16.0/notNil(_:)-42278eb/index.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - Mockingbird - notNil(_:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -not​Nil(_:​) -

- -
public func notNil<T>(_ type: T.Type = T.self) -> T
-
-

Matches any non-nil argument value.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher notNil to match non-nil argument values.

- -
protocol Bird {
-  func send(_ message: String?)
-}
-
-given(bird.send(notNil())).will { print($0) }
-
-bird.send("Hello")  // Prints Optional("Hello")
-bird.send(nil)      // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ message: T?)    // Overloaded generically
-  func send(_ message: String?)  // Overloaded explicitly
-  func send(_ messages: Data?)
-}
-
-given(bird.send(notNil(String?.self)))
-  .will { print($0) }
-
-bird.send("Hello")    // Prints Optional("Hello")
-bird.send(nil)        // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/once-3db83dd/index.html b/docs/0.16.0/once-3db83dd/index.html deleted file mode 100755 index 8e9a19fc..00000000 --- a/docs/0.16.0/once-3db83dd/index.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - Mockingbird - once - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Variable -once -

- -
let once: Int
-
-

A count of one.

- -
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/reset(_:)-2a0feaf/index.html b/docs/0.16.0/reset(_:)-2a0feaf/index.html deleted file mode 100755 index 2a4c5c6d..00000000 --- a/docs/0.16.0/reset(_:)-2a0feaf/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Mockingbird - reset(_:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -reset(_:​) -

- -
public func reset(_ mocks: Mock)
-
-

Remove all recorded invocations and configured stubs.

- -
-
-

Fully reset a set of mocks during test runs by removing all recorded invocations and clearing -all configurations.

- -
let bird = mock(Bird.self)
-given(bird.getName()).willReturn("Ryan")
-
-print(bird.name)  // Prints "Ryan"
-verify(bird.getName()).wasCalled()  // Passes
-
-reset(bird)
-
-print(bird.name)  // Error: Missing stubbed implementation
-verify(bird.getName()).wasCalled()  // Error: Got 0 invocations
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mocksMock

A set of mocks to reset.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/sequence(of:)-c40bb93/index.html b/docs/0.16.0/sequence(of:)-c40bb93/index.html deleted file mode 100755 index 70d81dab..00000000 --- a/docs/0.16.0/sequence(of:)-c40bb93/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Mockingbird - sequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -sequence(of:​) -

- -
public func sequence<DeclarationType: Declaration, InvocationType, ReturnType>(of implementations: InvocationType) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>
-
-

Stub a sequence of implementations.

- -
-
-

Provide one or more implementations which will be returned sequentially for each invocation. The -last implementation will be used if the number of invocations is greater than the number of -implementations provided.

- -
given(bird.getName()).willReturn(sequence(of: {
-  return Bool.random() ? "Ryan" : "Meisters"
-}, {
-  return Bool.random() ? "Sterling" : "Hackley"
-}))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Hackley"
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementationsInvocation​Type

A sequence of implementations to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/sequence(of:)-d9da3e4/index.html b/docs/0.16.0/sequence(of:)-d9da3e4/index.html deleted file mode 100755 index 88bbe720..00000000 --- a/docs/0.16.0/sequence(of:)-d9da3e4/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - Mockingbird - sequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -sequence(of:​) -

- -
public func sequence<DeclarationType: Declaration, InvocationType, ReturnType>(of values: ReturnType) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>
-
-

Stub a sequence of values.

- -
-
-

Provide one or more values which will be returned sequentially for each invocation. The last -value will be used if the number of invocations is greater than the number of values provided.

- -
given(bird.getName())
-  .willReturn(sequence(of: "Ryan", "Sterling"))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Sterling"
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
valuesReturn​Type

A sequence of values to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/swizzleTestFailer(_:)-d923326/index.html b/docs/0.16.0/swizzleTestFailer(_:)-d923326/index.html deleted file mode 100755 index 9d7cc590..00000000 --- a/docs/0.16.0/swizzleTestFailer(_:)-d923326/index.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - Mockingbird - swizzleTestFailer(_:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -swizzle​Test​Failer(_:​) -

- -
public func swizzleTestFailer(_ newTestFailer: TestFailer)
-
-

Change the current global test failer.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
new​Test​FailerTest​Failer

A test failer instance to start handling test failures.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/twice-f36cfd6/index.html b/docs/0.16.0/twice-f36cfd6/index.html deleted file mode 100755 index e3b0c7d4..00000000 --- a/docs/0.16.0/twice-f36cfd6/index.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - Mockingbird - twice - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Variable -twice -

- -
let twice: Int
-
-

A count of two.

- -
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/useDefaultValues(from:on:)-5df93fa/index.html b/docs/0.16.0/useDefaultValues(from:on:)-5df93fa/index.html deleted file mode 100755 index b3c5afc7..00000000 --- a/docs/0.16.0/useDefaultValues(from:on:)-5df93fa/index.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - Mockingbird - useDefaultValues(from:on:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -use​Default​Values(from:​on:​) -

- -
public func useDefaultValues(from valueProvider: ValueProvider, on mock: Mock)
-
-

Start returning default values for unstubbed methods on a single mock.

- -
-
-

Mocks are strict by default, meaning that calls to unstubbed methods will trigger a test -failure. Methods returning Void do not need to be stubbed in strict mode.

- -
let bird = mock(Bird.self)
-print(bird.name)  // Fails because `bird.getName()` is not stubbed
-bird.fly()        // Okay because `fly()` has a `Void` return type
-
-

To return default values for unstubbed methods, use a ValueProvider with the initialized mock. -Mockingbird provides preset value providers which are guaranteed to be backwards compatible, -such as .standardProvider.

- -
useDefaultValues(from: .standardProvider, on: bird)
-print(bird.name)  // Prints ""
-
-

You can create custom value providers by registering values for types. See Providable for how -to provide "wildcard" instances for generic types.

- -
var valueProvider = ValueProvider(from: .standardProvider)
-valueProvider.register("Ryan", for: String.self)
-useDefaultValues(from: valueProvider, on: bird)
-print(bird.name)  // Prints "Ryan"
-
-

Values from concrete stubs always have a higher precedence than default values.

- -
given(bird.getName()) ~> "Ryan"
-print(bird.name)  // Prints "Ryan"
-
-useDefaultValues(from: .standardProvider, on: bird)
-print(bird.name)  // Prints "Ryan"
-
- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
value​ProviderValue​Provider

A value provider to add.

-
mockMock

A mock that should start using the value provider.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/useDefaultValues(from:on:)-7eb6cc5/index.html b/docs/0.16.0/useDefaultValues(from:on:)-7eb6cc5/index.html deleted file mode 100755 index 844b3f47..00000000 --- a/docs/0.16.0/useDefaultValues(from:on:)-7eb6cc5/index.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - Mockingbird - useDefaultValues(from:on:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -use​Default​Values(from:​on:​) -

- -
public func useDefaultValues(from valueProvider: ValueProvider, on mocks: [Mock])
-
-

Start returning default values for unstubbed methods on multiple mocks.

- -
-
-

Mocks are strict by default, meaning that calls to unstubbed methods will trigger a test -failure. Methods returning Void do not need to be stubbed in strict mode.

- -
let bird = mock(Bird.self)
-print(bird.name)  // Fails because `bird.getName()` is not stubbed
-bird.fly()        // Okay because `fly()` has a `Void` return type
-
-

To return default values for unstubbed methods, use a ValueProvider with the initialized mock. -Mockingbird provides preset value providers which are guaranteed to be backwards compatible, -such as .standardProvider.

- -
let anotherBird = mock(Bird.self)
-useDefaultValues(from: .standardProvider, on: [bird, anotherBird])
-print(bird.name)  // Prints ""
-print(anotherBird.name)  // Prints ""
-
-

You can create custom value providers by registering values for types. See Providable for how -to provide "wildcard" instances for generic types.

- -
var valueProvider = ValueProvider(from: .standardProvider)
-valueProvider.register("Ryan", for: String.self)
-
-useDefaultValues(from: valueProvider, on: [bird, anotherBird])
-
-print(bird.name)  // Prints "Ryan"
-print(anotherBird.name)  // Prints "Ryan"
-
-

Values from concrete stubs always have a higher precedence than default values.

- -
given(bird.getName()) ~> "Ryan"
-print(bird.name)  // Prints "Ryan"
-
-useDefaultValues(from: .standardProvider, on: [bird, anotherBird])
-
-print(bird.name)  // Prints "Ryan"
-print(anotherBird.name)  // Prints ""
-
- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
value​ProviderValue​Provider

A value provider to add.

-
mocks[Mock]

A list of mocks that should start using the value provider.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.16.0/verify(_:file:line:)-a722fba/index.html b/docs/0.16.0/verify(_:file:line:)-a722fba/index.html deleted file mode 100755 index 3aeff7fb..00000000 --- a/docs/0.16.0/verify(_:file:line:)-a722fba/index.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - Mockingbird - verify(_:file:line:) - - - -
- - - Mockingbird - - Documentation - - 0.16.0 -
- - - - - -
-
-

-Function -verify(_:​file:​line:​) -

- -
public func verify<DeclarationType: Declaration, InvocationType, ReturnType>(_ declaration: Mockable<DeclarationType, InvocationType, ReturnType>, file: StaticString = #file, line: UInt = #line) -> VerificationManager<InvocationType, ReturnType>
-
-

Verify that a mock recieved a specific invocation some number of times.

- -
-
-

Verification lets you assert that a mock received a particular invocation during its lifetime.

- -
verify(bird.doMethod()).wasCalled()
-verify(bird.getProperty()).wasCalled()
-verify(bird.setProperty(any())).wasCalled()
-
-

Match exact or wildcard argument values when verifying methods with parameters.

- -
verify(bird.canChirp(volume: any())).wasCalled()     // Called with any volume
-verify(bird.canChirp(volume: notNil())).wasCalled()  // Called with any non-nil volume
-verify(bird.canChirp(volume: 10)).wasCalled()        // Called with volume = 10
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mock

A mocked declaration to verify.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-beta.3. -

-
- - diff --git a/docs/0.17.0/ArgumentCaptor-94fb876/index.html b/docs/0.17.0/ArgumentCaptor-94fb876/index.html deleted file mode 100644 index 76be50b9..00000000 --- a/docs/0.17.0/ArgumentCaptor-94fb876/index.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - Mockingbird - ArgumentCaptor - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Class - Argument​Captor -

- -
-
public class ArgumentCaptor<ParameterType>: ArgumentMatcher  
-
-
-

Captures method arguments passed during mock invocations.

- -
-
-

An argument captor extracts received argument values which can be used in other parts of the -test.

- -
let bird = mock(Bird.self)
-bird.name = "Ryan"
-
-let nameCaptor = ArgumentCaptor<String>()
-verify(bird.setName(nameCaptor.matcher)).wasCalled()
-print(nameCaptor.value)  // Prints "Ryan"
-
-
-
- -
- - - - - - - - - -ArgumentCaptor - - -ArgumentCaptor - - - - - -ArgumentMatcher - - -ArgumentMatcher - - - - - -ArgumentCaptor->ArgumentMatcher - - - - - - - - -
-

Superclass

-
-
ArgumentMatcher
-

Matches argument values with a comparator.

-
-
-
-
-

Initializers

- -
-

- init(weak:​) -

-
-
public init(weak: Bool = false)  
-
-
-

Create a new argument captor.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
weakBool

Whether captured arguments should be stored weakly.

-
-
-
-
-

Properties

- -
-

- matcher -

-
-
public var matcher: ParameterType  
-
-
-

Passed as a parameter to mock verification contexts.

- -
-
-
-

- all​Values -

-
-
public var allValues: [ParameterType]  
-
-
-

All recorded argument values.

- -
-
-
-

- value -

-
-
public var value: ParameterType?  
-
-
-

The last recorded argument value.

- -
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/ArgumentMatcher-1c43b93/index.html b/docs/0.17.0/ArgumentMatcher-1c43b93/index.html deleted file mode 100644 index 2a93449b..00000000 --- a/docs/0.17.0/ArgumentMatcher-1c43b93/index.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - Mockingbird - ArgumentMatcher - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Class - Argument​Matcher -

- -
-
public class ArgumentMatcher: CustomStringConvertible  
-
-
-

Matches argument values with a comparator.

- -
-
- -
- - - - - - - - - -ArgumentMatcher - - -ArgumentMatcher - - - - - -CustomStringConvertible - -CustomStringConvertible - - - -ArgumentMatcher->CustomStringConvertible - - - - - -Equatable - -Equatable - - - -ArgumentMatcher->Equatable - - - - - -ArgumentCaptor - - -ArgumentCaptor - - - - - -ArgumentCaptor->ArgumentMatcher - - - - - - - - -
-

Subclasses

-
-
ArgumentCaptor
-

Captures method arguments passed during mock invocations.

-
-
-

Conforms To

-
-
CustomStringConvertible
-
Equatable
-
-
-
-

Properties

- -
-

- description -

-
-
public let description: String
-
-
-

A description for test failure output.

- -
-
-
-
-

Operators

- -
-

- == -

-
-
public static func == (lhs: ArgumentMatcher, rhs: ArgumentMatcher) -> Bool  
-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/Array/index.html b/docs/0.17.0/Array/index.html deleted file mode 100644 index 9f7723c9..00000000 --- a/docs/0.17.0/Array/index.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - Mockingbird - Array - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Extensions on - Array -

-
-

Methods

- -
-

- create​Instance() -

-
-
public static func createInstance() -> Self?  
-
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/CountMatcher-6825dbf/index.html b/docs/0.17.0/CountMatcher-6825dbf/index.html deleted file mode 100644 index 4f2eefdb..00000000 --- a/docs/0.17.0/CountMatcher-6825dbf/index.html +++ /dev/null @@ -1,274 +0,0 @@ - - - - - - Mockingbird - CountMatcher - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Structure - Count​Matcher -

- -
-
public struct CountMatcher  
-
-
-

Checks whether a number matches some expected count.

- -
- -
-

Methods

- -
-

- or(_:​) -

-
-
public func or(_ countMatcher: CountMatcher) -> CountMatcher  
-
-
-

Logically combine another count matcher, passing if either matches.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n = 1 || n ≥ 42
-verify(bird.fly()).wasCalled(exactly(once).or(atLeast(42)))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

Another count matcher to combine.

-
-

Returns

-

A combined count matcher.

- -
-
-

- or(_:​) -

-
-
public func or(_ times: Int) -> CountMatcher  
-
-
-

Logically combine with an exact count, passing if either matches.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n = 1 || n = 2
-verify(bird.fly()).wasCalled(exactly(once).or(twice))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An exact count to combine.

-
-

Returns

-

A combined count matcher.

- -
-
-

- and(_:​) -

-
-
public func and(_ countMatcher: CountMatcher) -> CountMatcher  
-
-
-

Logically combine another count matcher, only passing if both match.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n = 1 && n ≥ 42
-verify(bird.fly()).wasCalled(exactly(once).and(atLeast(42)))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

Another count matcher to combine.

-
-

Returns

-

A combined count matcher.

- -
-
-

- xor(_:​) -

-
-
public func xor(_ countMatcher: CountMatcher) -> CountMatcher  
-
-
-

Logically combine another count matcher, only passing if one matches but not the other.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n ≤ 2 ⊕ n ≥ 1
-verify(bird.fly()).wasCalled(atMost(twice).xor(atLeast(once)))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

Another count matcher to combine.

-
-

Returns

-

A combined count matcher.

- -
-
-

- xor(_:​) -

-
-
public func xor(_ times: Int) -> CountMatcher  
-
-
-

Logically combine an exact count, only passing if one matches but not the other.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n ≥ 1 ⊕ n = 2
-verify(bird.fly()).wasCalled(atLeast(once).xor(twice))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An exact count.

-
-

Returns

-

A combined count matcher.

- -
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/Declaration-61b39f6/index.html b/docs/0.17.0/Declaration-61b39f6/index.html deleted file mode 100644 index 97e285c9..00000000 --- a/docs/0.17.0/Declaration-61b39f6/index.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - Mockingbird - Declaration - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Protocol - Declaration -

- -
-
public protocol Declaration  
-
-
-

All mockable declaration types conform to this protocol.

- -
-
- -
- - - - - - - - - -Declaration - - -Declaration - - - - - -VariableDeclaration - - -VariableDeclaration - - - - - -VariableDeclaration->Declaration - - - - - -SubscriptDeclaration - - -SubscriptDeclaration - - - - - -SubscriptDeclaration->Declaration - - - - - -FunctionDeclaration - - -FunctionDeclaration - - - - - -FunctionDeclaration->Declaration - - - - - - - - -
-

Types Conforming to Declaration

-
-
VariableDeclaration
-

Mockable variable declarations.

-
-
FunctionDeclaration
-

Mockable function declarations.

-
-
SubscriptDeclaration
-

Mockable subscript declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/Dictionary/index.html b/docs/0.17.0/Dictionary/index.html deleted file mode 100644 index 60cb2c8e..00000000 --- a/docs/0.17.0/Dictionary/index.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - Mockingbird - Dictionary - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Extensions on - Dictionary -

-
-

Methods

- -
-

- create​Instance() -

-
-
public static func createInstance() -> Self?  
-
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/FunctionDeclaration-9288d96/index.html b/docs/0.17.0/FunctionDeclaration-9288d96/index.html deleted file mode 100644 index 05e47ba3..00000000 --- a/docs/0.17.0/FunctionDeclaration-9288d96/index.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - Mockingbird - FunctionDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Class - Function​Declaration -

- -
-
public class FunctionDeclaration: Declaration  
-
-
-

Mockable function declarations.

- -
-
- -
- - - - - - - - - -FunctionDeclaration - - -FunctionDeclaration - - - - - -Declaration - - -Declaration - - - - - -FunctionDeclaration->Declaration - - - - - -ThrowingFunctionDeclaration - - -ThrowingFunctionDeclaration - - - - - -ThrowingFunctionDeclaration->FunctionDeclaration - - - - - - - - -
-

Subclasses

-
-
ThrowingFunctionDeclaration
-

Mockable throwing function declarations.

-
-
-

Conforms To

-
-
Declaration
-

All mockable declaration types conform to this protocol.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/ImplementationProvider-ebb9664/index.html b/docs/0.17.0/ImplementationProvider-ebb9664/index.html deleted file mode 100644 index eef49035..00000000 --- a/docs/0.17.0/ImplementationProvider-ebb9664/index.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - Mockingbird - ImplementationProvider - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Structure - Implementation​Provider -

- -
-
public struct ImplementationProvider<DeclarationType: Declaration, InvocationType, ReturnType>  
-
-
-

Provides implementation functions used to stub behavior and return values.

- -
- -
-

Initializers

- -
-

- init(implementation​Creator:​) -

-
-
public init(implementationCreator: @escaping () -> Any?)  
-
-
-

Create an implementation provider with an optional callback.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
implementation​Creator@escaping () -> Any?

A closure returning an implementation when evaluated.

-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/MKBFail(_:isFatal:file:line:)-edcfdf0/index.html b/docs/0.17.0/MKBFail(_:isFatal:file:line:)-edcfdf0/index.html deleted file mode 100644 index 9d7bfc5a..00000000 --- a/docs/0.17.0/MKBFail(_:isFatal:file:line:)-edcfdf0/index.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - Mockingbird - MKBFail(_:isFatal:file:line:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -MKBFail(_:​is​Fatal:​file:​line:​) -

- -
-
public func MKBFail(_ message: String, isFatal: Bool = false,
-                    file: StaticString = #file, line: UInt = #line)  
-
-
-

Called by Mockingbird on test assertion failures.

- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
messageString

A description of the failure.

-
is​FatalBool

If true, test case execution should not continue.

-
fileStatic​String

The file where the failure occurred.

-
lineUInt

The line in the file where the failure occurred.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/Mock-1448bd4/index.html b/docs/0.17.0/Mock-1448bd4/index.html deleted file mode 100644 index 6104bc2b..00000000 --- a/docs/0.17.0/Mock-1448bd4/index.html +++ /dev/null @@ -1,232 +0,0 @@ - - - - - - Mockingbird - Mock - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Protocol - Mock -

- -
-
public protocol Mock  
-
-
-

All generated mocks conform to this protocol.

- -
-
- -
- - - - - - - - - -Mock - - -Mock - - - - - -StaticMock - - -StaticMock - - - - - -StaticMock->Mock - - - - - - - - -
-

Types Conforming to Mock

-
-
StaticMock
-

Used to store invocations on static or class scoped methods.

-
-
-
-
-

Default Implementations

- -
-

- use​Default​Values(from:​) -

-
-
@discardableResult
-  func useDefaultValues(from valueProvider: ValueProvider) -> Self  
-
-
-

Adds a value provider returning default values for unstubbed methods to this mock.

- -
-
-

Mocks are strict by default, meaning that calls to unstubbed methods will trigger a test -failure. Methods returning Void do not need to be stubbed in strict mode.

- -
let bird = mock(Bird.self)
-print(bird.name)  // Fails because `bird.getName()` is not stubbed
-bird.fly()        // Okay because `fly()` has a `Void` return type
-
-

To return default values for unstubbed methods, use a ValueProvider with the initialized -mock. Mockingbird provides preset value providers which are guaranteed to be backwards -compatible, such as .standardProvider.

- -
bird.useDefaultValues(from: .standardProvider)
-print(bird.name)  // Prints ""
-
-

You can create custom value providers by registering values for types. See Providable for -how to provide "wildcard" instances for generic types.

- -
var valueProvider = ValueProvider(from: .standardProvider)
-valueProvider.register("Ryan", for: String.self)
-bird.useDefaultValues(from: valueProvider)
-print(bird.name)  // Prints "Ryan"
-
-

Values from concrete stubs always have a higher precedence than default values.

- -
given(bird.getName()) ~> "Ryan"
-print(bird.name)  // Prints "Ryan"
-
-bird.useDefaultValues(from: .standardProvider)
-print(bird.name)  // Prints "Ryan"
-
- -
-

Parameters

- - - - - - - - - - - - - - - - -
value​ProviderValue​Provider

A value provider to add.

-
-
-
- - -
-

Requirements

- -
-

- mocking​Context -

-
-
var mockingContext: MockingContext  
-
-
-

Information about received invocations.

- -
-
-
-

- stubbing​Context -

-
-
var stubbingContext: StubbingContext  
-
-
-

Implementations for stubbing behaviors.

- -
-
-
-

- mock​Metadata -

-
-
var mockMetadata: MockMetadata  
-
-
-

Static metadata about the mock created at generation time.

- -
-
-
-

- source​Location -

-
-
var sourceLocation: SourceLocation?  
-
-
-

Where the mock was initialized.

- -
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/MockMetadata-491926a/index.html b/docs/0.17.0/MockMetadata-491926a/index.html deleted file mode 100644 index da8e6087..00000000 --- a/docs/0.17.0/MockMetadata-491926a/index.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - Mockingbird - MockMetadata - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Structure - Mock​Metadata -

- -
-
public struct MockMetadata  
-
-
-

Stores information about generated mocks.

- -
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/Mockable-92ced01/index.html b/docs/0.17.0/Mockable-92ced01/index.html deleted file mode 100644 index 6fd0161f..00000000 --- a/docs/0.17.0/Mockable-92ced01/index.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - Mockingbird - Mockable - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Structure - Mockable -

- -
-
public struct Mockable<DeclarationType: Declaration, InvocationType, ReturnType>  
-
-
-

Represents a mocked declaration that can be stubbed or verified.

- -
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/MockingContext-e8084fb/index.html b/docs/0.17.0/MockingContext-e8084fb/index.html deleted file mode 100644 index 77f49c17..00000000 --- a/docs/0.17.0/MockingContext-e8084fb/index.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - Mockingbird - MockingContext - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Class - Mocking​Context -

- -
-
public class MockingContext  
-
-
-

Stores invocations received by mocks.

- -
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/NonEscapingClosure-ac8dd96/index.html b/docs/0.17.0/NonEscapingClosure-ac8dd96/index.html deleted file mode 100644 index 913ba7eb..00000000 --- a/docs/0.17.0/NonEscapingClosure-ac8dd96/index.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - Mockingbird - NonEscapingClosure - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Class - Non​Escaping​Closure -

- -
-
public class NonEscapingClosure<ClosureType>: NonEscapingType  
-
-
-

Placeholder for non-escaping closure parameter types.

- -
-
-

Non-escaping closures cannot be stored in an Invocation so an instance of a -NonEscapingClosure is stored instead.

- -
protocol Bird {
-  func send(_ message: String, callback: (Result) -> Void)
-}
-
-bird.send("Hello", callback: { print($0) })
-
-// Must use a wildcard argument matcher like `any`
-verify(bird.send("Hello", callback: any())).wasCalled()
-
-

Mark closure parameter types as @escaping to capture closures during verification.

- -
protocol Bird {
-  func send(_ message: String, callback: @escaping (Result) -> Void)
-}
-
-bird.send("Hello", callback: { print($0) })
-
-let argumentCaptor = ArgumentCaptor<(Result) -> Void>()
-verify(bird.send("Hello", callback: argumentCaptor.matcher)).wasCalled()
-argumentCaptor.value?(.success)  // Prints Result.success
-
-
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/Optional/index.html b/docs/0.17.0/Optional/index.html deleted file mode 100644 index f9ae1d89..00000000 --- a/docs/0.17.0/Optional/index.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - Mockingbird - Optional - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Extensions on - Optional -

-
-

Methods

- -
-

- create​Instance() -

-
-
public static func createInstance() -> Self?  
-
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/OrderedVerificationOptions-2ad9275/index.html b/docs/0.17.0/OrderedVerificationOptions-2ad9275/index.html deleted file mode 100644 index c600f090..00000000 --- a/docs/0.17.0/OrderedVerificationOptions-2ad9275/index.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - - - Mockingbird - OrderedVerificationOptions - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Structure - Ordered​Verification​Options -

- -
-
public struct OrderedVerificationOptions: OptionSet  
-
-
-

Additional options to increase the strictness of inOrder verification blocks.

- -
-
- -
- - - - - - - - - -OrderedVerificationOptions - - -OrderedVerificationOptions - - - - - -OptionSet - -OptionSet - - - -OrderedVerificationOptions->OptionSet - - - - - - - - -
-

Conforms To

-
-
OptionSet
-
-
-
-

Initializers

- -
-

- init(raw​Value:​) -

-
-
public init(rawValue: Int)  
-
-
-
-
-

Properties

- -
-

- raw​Value -

-
-
public let rawValue: Int
-
-
-
-

- no​Invocations​Before -

-
-
public static let noInvocationsBefore  
-
-
-

Check that there are no recorded invocations before those explicitly verified in the block.

- -
-
-

Use this option to disallow invocations prior to those satisfying the first verification.

- -
bird.eat()
-bird.fly()
-bird.chirp()
-
-// Passes _without_ the option
-inOrder {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-// Fails with the option
-inOrder(with: .noInvocationsBefore) {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-
-
-
-

- no​Invocations​After -

-
-
public static let noInvocationsAfter  
-
-
-

Check that there are no recorded invocations after those explicitly verified in the block.

- -
-
-

Use this option to disallow subsequent invocations to those satisfying the last verification.

- -
bird.fly()
-bird.chirp()
-bird.eat()
-
-// Passes _without_ the option
-inOrder {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-// Fails with the option
-inOrder(with: .noInvocationsAfter) {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-
-
-
-

- only​Consecutive​Invocations -

-
-
public static let onlyConsecutiveInvocations  
-
-
-

Check that there are no recorded invocations between those explicitly verified in the block.

- -
-
-

Use this option to disallow non-consecutive invocations to each verification.

- -
bird.fly()
-bird.eat()
-bird.chirp()
-
-// Passes _without_ the option
-inOrder {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-// Fails with the option
-inOrder(with: .noInvocationsAfter) {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/PropertyGetterDeclaration-8ac0b54/index.html b/docs/0.17.0/PropertyGetterDeclaration-8ac0b54/index.html deleted file mode 100644 index 79397116..00000000 --- a/docs/0.17.0/PropertyGetterDeclaration-8ac0b54/index.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - Mockingbird - PropertyGetterDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Class - Property​Getter​Declaration -

- -
-
public class PropertyGetterDeclaration: VariableDeclaration  
-
-
-

Mockable property getter declarations.

- -
-
- -
- - - - - - - - - -PropertyGetterDeclaration - - -PropertyGetterDeclaration - - - - - -VariableDeclaration - - -VariableDeclaration - - - - - -PropertyGetterDeclaration->VariableDeclaration - - - - - - - - -
-

Superclass

-
-
VariableDeclaration
-

Mockable variable declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/PropertySetterDeclaration-1a29109/index.html b/docs/0.17.0/PropertySetterDeclaration-1a29109/index.html deleted file mode 100644 index de8480d6..00000000 --- a/docs/0.17.0/PropertySetterDeclaration-1a29109/index.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - Mockingbird - PropertySetterDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Class - Property​Setter​Declaration -

- -
-
public class PropertySetterDeclaration: VariableDeclaration  
-
-
-

Mockable property setter declarations.

- -
-
- -
- - - - - - - - - -PropertySetterDeclaration - - -PropertySetterDeclaration - - - - - -VariableDeclaration - - -VariableDeclaration - - - - - -PropertySetterDeclaration->VariableDeclaration - - - - - - - - -
-

Superclass

-
-
VariableDeclaration
-

Mockable variable declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/Providable-fd593f8/index.html b/docs/0.17.0/Providable-fd593f8/index.html deleted file mode 100644 index d50bbc20..00000000 --- a/docs/0.17.0/Providable-fd593f8/index.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - Mockingbird - Providable - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Protocol - Providable -

- -
-
public protocol Providable  
-
-
-

A type that can provide concrete instances of itself.

- -
-
-

Provide wildcard instances for generic types by conforming the base type to Providable and -registering the type. Non-wildcard instances have precedence over wildcard instances.

- -
extension Array: Providable {
-  public static func createInstance() -> Self? {
-    return Array()
-  }
-}
-
-var valueProvider = ValueProvider()
-valueProvider.registerType(Array<Any>.self)
-
-// All specializations of `Array` return an empty array
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints []
-print(valueProvider.provideValue(for: Array<Data>.self))    // Prints []
-
-// Register a non-wildcard instance of `Array<String>`
-valueProvider.register(["A", "B"], for: Array<String>.self)
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints ["A", "B"]
-print(valueProvider.provideValue(for: Array<Data>.self))    // Prints []
-
- -
- - - - -
-

Requirements

- -
-

- create​Instance() -

-
-
static func createInstance() -> Self? 
-
-
-

Create a concrete instance of this type, or nil if no concrete instance is available.

- -
-
- -
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/Set/index.html b/docs/0.17.0/Set/index.html deleted file mode 100644 index 7c022188..00000000 --- a/docs/0.17.0/Set/index.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - Mockingbird - Set - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Extensions on - Set -

-
-

Methods

- -
-

- create​Instance() -

-
-
public static func createInstance() -> Self?  
-
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/SourceLocation-e12b876/index.html b/docs/0.17.0/SourceLocation-e12b876/index.html deleted file mode 100644 index 44b9090c..00000000 --- a/docs/0.17.0/SourceLocation-e12b876/index.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - Mockingbird - SourceLocation - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Structure - Source​Location -

- -
-
public struct SourceLocation  
-
-
-

References a line of code in a file.

- -
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/StaticMock-a04a7c2/index.html b/docs/0.17.0/StaticMock-a04a7c2/index.html deleted file mode 100644 index 0771e5b1..00000000 --- a/docs/0.17.0/StaticMock-a04a7c2/index.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - Mockingbird - StaticMock - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Class - Static​Mock -

- -
-
public class StaticMock: Mock  
-
-
-

Used to store invocations on static or class scoped methods.

- -
-
- -
- - - - - - - - - -StaticMock - - -StaticMock - - - - - -Mock - - -Mock - - - - - -StaticMock->Mock - - - - - - - - -
-

Conforms To

-
-
Mock
-

All generated mocks conform to this protocol.

-
-
-
-
-

Properties

- -
-

- mocking​Context -

-
-
public let mockingContext  
-
-
-

Information about received invocations.

- -
-
-
-

- stubbing​Context -

-
-
public let stubbingContext  
-
-
-

Implementations for stubbing behaviors.

- -
-
-
-

- mock​Metadata -

-
-
public let mockMetadata  
-
-
-

Static metadata about the mock created at generation time.

- -
-
-
-

- source​Location -

-
-
public var sourceLocation: SourceLocation?  
-
-
-

Where the mock was initialized.

- -
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/StubbingContext-c368434/index.html b/docs/0.17.0/StubbingContext-c368434/index.html deleted file mode 100644 index 3b0988b0..00000000 --- a/docs/0.17.0/StubbingContext-c368434/index.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - Mockingbird - StubbingContext - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Class - Stubbing​Context -

- -
-
public class StubbingContext  
-
-
-

Stores stubbed implementations used by mocks.

- -
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/StubbingManager-c41b02a/index.html b/docs/0.17.0/StubbingManager-c41b02a/index.html deleted file mode 100644 index 999a0768..00000000 --- a/docs/0.17.0/StubbingManager-c41b02a/index.html +++ /dev/null @@ -1,252 +0,0 @@ - - - - - - Mockingbird - StubbingManager - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Class - Stubbing​Manager -

- -
-
public class StubbingManager<DeclarationType: Declaration, InvocationType, ReturnType>  
-
-
-

An intermediate object used for stubbing declarations returned by given.

- -
-
- - -

Nested Types

-
-
StubbingManager.TransitionStrategy
-

When to use the next chained implementation provider.

-
-
-
-
-

Methods

- -
-

- will​Return(_:​) -

-
-
@discardableResult
-  public func willReturn(_ value: ReturnType) -> Self  
-
-
-

Stub a mocked method or property by returning a single value.

- -
-
-

Stubbing allows you to define custom behavior for mocks to perform.

- -
given(bird.doMethod()).willReturn(someValue)
-given(bird.getProperty()).willReturn(someValue)
-
-

Match exact or wildcard argument values when stubbing methods with parameters. Stubs added -later have a higher precedence, so add stubs with specific matchers last.

- -
given(bird.canChirp(volume: any())).willReturn(true)     // Any volume
-given(bird.canChirp(volume: notNil())).willReturn(true)  // Any non-nil volume
-given(bird.canChirp(volume: 10)).willReturn(true)        // Volume = 10
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
valueReturn​Type

A stubbed value to return.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will​Return(_:​transition:​) -

-
-
@discardableResult
-  public func willReturn(
-    _ provider: ImplementationProvider<DeclarationType, InvocationType, ReturnType>,
-    transition: TransitionStrategy = .onFirstNil
-  ) -> Self  
-
-
-

Stub a mocked method or property with an implementation provider.

- -
-
-

There are several preset implementation providers such as lastSetValue, which can be used -with property getters to automatically save and return values.

- -
given(bird.getName()).willReturn(lastSetValue(initial: ""))
-print(bird.name)  // Prints ""
-bird.name = "Ryan"
-print(bird.name)  // Prints "Ryan"
-
-

Implementation providers usually return multiple values, so when using chained stubbing it's -necessary to specify a transition strategy that defines when to go to the next stub.

- -
given(bird.getName())
-  .willReturn(lastSetValue(initial: ""), transition: .after(2))
-  .willReturn("Sterling")
-
-print(bird.name)  // Prints ""
-bird.name = "Ryan"
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
providerImplementation​Provider<Declaration​Type, Invocation​Type, Return​Type>

An implementation provider that creates closure implementation stubs.

-
transitionTransition​Strategy

When to use the next implementation provider in the list.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
-
@discardableResult
-  public func will(_ implementation: InvocationType) -> Self  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-

Stubs are type safe and work with inout and closure parameter types.

- -
protocol Bird {
-  func send(_ message: inout String)
-  func fly(callback: (Result) -> Void)
-}
-
-// Inout parameter type
-var message = "Hello!"
-bird.send(&message)
-print(message)   // Prints "HELLO!"
-
-// Closure parameter type
-given(bird.fly(callback: any())).will { callback in
-  callback(.success)
-}
-bird.fly(callback: { result in
-  print(result)  // Prints Result.success
-})
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementationInvocation​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/StubbingManager_TransitionStrategy-1e8f2be/index.html b/docs/0.17.0/StubbingManager_TransitionStrategy-1e8f2be/index.html deleted file mode 100644 index a62669d6..00000000 --- a/docs/0.17.0/StubbingManager_TransitionStrategy-1e8f2be/index.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - Mockingbird - StubbingManager.TransitionStrategy - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Enumeration - Stubbing​Manager.​Transition​Strategy -

- -
-
public enum TransitionStrategy  
-
-
-

When to use the next chained implementation provider.

- -
-
- - -

Member Of

-
-
StubbingManager
-

An intermediate object used for stubbing declarations returned by given.

-
-
-
-
-

Enumeration Cases

- -
-

- after -

-
-
case after(_ times: Int) 
-
-
-

Go to the next provider after providing a certain number of implementations.

- -
-
-

This transition strategy is particularly useful for non-finite value providers such as -sequence and loopingSequence.

- -
given(bird.getName())
-  .willReturn(loopingSequence(of: "Ryan", "Sterling"), transition: .after(3))
-  .willReturn("Andrew")
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Andrew"
-
-
-
-
-

- on​First​Nil -

-
-
case onFirstNil
-
-
-

Use the current provider until it provides a nil implementation.

- -
-
-

This transition strategy should be used for finite value providers like finiteSequence -that are nil terminated to indicate an invalidated state.

- -
given(bird.getName())
-  .willReturn(finiteSequence(of: "Ryan", "Sterling"), transition: .onFirstNil)
-  .willReturn("Andrew")
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Andrew"
-
-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/SubscriptDeclaration-c38cdc6/index.html b/docs/0.17.0/SubscriptDeclaration-c38cdc6/index.html deleted file mode 100644 index 0d20f856..00000000 --- a/docs/0.17.0/SubscriptDeclaration-c38cdc6/index.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - Mockingbird - SubscriptDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Class - Subscript​Declaration -

- -
-
public class SubscriptDeclaration: Declaration  
-
-
-

Mockable subscript declarations.

- -
-
- -
- - - - - - - - - -SubscriptDeclaration - - -SubscriptDeclaration - - - - - -Declaration - - -Declaration - - - - - -SubscriptDeclaration->Declaration - - - - - -SubscriptGetterDeclaration - - -SubscriptGetterDeclaration - - - - - -SubscriptGetterDeclaration->SubscriptDeclaration - - - - - -SubscriptSetterDeclaration - - -SubscriptSetterDeclaration - - - - - -SubscriptSetterDeclaration->SubscriptDeclaration - - - - - - - - -
-

Subclasses

-
-
SubscriptGetterDeclaration
-

Mockable subscript getter declarations.

-
-
SubscriptSetterDeclaration
-

Mockable subscript setter declarations.

-
-
-

Conforms To

-
-
Declaration
-

All mockable declaration types conform to this protocol.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/SubscriptGetterDeclaration-f0cef1c/index.html b/docs/0.17.0/SubscriptGetterDeclaration-f0cef1c/index.html deleted file mode 100644 index a2196f15..00000000 --- a/docs/0.17.0/SubscriptGetterDeclaration-f0cef1c/index.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - Mockingbird - SubscriptGetterDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Class - Subscript​Getter​Declaration -

- -
-
public class SubscriptGetterDeclaration: SubscriptDeclaration  
-
-
-

Mockable subscript getter declarations.

- -
-
- -
- - - - - - - - - -SubscriptGetterDeclaration - - -SubscriptGetterDeclaration - - - - - -SubscriptDeclaration - - -SubscriptDeclaration - - - - - -SubscriptGetterDeclaration->SubscriptDeclaration - - - - - - - - -
-

Superclass

-
-
SubscriptDeclaration
-

Mockable subscript declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/SubscriptSetterDeclaration-e2c7a0d/index.html b/docs/0.17.0/SubscriptSetterDeclaration-e2c7a0d/index.html deleted file mode 100644 index 3da35ed5..00000000 --- a/docs/0.17.0/SubscriptSetterDeclaration-e2c7a0d/index.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - Mockingbird - SubscriptSetterDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Class - Subscript​Setter​Declaration -

- -
-
public class SubscriptSetterDeclaration: SubscriptDeclaration  
-
-
-

Mockable subscript setter declarations.

- -
-
- -
- - - - - - - - - -SubscriptSetterDeclaration - - -SubscriptSetterDeclaration - - - - - -SubscriptDeclaration - - -SubscriptDeclaration - - - - - -SubscriptSetterDeclaration->SubscriptDeclaration - - - - - - - - -
-

Superclass

-
-
SubscriptDeclaration
-

Mockable subscript declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/TestFailer-f9088cc/index.html b/docs/0.17.0/TestFailer-f9088cc/index.html deleted file mode 100644 index 241328b4..00000000 --- a/docs/0.17.0/TestFailer-f9088cc/index.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - Mockingbird - TestFailer - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Protocol - Test​Failer -

- -
-
public protocol TestFailer  
-
-
-

A type that can handle test failures emitted by Mockingbird.

- -
- - - - -
-

Requirements

- -
-

- fail(message:​is​Fatal:​file:​line:​) -

-
-
func fail(message: String, isFatal: Bool, file: StaticString, line: UInt) 
-
-
-

Fail the current test case.

- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
messageString

A description of the failure.

-
is​FatalBool

If true, test case execution should not continue.

-
fileStatic​String

The file where the failure occurred.

-
lineUInt

The line in the file where the failure occurred.

-
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/ThrowingFunctionDeclaration-c3ccd38/index.html b/docs/0.17.0/ThrowingFunctionDeclaration-c3ccd38/index.html deleted file mode 100644 index 1dd0d904..00000000 --- a/docs/0.17.0/ThrowingFunctionDeclaration-c3ccd38/index.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - Mockingbird - ThrowingFunctionDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Class - Throwing​Function​Declaration -

- -
-
public class ThrowingFunctionDeclaration: FunctionDeclaration  
-
-
-

Mockable throwing function declarations.

- -
-
- -
- - - - - - - - - -ThrowingFunctionDeclaration - - -ThrowingFunctionDeclaration - - - - - -FunctionDeclaration - - -FunctionDeclaration - - - - - -ThrowingFunctionDeclaration->FunctionDeclaration - - - - - - - - -
-

Superclass

-
-
FunctionDeclaration
-

Mockable function declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/ValueProvider-242b058/index.html b/docs/0.17.0/ValueProvider-242b058/index.html deleted file mode 100644 index 1433b7b2..00000000 --- a/docs/0.17.0/ValueProvider-242b058/index.html +++ /dev/null @@ -1,593 +0,0 @@ - - - - - - Mockingbird - ValueProvider - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Structure - Value​Provider -

- -
-
public struct ValueProvider  
-
-
-

Provides concrete instances of types.

- -
-
-

To return default values for unstubbed methods, use a ValueProvider with the initialized mock. -Mockingbird provides preset value providers which are guaranteed to be backwards compatible, -such as .standardProvider.

- -
let bird = mock(Bird.self)
-bird.useDefaultValues(from: .standardProvider)
-print(bird.name)  // Prints ""
-
-

You can create custom value providers by registering values for types.

- -
var valueProvider = ValueProvider()
-valueProvider.register("Ryan", for: String.self)
-
-bird.useDefaultValues(from: valueProvider)
-print(bird.name)  // Prints "Ryan"
-
-
- -
-

Initializers

- -
-

- init() -

-
-
public init()  
-
-
-

Create an empty value provider.

- -
-
-
-
-

Properties

- -
-

- collections​Provider -

-
-
static let collectionsProvider  
-
-
-

A value provider with default-initialized collections.

- -
-
-

https://developer.apple.com/documentation/foundation/collections

- -
-
-
-

- primitives​Provider -

-
-
static let primitivesProvider  
-
-
-

A value provider with primitive Swift types.

- -
-
-

https://developer.apple.com/documentation/foundation/numbers_data_and_basic_values

- -
-
-
-

- basics​Provider -

-
-
static let basicsProvider  
-
-
-

A value provider with basic number and data types that are not primitives.

- -
-
-

https://developer.apple.com/documentation/foundation/numbers_data_and_basic_values

- -
-
-
-

- strings​Provider -

-
-
static let stringsProvider  
-
-
-

A value provider with string and text types.

- -
-
-

https://developer.apple.com/documentation/foundation/strings_and_text

- -
-
-
-

- dates​Provider -

-
-
static let datesProvider  
-
-
-

A value provider with date and time types.

- -
-
-

https://developer.apple.com/documentation/foundation/dates_and_times

- -
-
-
-

- standard​Provider -

-
-
public static let standardProvider = ValueProvider() +
-    .collectionsProvider +
-    .primitivesProvider +
-    .basicsProvider +
-    .stringsProvider +
-    .datesProvider
-
-
-

All preset value providers.

- -
-
-
-
-

Methods

- -
-

- add(_:​) -

-
-
mutating public func add(_ other: Self)  
-
-
-

Adds the values from another value provider.

- -
-
-

Value providers can be composed by adding values from another provider. Values in the other -provider have precedence and will overwrite existing values in this provider.

- -
var valueProvider = ValueProvider()
-valueProvider.add(.standardProvider)
-print(valueProvider.provideValue(for: String.self))  // Prints ""
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
otherSelf

A value provider to combine.

-
-
-
-

- adding(_:​) -

-
-
public func adding(_ other: Self) -> Self  
-
-
-

Returns a new value provider containing the values from both providers.

- -
-
-

Value providers can be composed by adding values from another provider. Values in the added -provider have precendence over those in base provider.

- -
let valueProvider = ValueProvider.collectionsProvider.adding(.primitivesProvider)
-print(valueProvider.provideValue(for: [Bool].self))  // Prints []
-print(valueProvider.provideValue(for: Int.self))     // Prints 0
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
otherSelf

A value provider to combine.

-
-

Returns

-

A new value provider with the values of lhs and rhs.

- -
-
-

- register(_:​for:​) -

-
-
mutating public func register<K, V>(_ value: V, for type: K.Type)  
-
-
-

Register a value for a specific type.

- -
-
-

Create custom value providers by registering values for types.

- -
var valueProvider = ValueProvider()
-valueProvider.register("Ryan", for: String.self)
-print(valueProvider.provideValue(for: String.self))  // Prints "Ryan"
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
valueV

The value to register.

-
typeK.​Type

The type to register the value under. value must be of kind type.

-
-
-
-

- register​Type(_:​) -

-
-
mutating public func registerType<T: Providable>(_ type: T.Type = T.self)  
-
-
-

Register a Providable type used to provide values for generic types.

- -
-
-

Provide wildcard instances for generic types by conforming the base type to Providable and -registering the type. Non-wildcard instances have precedence over wildcard instances.

- -
extension Array: Providable {
-  public static func createInstance() -> Self? {
-    return Array()
-  }
-}
-
-var valueProvider = ValueProvider()
-valueProvider.registerType(Array<Any>.self)
-
-// All specializations of `Array` return an empty array
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints []
-print(valueProvider.provideValue(for: Array<Data>.self))    // Prints []
-
-// Register a non-wildcard instance of `Array<String>`
-valueProvider.register(["A", "B"], for: Array<String>.self)
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints ["A", "B"]
-print(valueProvider.provideValue(for: Array<Data>.self))    // Prints []
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

A Providable type to register.

-
-
-
-

- remove(_:​) -

-
-
mutating public func remove<T>(_ type: T.Type)  
-
-
-

Remove a registered value for a given type.

- -
-
-

Previously registered values can be removed from the top-level value provider. This does not -affect values provided by subproviders.

- -
var valueProvider = ValueProvider(from: .standardProvider)
-print(valueProvider.provideValue(for: String.self))  // Prints ""
-
-// Override the subprovider value
-valueProvider.register("Ryan", for: String.self)
-print(valueProvider.provideValue(for: String.self))  // Prints "Ryan"
-
-// Remove the registered value
-valueProvider.remove(String.self)
-print(valueProvider.provideValue(for: String.self))  // Prints ""
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The type to remove a previously registered value for.

-
-
-
-

- remove(_:​) -

-
-
mutating public func remove<T: Providable>(_ type: T.Type = T.self)  
-
-
-

Remove a registered Providable type.

- -
-
-

Previously registered wildcard instances for generic types can be removed from the top-level -value provider.

- -
var valueProvider = ValueProvider()
-
-valueProvider.registerType(Array<Any>.self)
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints []
-
-valueProvider.remove(Array<Any>.self)
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints nil
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

A Providable type to remove.

-
-
-
-

- provide​Value(for:​) -

-
-
public func provideValue<T>(for type: T.Type = T.self) -> T?  
-
-
-

Provide a value for a given type.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

A type to provide a value for.

-
-

Returns

-

A concrete instance of the given type, or nil if no value could be provided.

- -
-
-

- provide​Value(for:​) -

-
-
public func provideValue<T: Providable>(for type: T.Type = T.self) -> T?  
-
-
-

Provide a value a given Providable type.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

A Providable type to provide a value for.

-
-

Returns

-

A concrete instance of the given type, or nil if no value could be provided.

- -
-
-
-

Operators

- -
-

- + -

-
-
static public func + (lhs: Self, rhs: Self) -> Self  
-
-
-

Returns a new value provider containing the values from both providers.

- -
-
-

Value providers can be composed by adding values from other providers. Values in the second -provider have precendence over those in first provider.

- -
let valueProvider = .collectionsProvider + .primitivesProvider
-print(valueProvider.provideValue(for: [Bool].self))  // Prints []
-print(valueProvider.provideValue(for: Int.self))     // Prints 0
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
lhsSelf

A value provider.

-
rhsSelf

A value provider.

-
-

Returns

-

A new value provider with the values of lhs and rhs.

- -
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/VariableDeclaration-f83ff6c/index.html b/docs/0.17.0/VariableDeclaration-f83ff6c/index.html deleted file mode 100644 index 7bfa5063..00000000 --- a/docs/0.17.0/VariableDeclaration-f83ff6c/index.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - Mockingbird - VariableDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Class - Variable​Declaration -

- -
-
public class VariableDeclaration: Declaration  
-
-
-

Mockable variable declarations.

- -
-
- -
- - - - - - - - - -VariableDeclaration - - -VariableDeclaration - - - - - -Declaration - - -Declaration - - - - - -VariableDeclaration->Declaration - - - - - -PropertySetterDeclaration - - -PropertySetterDeclaration - - - - - -PropertySetterDeclaration->VariableDeclaration - - - - - -PropertyGetterDeclaration - - -PropertyGetterDeclaration - - - - - -PropertyGetterDeclaration->VariableDeclaration - - - - - - - - -
-

Subclasses

-
-
PropertyGetterDeclaration
-

Mockable property getter declarations.

-
-
PropertySetterDeclaration
-

Mockable property setter declarations.

-
-
-

Conforms To

-
-
Declaration
-

All mockable declaration types conform to this protocol.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/VerificationManager-0d29384/index.html b/docs/0.17.0/VerificationManager-0d29384/index.html deleted file mode 100644 index 88a030f8..00000000 --- a/docs/0.17.0/VerificationManager-0d29384/index.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - Mockingbird - VerificationManager - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

- Structure - Verification​Manager -

- -
-
public struct VerificationManager<InvocationType, ReturnType>  
-
-
-

An intermediate object used for verifying declarations returned by verify.

- -
- -
-

Methods

- -
-

- was​Called(_:​) -

-
-
public func wasCalled(_ countMatcher: CountMatcher)  
-
-
-

Verify that the mock received the invocation some number of times using a count matcher.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

A count matcher defining the number of invocations to verify.

-
-
-
-

- was​Called(_:​) -

-
-
public func wasCalled(_ times: Int = once)  
-
-
-

Verify that the mock received the invocation an exact number of times.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

The exact number of invocations expected.

-
-
-
-

- was​Never​Called() -

-
-
public func wasNeverCalled()  
-
-
-

Verify that the mock never received the invocation.

- -
-
-
-

- returning(_:​) -

-
-
public func returning(_ type: ReturnType.Type = ReturnType.self) -> Self  
-
-
-

Disambiguate methods overloaded by return type.

- -
-
-

Declarations for methods overloaded by return type cannot type inference and should be -disambiguated.

- -
protocol Bird {
-  func getMessage<T>() throws -> T    // Overloaded generically
-  func getMessage() throws -> String  // Overloaded explicitly
-  func getMessage() throws -> Data
-}
-
-verify(bird.send(any()))
-  .returning(String.self)
-  .wasCalled()
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeReturn​Type.​Type

The return type of the declaration to verify.

-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/all.css b/docs/0.17.0/all.css deleted file mode 100644 index 68137abd..00000000 --- a/docs/0.17.0/all.css +++ /dev/null @@ -1 +0,0 @@ -:root{--system-red:#ff3b30;--system-orange:#ff9500;--system-yellow:#fc0;--system-green:#34c759;--system-teal:#5ac8fa;--system-blue:#007aff;--system-indigo:#5856d6;--system-purple:#af52de;--system-pink:#ff2d55;--system-gray:#8e8e93;--system-gray2:#aeaeb2;--system-gray3:#c7c7cc;--system-gray4:#d1d1d6;--system-gray5:#e5e5ea;--system-gray6:#f2f2f7;--label:#000;--secondary-label:#3c3c43;--tertiary-label:#48484a;--quaternary-label:#636366;--placeholder-text:#8e8e93;--link:#007aff;--separator:#e5e5ea;--opaque-separator:#c6c6c8;--system-fill:#787880;--secondary-system-fill:#787880;--tertiary-system-fill:#767680;--quaternary-system-fill:#747480;--system-background:#fff;--secondary-system-background:#f2f2f7;--tertiary-system-background:#fff;--secondary-system-grouped-background:#fff;--tertiary-system-grouped-background:#f2f2f7}@supports (color:color(display-p3 1 1 1)){:root{--system-red:color(display-p3 1 0.2314 0.1882);--system-orange:color(display-p3 1 0.5843 0);--system-yellow:color(display-p3 1 0.8 0);--system-green:color(display-p3 0.2039 0.7804 0.349);--system-teal:color(display-p3 0.3529 0.7843 0.9804);--system-blue:color(display-p3 0 0.4784 1);--system-indigo:color(display-p3 0.3451 0.3373 0.8392);--system-purple:color(display-p3 0.6863 0.3216 0.8706);--system-pink:color(display-p3 1 0.1765 0.3333);--system-gray:color(display-p3 0.5569 0.5569 0.5765);--system-gray2:color(display-p3 0.6824 0.6824 0.698);--system-gray3:color(display-p3 0.7804 0.7804 0.8);--system-gray4:color(display-p3 0.8196 0.8196 0.8392);--system-gray5:color(display-p3 0.898 0.898 0.9176);--system-gray6:color(display-p3 0.949 0.949 0.9686);--label:color(display-p3 0 0 0);--secondary-label:color(display-p3 0.2353 0.2353 0.2627);--tertiary-label:color(display-p3 0.2823 0.2823 0.2901);--quaternary-label:color(display-p3 0.4627 0.4627 0.5019);--placeholder-text:color(display-p3 0.5568 0.5568 0.5764);--link:color(display-p3 0 0.4784 1);--separator:color(display-p3 0.898 0.898 0.9176);--opaque-separator:color(display-p3 0.7765 0.7765 0.7843);--system-fill:color(display-p3 0.4706 0.4706 0.502);--secondary-system-fill:color(display-p3 0.4706 0.4706 0.502);--tertiary-system-fill:color(display-p3 0.4627 0.4627 0.502);--quaternary-system-fill:color(display-p3 0.4549 0.4549 0.502);--system-background:color(display-p3 1 1 1);--secondary-system-background:color(display-p3 0.949 0.949 0.9686);--tertiary-system-background:color(display-p3 1 1 1);--secondary-system-grouped-background:color(display-p3 1 1 1);--tertiary-system-grouped-background:color(display-p3 0.949 0.949 0.9686)}}:root{--large-title:600 32pt/39pt sans-serif;--title-1:600 26pt/32pt sans-serif;--title-2:600 20pt/25pt sans-serif;--title-3:500 18pt/23pt sans-serif;--headline:500 15pt/20pt sans-serif;--body:300 15pt/20pt sans-serif;--callout:300 14pt/19pt sans-serif;--subhead:300 13pt/18pt sans-serif;--footnote:300 12pt/16pt sans-serif;--caption-1:300 11pt/13pt sans-serif;--caption-2:300 11pt/13pt sans-serif}@media screen and (max-width:768px){:root{--large-title:600 27.2pt/33.15pt sans-serif;--title-1:600 22.1pt/27.2pt sans-serif;--title-2:600 17pt/21.25pt sans-serif;--title-3:500 15.3pt/19.55pt sans-serif;--headline:500 12.75pt/17pt sans-serif;--body:300 12.75pt/17pt sans-serif;--callout:300 11.9pt/16.15pt sans-serif;--subhead:300 11.05pt/15.3pt sans-serif;--footnote:300 10.2pt/13.6pt sans-serif;--caption-1:300 9.35pt/11.05pt sans-serif;--caption-2:300 9.35pt/11.05pt sans-serif}}:root{--icon-case:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%2389c5e6' height='90' rx='8' stroke='%236bb7e1' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M20.21 50c0-20.7 11.9-32.79 30.8-32.79 16 0 28.21 10.33 28.7 25.32H64.19C63.4 35 58.09 30.11 51 30.11c-8.79 0-14.37 7.52-14.37 19.82s5.54 20 14.41 20c7.08 0 12.22-4.66 13.23-12.09h15.52c-.74 15.07-12.43 25-28.78 25C32 82.81 20.21 70.72 20.21 50z' fill='%23fff'/%3E%3C/svg%3E");--icon-class:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%239b98e6' height='90' rx='8' stroke='%235856d6' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='m20.21 50c0-20.7 11.9-32.79 30.8-32.79 16 0 28.21 10.33 28.7 25.32h-15.52c-.79-7.53-6.1-12.42-13.19-12.42-8.79 0-14.37 7.52-14.37 19.82s5.54 20 14.41 20c7.08 0 12.22-4.66 13.23-12.09h15.52c-.74 15.07-12.43 25-28.78 25-19.01-.03-30.8-12.12-30.8-32.84z' fill='%23fff'/%3E%3C/svg%3E");--icon-enumeration:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%23eca95b' height='90' rx='8' stroke='%23e89234' stroke-miterlimit='10' stroke-width='4' width='90' x='5.17' y='5'/%3E%3Cpath d='M71.9 81.71H28.43V18.29H71.9v13H44.56v12.62h25.71v11.87H44.56V68.7H71.9z' fill='%23fff'/%3E%3C/svg%3E");--icon-extension:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%23eca95b' height='90' rx='8' stroke='%23e89234' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cg fill='%23fff'%3E%3Cpath d='M54.43 81.93H20.51V18.07h33.92v12.26H32.61v13.8h20.45v11.32H32.61v14.22h21.82zM68.74 74.58h-.27l-2.78 7.35h-7.28L64 69.32l-6-12.54h8l2.74 7.3h.27l2.76-7.3h7.64l-6.14 12.54 5.89 12.61h-7.64z'/%3E%3C/g%3E%3C/svg%3E");--icon-function:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%237ac673' height='90' rx='8' stroke='%235bb74f' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M24.25 75.66A5.47 5.47 0 0130 69.93c1.55 0 3.55.41 6.46.41 3.19 0 4.78-1.55 5.46-6.65l1.5-10.14h-9.34a6 6 0 110-12h11.1l1.09-7.27C47.82 23.39 54.28 17.7 64 17.7c6.69 0 11.74 1.77 11.74 6.64A5.47 5.47 0 0170 30.07c-1.55 0-3.55-.41-6.46-.41-3.14 0-4.73 1.51-5.46 6.65l-.78 5.27h11.44a6 6 0 11.05 12H55.6l-1.78 12.11C52.23 76.61 45.72 82.3 36 82.3c-6.7 0-11.75-1.77-11.75-6.64z' fill='%23fff'/%3E%3C/svg%3E");--icon-method:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%235a98f8' height='90' rx='8' stroke='%232974ed' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M70.61 81.71v-39.6h-.31l-15.69 39.6h-9.22l-15.65-39.6h-.35v39.6H15.2V18.29h18.63l16 41.44h.36l16-41.44H84.8v63.42z' fill='%23fff'/%3E%3C/svg%3E");--icon-property:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%2389c5e6' height='90' rx='8' stroke='%236bb7e1' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M52.31 18.29c13.62 0 22.85 8.84 22.85 22.46s-9.71 22.37-23.82 22.37H41v18.59H24.84V18.29zM41 51h7c6.85 0 10.89-3.56 10.89-10.2S54.81 30.64 48 30.64h-7z' fill='%23fff'/%3E%3C/svg%3E");--icon-protocol:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%23ff6682' height='90' rx='8' stroke='%23ff2d55' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cg fill='%23fff'%3E%3Cpath d='M46.28 18.29c11.84 0 20 8.66 20 21.71s-8.44 21.71-20.6 21.71H34.87v20H22.78V18.29zM34.87 51.34H43c6.93 0 11-4 11-11.29S50 28.8 43.07 28.8h-8.2zM62 57.45h8v4.77h.16c.84-3.45 2.54-5.12 5.17-5.12a5.06 5.06 0 011.92.35V65a5.69 5.69 0 00-2.39-.51c-3.08 0-4.66 1.74-4.66 5.12v12.1H62z'/%3E%3C/g%3E%3C/svg%3E");--icon-structure:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%23b57edf' height='90' rx='8' stroke='%239454c2' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M38.38 63c.74 4.53 5.62 7.16 11.82 7.16s10.37-2.81 10.37-6.68c0-3.51-2.73-5.31-10.24-6.76l-6.5-1.23C31.17 53.14 24.62 47 24.62 37.28c0-12.22 10.59-20.09 25.18-20.09 16 0 25.36 7.83 25.53 19.91h-15c-.26-4.57-4.57-7.29-10.42-7.29s-9.31 2.63-9.31 6.37c0 3.34 2.9 5.18 9.8 6.5l6.5 1.23C70.46 46.51 76.61 52 76.61 62c0 12.74-10 20.83-26.72 20.83-15.82 0-26.28-7.3-26.5-19.78z' fill='%23fff'/%3E%3C/svg%3E");--icon-typealias:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%237ac673' height='90' rx='8' stroke='%235bb74f' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M42 81.71V31.3H24.47v-13h51.06v13H58v50.41z' fill='%23fff'/%3E%3C/svg%3E");--icon-variable:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%237ac673' height='90' rx='8' stroke='%235bb74f' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M39.85 81.71L19.63 18.29H38l12.18 47.64h.35L62.7 18.29h17.67L60.15 81.71z' fill='%23fff'/%3E%3C/svg%3E")}body,button,input,select,textarea{-moz-font-feature-settings:"kern";-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;direction:ltr;font-synthesis:none;text-align:left}h1:first-of-type,h2:first-of-type,h3:first-of-type,h4:first-of-type,h5:first-of-type,h6:first-of-type{margin-top:0}h1 code,h2 code,h3 code,h4 code,h5 code,h6 code{font-family:inherit;font-weight:inherit}h1 img,h2 img,h3 img,h4 img,h5 img,h6 img{margin:0 .5em .2em 0;vertical-align:middle;display:inline-block}h1+*,h2+*,h3+*,h4+*,h5+*,h6+*{margin-top:.8em}img+h1{margin-top:.5em}img+h1,img+h2,img+h3,img+h4,img+h5,img+h6{margin-top:.3em}:is(h1,h2,h3,h4,h5,h6)+:is(h1,h2,h3,h4,h5,h6){margin-top:.4em}:matches(h1,h2,h3,h4,h5,h6)+:matches(h1,h2,h3,h4,h5,h6){margin-top:.4em}:is(p,ul,ol)+:is(h1,h2,h3,h4,h5,h6){margin-top:1.6em}:matches(p,ul,ol)+:matches(h1,h2,h3,h4,h5,h6){margin-top:1.6em}:is(p,ul,ol)+*{margin-top:.8em}:matches(p,ul,ol)+*{margin-top:.8em}ol,ul{margin-left:1.17647em}:matches(ul,ol) :matches(ul,ol){margin-bottom:0;margin-top:0}nav h2{color:#3c3c43;color:var(--secondary-label);font-size:1rem;font-feature-settings:"c2sc";font-variant:small-caps;font-weight:600;text-transform:uppercase}nav ol,nav ul{margin:0;list-style:none}nav li li{font-size:smaller}a:link,a:visited{text-decoration:none}a:hover{text-decoration:underline}a:active{text-decoration:none}b,strong{font-weight:600}.discussion,.summary{font:300 14pt/19pt sans-serif;font:var(--callout)}article>.discussion{margin-bottom:2em}.discussion .highlight{padding:1em;text-indent:0}cite,dfn,em,i{font-style:italic}:matches(h1,h2,h3) sup{font-size:.4em}sup a{color:inherit;vertical-align:inherit}sup a:hover{color:#007aff;color:var(--link);text-decoration:none}sub{line-height:1}abbr{border:0}:lang(ja),:lang(ko),:lang(th),:lang(zh){font-style:normal}:lang(ko){word-break:keep-all}form fieldset{margin:1em auto;max-width:450px;width:95%}form label{display:block;font-size:1em;font-weight:400;line-height:1.5em;margin-bottom:14px;position:relative;width:100%}input[type=email],input[type=number],input[type=password],input[type=tel],input[type=text],input[type=url],textarea{border-radius:4px;border:1px solid #e5e5ea;border:1px solid var(--separator);color:#333;font-family:inherit;font-size:100%;font-weight:400;height:34px;margin:0;padding:0 1em;position:relative;vertical-align:top;width:100%;z-index:1}input[type=email],input [type=email]:focus,input[type=number],input [type=number]:focus,input[type=password],input [type=password]:focus,input[type=tel],input [type=tel]:focus,input[type=text],input [type=text]:focus,input[type=url],input [type=url]:focus,textarea,textarea:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none}input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,textarea:focus{border-color:#08c;box-shadow:0 0 0 3px rgba(0,136,204,.3);outline:0;z-index:9}input[type=email]:-moz-read-only,input[type=number]:-moz-read-only,input[type=password]:-moz-read-only,input[type=tel]:-moz-read-only,input[type=text]:-moz-read-only,input[type=url]:-moz-read-only,textarea:-moz-read-only{background:none;border:none;box-shadow:none;padding-left:0}input[type=email]:read-only,input[type=number]:read-only,input[type=password]:read-only,input[type=tel]:read-only,input[type=text]:read-only,input[type=url]:read-only,textarea:read-only{background:none;border:none;box-shadow:none;padding-left:0}::-webkit-input-placeholder{color:#8e8e93;color:var(--placeholder-text)}::-moz-placeholder{color:#8e8e93;color:var(--placeholder-text)}:-ms-input-placeholder{color:#8e8e93;color:var(--placeholder-text)}::-ms-input-placeholder{color:#8e8e93;color:var(--placeholder-text)}::placeholder{color:#8e8e93;color:var(--placeholder-text)}textarea{-webkit-overflow-scrolling:touch;line-height:1.4737;min-height:134px;overflow-y:auto;resize:vertical;transform:translateZ(0)}textarea,textarea:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none}select{background:transparent;border-radius:4px;border:none;cursor:pointer;font-family:inherit;font-size:1em;height:34px;margin:0;padding:0 1em;width:100%}select,select:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none}select:focus{border-color:#08c;box-shadow:0 0 0 3px rgba(0,136,204,.3);outline:0;z-index:9}input[type=file]{background:#fafafa;border-radius:4px;color:#333;cursor:pointer;font-family:inherit;font-size:100%;height:34px;margin:0;padding:6px 1em;position:relative;vertical-align:top;width:100%;z-index:1}input[type=file]:focus{border-color:#08c;outline:0;box-shadow:0 0 0 3px rgba(0,136,204,.3);z-index:9}button,button:focus,input[type=file]:focus,input[type=file]:focus:focus,input[type=reset],input[type=reset]:focus,input[type=submit],input[type=submit]:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none}:matches(button,input[type=reset],input[type=submit]){background-color:#e3e3e3;background:linear-gradient(#fff,#e3e3e3);border-color:#d6d6d6;color:#0070c9}:matches(button,input[type=reset],input[type=submit]):hover{background-color:#eee;background:linear-gradient(#fff,#eee);border-color:#d9d9d9}:matches(button,input[type=reset],input[type=submit]):active{background-color:#dcdcdc;background:linear-gradient(#f7f7f7,#dcdcdc);border-color:#d0d0d0}:matches(button,input[type=reset],input[type=submit]):disabled{background-color:#e3e3e3;background:linear-gradient(#fff,#e3e3e3);border-color:#d6d6d6;color:#0070c9}body{background:var(--system-grouped-background);color:#000;color:var(--label);font-family:ui-system,-apple-system,BlinkMacSystemFont,sans-serif;font:300 15pt/20pt sans-serif;font:var(--body)}h1{font:600 32pt/39pt sans-serif;font:var(--large-title)}h2{font:600 20pt/25pt sans-serif;font:var(--title-2)}h3{font:500 18pt/23pt sans-serif;font:var(--title-3)}[role=article]>h3,h4,h5,h6{font:500 15pt/20pt sans-serif;font:var(--headline)}.summary+h4,.summary+h5,.summary+h6{margin-top:2em;margin-bottom:0}a{color:#007aff;color:var(--link)}label{font:300 14pt/19pt sans-serif;font:var(--callout)}input,label{display:block}input{margin-bottom:1em}hr{border:none;border-top:1px solid #e5e5ea;border-top:1px solid var(--separator);margin:1em 0}table{width:100%;font:300 11pt/13pt sans-serif;font:var(--caption-1);caption-side:bottom;margin-bottom:2em}td,th{padding:0 1em}th{font-weight:600;text-align:left}thead th{border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator)}tr:last-of-type td,tr:last-of-type th{border-bottom:none}td,th{border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator);color:#3c3c43;color:var(--secondary-label)}caption{color:#48484a;color:var(--tertiary-label);font:300 11pt/13pt sans-serif;font:var(--caption-2);margin-top:2em;text-align:left}.graph text,[role=article]>h3,code,dl dt[class],nav li[class]{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-weight:300}.graph>polygon{display:none}.graph text{fill:currentColor!important}.graph ellipse,.graph path,.graph polygon,.graph rect{stroke:currentColor!important}body{width:90vw;max-width:1280px;margin:1em auto}body>header{font:600 26pt/32pt sans-serif;font:var(--title-1);padding:.5em 0}body>header a{color:#000;color:var(--label)}body>header span{font-weight:400}body>header sup{text-transform:uppercase;font-size:small;font-weight:300;letter-spacing:.1ch}body>footer,body>header sup{color:#3c3c43;color:var(--secondary-label)}body>footer{clear:both;padding:1em 0;font:300 11pt/13pt sans-serif;font:var(--caption-1)}@media screen and (max-width:768px){body>nav{display:none}}main,nav{overflow-x:auto}main{background:#fff;background:var(--system-background);border-radius:8px;padding:0}main section{border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator);margin-bottom:2em;padding-bottom:1em}main section:last-of-type{border-bottom:none;margin-bottom:0}nav{float:right;margin-left:1em;max-height:100vh;overflow:auto;padding:0 1em 3em;position:-webkit-sticky;position:sticky;top:1em;width:20vw}nav a{color:#3c3c43;color:var(--secondary-label)}nav ul a{color:#48484a;color:var(--tertiary-label)}nav ol,nav ul{padding:0}nav ul{font:300 14pt/19pt sans-serif;font:var(--callout);margin-bottom:1em}nav ol>li>a{display:block;font-size:smaller;font:500 15pt/20pt sans-serif;font:var(--headline);margin:.5em 0}nav li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}blockquote{--link:var(--secondary-label);border-left:4px solid #e5e5ea;border-left:4px solid var(--separator);color:#3c3c43;color:var(--secondary-label);font-size:smaller;margin-left:0;padding-left:2em}blockquote a{text-decoration:underline}article{padding:2em 0 1em}article>.summary{border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator);margin-bottom:2em;padding-bottom:1em}article>.summary:last-child{border-bottom:none}.parameters th{text-align:right}.parameters td{color:#3c3c43;color:var(--secondary-label)}.parameters th+td{text-align:center}dl{display:inline-block;margin-top:0}dt{font:500 15pt/20pt sans-serif;font:var(--headline)}dd{margin-left:2em;margin-bottom:1em}dd p{margin-top:0}.highlight{background:#f2f2f7;background:var(--secondary-system-background);border-radius:8px;font-size:smaller;margin-bottom:2em;overflow-x:auto;padding:1em 1em 1em 3em;text-indent:-2em}.highlight .p{white-space:nowrap}.highlight .placeholder{color:#000;color:var(--label)}.highlight a{text-decoration:underline;color:#8e8e93;color:var(--placeholder-text)}.highlight .attribute,.highlight .keyword,.highlight .literal{color:#af52de;color:var(--system-purple)}.highlight .number{color:#007aff;color:var(--system-blue)}.highlight .declaration{color:#5ac8fa;color:var(--system-teal)}.highlight .type{color:#5856d6;color:var(--system-indigo)}.highlight .directive{color:#ff9500;color:var(--system-orange)}.highlight .comment{color:#8e8e93;color:var(--system-gray)}main summary:hover{text-decoration:underline}figure{margin:2em 0;padding:1em 0}figure svg{max-width:100%;height:auto!important;margin:0 auto;display:block}@media screen and (max-width:768px){#relationships figure{display:none}}h1 small{font-size:.5em;line-height:1.5;display:block;font-weight:400;color:#636366;color:var(--quaternary-label)}dd code,li code,p code{font-size:smaller;color:#3c3c43;color:var(--secondary-label)}a code{text-decoration:underline}dl dt[class],nav li[class],section>[role=article][class]{background-image:var(--background-image);background-size:1em;background-repeat:no-repeat;background-position:left .125em}nav li[class]{background-position:left .25em}section>[role=article]{margin-bottom:1em;padding-bottom:1em;border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator);padding-left:2em}section>[role=article]:last-of-type{margin-bottom:0;padding-bottom:0;border-bottom:none}dl dt[class],nav li[class]{list-style:none;text-indent:2em;margin-bottom:.5em}nav li[class]{text-indent:1.5em;margin-bottom:1em}.case,.enumeration_case{--background-image:var(--icon-case);--link:var(--system-teal)}.class{--background-image:var(--icon-class);--link:var(--system-indigo)}.enumeration{--background-image:var(--icon-enumeration)}.enumeration,.extension{--link:var(--system-orange)}.extension{--background-image:var(--icon-extension)}.function{--background-image:var(--icon-function);--link:var(--system-green)}.initializer,.method{--background-image:var(--icon-method);--link:var(--system-blue)}.property{--background-image:var(--icon-property);--link:var(--system-teal)}.protocol{--background-image:var(--icon-protocol);--link:var(--system-pink)}.structure{--background-image:var(--icon-structure);--link:var(--system-purple)}.typealias{--background-image:var(--icon-typealias)}.typealias,.variable{--link:var(--system-green)}.variable{--background-image:var(--icon-variable)}.unknown{--link:var(--quaternary-label);color:#007aff;color:var(--link)} \ No newline at end of file diff --git a/docs/0.17.0/any(_:)-57c9fd0/index.html b/docs/0.17.0/any(_:)-57c9fd0/index.html deleted file mode 100644 index fd46143d..00000000 --- a/docs/0.17.0/any(_:)-57c9fd0/index.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - Mockingbird - any(_:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -any(_:​) -

- -
-
public func any<T>(_ type: T.Type = T.self) -> T  
-
-
-

Matches all argument values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the wildcard argument matcher any as a type safe placeholder for matching any argument -value.

- -
given(bird.canChirp(volume: any())).willReturn(true)
-given(bird.setName(any())).will { print($0) }
-
-print(bird.canChirp(volume: 10))  // Prints "true"
-bird.name = "Ryan"  // Prints "Ryan"
-
-verify(bird.canChirp(volume: any())).wasCalled()
-verify(bird.setName(any())).wasCalled()
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ message: T)    // Overloaded generically
-  func send(_ message: String)  // Overloaded explicitly
-  func send(_ message: Data)
-}
-
-given(bird.send(any(String.self))).will { print($0) }
-
-bird.send("Hello")  // Prints "Hello"
-
-verify(bird.send(any(String.self))).wasCalled()
-verify(bird.send(any(Data.self))).wasNeverCalled()
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/any(_:containing:)-095611c/index.html b/docs/0.17.0/any(_:containing:)-095611c/index.html deleted file mode 100644 index b3019659..00000000 --- a/docs/0.17.0/any(_:containing:)-095611c/index.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - Mockingbird - any(_:containing:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -any(_:​containing:​) -

- -
-
public func any<K, V>(_ type: Dictionary<K, V>.Type = Dictionary<K, V>.self,
-                      containing values: V...) -> Dictionary<K, V>  
-
-
-

Matches any dictionary containing all of the values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(containing:) to match dictionaries that contain all specified -values.

- -
protocol Bird {
-  func send(_ messages: [UUID: String])
-}
-
-given(bird.send(any(containing: "Hi", "Hello")))
-  .will { print($0) }
-
-bird.send([
-  UUID(): "Hi",
-  UUID(): "Hello",
-])  // Prints ["Hi", "Hello"]
-
-bird.send([
-  UUID(): "Hi",
-  UUID(): "Bye",
-])  // Error: Missing stubbed implementation
-
-bird.send([
-  UUID(): "Bye",
-]) // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [UUID: T])    // Overloaded generically
-  func send(_ messages: [UUID: String])  // Overloaded explicitly
-  func send(_ messages: [UUID: Data])
-}
-
-given(bird.send(any([UUID: String].self, containing: "Hi", "Hello")))
-  .will { print($0) }
-
-bird.send([
-  UUID(): "Hi",
-  UUID(): "Hello",
-])  // Prints ["Hi", "Hello"]
-
-bird.send([
-  UUID(): Data([1]),
-  UUID(): Data([2]),
-])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeDictionary<K, V>.​Type

The parameter type used to disambiguate overloaded methods.

-
valuesV

A set of values that must all exist in the dictionary to match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/any(_:containing:)-44dd020/index.html b/docs/0.17.0/any(_:containing:)-44dd020/index.html deleted file mode 100644 index 7b5f4d9a..00000000 --- a/docs/0.17.0/any(_:containing:)-44dd020/index.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - Mockingbird - any(_:containing:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -any(_:​containing:​) -

- -
-
public func any<T: Collection>(_ type: T.Type = T.self, containing values: T.Element...) -> T  
-
-
-

Matches any collection containing all of the values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(containing:) to match collections that contain all specified -values.

- -
protocol Bird {
-  func send(_ messages: [String])
-}
-
-given(bird.send(any(containing: "Hi", "Hello")))
-  .will { print($0) }
-
-bird.send(["Hi", "Hello"])  // Prints ["Hi", "Hello"]
-bird.send(["Hi", "Bye"])    // Error: Missing stubbed implementation
-bird.send(["Bye"])          // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [T])    // Overloaded generically
-  func send(_ messages: [String])  // Overloaded explicitly
-  func send(_ messages: [Data])
-}
-
-given(bird.send(any([String].self, containing: ["Hi", "Hello"])))
-  .will { print($0) }
-
-bird.send(["Hi", "Hello"])       // Prints ["Hi", "Hello"]
-bird.send([Data([1]), Data(2)])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
valuesT.​Element

A set of values that must all exist in the collection to match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/any(_:count:)-dbbc1fd/index.html b/docs/0.17.0/any(_:count:)-dbbc1fd/index.html deleted file mode 100644 index b3570d07..00000000 --- a/docs/0.17.0/any(_:count:)-dbbc1fd/index.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - Mockingbird - any(_:count:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -any(_:​count:​) -

- -
-
public func any<T: Collection>(_ type: T.Type = T.self, count countMatcher: CountMatcher) -> T  
-
-
-

Matches any collection with a specific number of elements.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(count:) to match collections with a specific number of elements.

- -
protocol Bird {
-  func send(_ messages: [String])
-}
-
-given(bird.send(any(count: 2))).will { print($0) }
-
-bird.send(["Hi", "Hello"])  // Prints ["Hi", "Hello"]
-bird.send(["Hi"])           // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [T])    // Overloaded generically
-  func send(_ messages: [String])  // Overloaded explicitly
-  func send(_ messages: [Data])
-}
-
-given(bird.send(any([String].self, count: 2)))
-  .will { print($0) }
-
-bird.send(["Hi", "Hello"])         // Prints ["Hi", "Hello"]
-bird.send([Data([1]), Data([2])])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
count​MatcherCount​Matcher

A count matcher defining the number of acceptable elements in the collection.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/any(_:keys:)-8ca4847/index.html b/docs/0.17.0/any(_:keys:)-8ca4847/index.html deleted file mode 100644 index c81064f3..00000000 --- a/docs/0.17.0/any(_:keys:)-8ca4847/index.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - Mockingbird - any(_:keys:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -any(_:​keys:​) -

- -
-
public func any<K, V>(_ type: Dictionary<K, V>.Type = Dictionary<K, V>.self,
-                      keys: K...) -> Dictionary<K, V>  
-
-
-

Matches any dictionary containing all of the keys.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(keys:) to match dictionaries that contain all specified keys.

- -
protocol Bird {
-  func send(_ messages: [UUID: String])
-}
-
-let messageId1 = UUID()
-let messageId2 = UUID()
-given(bird.send(any(containing: messageId1, messageId2)))
-  .will { print($0) }
-
-bird.send([
-  messageId1: "Hi",
-  messageId2: "Hello",
-])  // Prints ["Hi", "Hello"]
-
-bird.send([
-  UUID(): "Hi",
-  UUID(): "Hello",
-])  // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [UUID: T])    // Overloaded generically
-  func send(_ messages: [UUID: String])  // Overloaded explicitly
-  func send(_ messages: [UUID: Data])
-}
-
-let messageId1 = UUID()
-let messageId2 = UUID()
-given(bird.send(any([UUID: String].self, containing: messageId1, messageId2)))
-  .will { print($0) }
-
-bird.send([
-  messageId1: "Hi",
-  messageId2: "Hello",
-])  // Prints ["Hi", "Hello"]
-
-bird.send([
-  messageId1: Data([1]),
-  messageId2: Data([2]),
-])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeDictionary<K, V>.​Type

The parameter type used to disambiguate overloaded methods.

-
keysK

A set of keys that must all exist in the dictionary to match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/any(_:of:)-0eb9154/index.html b/docs/0.17.0/any(_:of:)-0eb9154/index.html deleted file mode 100644 index d7f7a752..00000000 --- a/docs/0.17.0/any(_:of:)-0eb9154/index.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - Mockingbird - any(_:of:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -any(_:​of:​) -

- -
-
public func any<T: AnyObject>(_ type: T.Type = T.self, of objects: T...) -> T  
-
-
-

Matches argument values identical to any of the provided values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(of:) to match objects identical to one or more of the specified -values.

- -
// Reference type
-class Location {
-  let name: String
-  init(name: String) { self.name = name }
-}
-
-protocol Bird {
-  func fly(to location: Location)
-}
-
-let home = Location(name: "Home")
-let work = Location("Work")
-given(bird.fly(to: any(of: home, work)))
-  .will { print($0.name) }
-
-bird.fly(to: home)  // Prints "Home"
-bird.fly(to: work)  // Prints "Work"
-
-let hawaii = Location("Hawaii")
-bird.fly(to: hawaii))  // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func fly<T>(to location: T)        // Overloaded generically
-  func fly(to location: Location)    // Overloaded explicitly
-  func fly(to locationName: String)
-}
-
-given(bird.fly(to: any(String.self, of: "Home", "Work")))
-  .will { print($0) }
-
-bird.send("Home")    // Prints "Hi"
-bird.send("Work")    // Prints "Hello"
-bird.send("Hawaii")  // Error: Missing stubbed implementation
-
- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
objectsT

A set of non-equatable objects that should result in a match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/any(_:of:)-64e400e/index.html b/docs/0.17.0/any(_:of:)-64e400e/index.html deleted file mode 100644 index 5d6e163a..00000000 --- a/docs/0.17.0/any(_:of:)-64e400e/index.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - Mockingbird - any(_:of:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -any(_:​of:​) -

- -
-
public func any<T: Equatable>(_ type: T.Type = T.self, of objects: T...) -> T  
-
-
-

Matches argument values equal to any of the provided values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(of:) to match Equatable argument values equal to one or more of -the specified values.

- -
given(bird.canChirp(volume: any(of: 1, 3)))
-  .willReturn(true)
-
-given(bird.canChirp(volume: any(of: 2, 4)))
-  .willReturn(false)
-
-print(bird.canChirp(volume: 1))  // Prints "true"
-print(bird.canChirp(volume: 2))  // Prints "false"
-print(bird.canChirp(volume: 3))  // Prints "true"
-print(bird.canChirp(volume: 4))  // Prints "false"
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ message: T)    // Overloaded generically
-  func send(_ message: String)  // Overloaded explicitly
-  func send(_ message: Data)
-}
-
-given(bird.send(any(String.self, of: "Hi", "Hello")))
-  .will { print($0) }
-
-bird.send("Hi")     // Prints "Hi"
-bird.send("Hello")  // Prints "Hello"
-bird.send("Bye")    // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
objectsT

A set of equatable objects that should result in a match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/any(_:where:)-aeec51b/index.html b/docs/0.17.0/any(_:where:)-aeec51b/index.html deleted file mode 100644 index cc93450f..00000000 --- a/docs/0.17.0/any(_:where:)-aeec51b/index.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - Mockingbird - any(_:where:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -any(_:​where:​) -

- -
-
public func any<T>(_ type: T.Type = T.self, where predicate: @escaping (_ value: T) -> Bool) -> T  
-
-
-

Matches any argument values where the predicate returns true.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(where:) to match objects with custom equality logic. This is -particularly useful for parameter types that do not conform to Equatable.

- -
// Value type not explicitly conforming to `Equatable`
-struct Fruit {
-  let size: Int
-}
-
-protocol Bird {
-  func eat(_ fruit: Fruit)
-}
-
-given(bird.eat(any(where: { $0.size < 100 })))
-  .will { print($0.size) }
-
-let apple = Fruit(size: 42)
-bird.eat(apple)  // Prints "42"
-
-let pear = Fruit(size: 9001)
-bird.eat(pear)   // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func eat<T>(_ object: T)     // Overloaded generically
-  func eat(_ fruit: Fruit)     // Overloaded explicitly
-  func eat(_ fruits: [Fruit])
-}
-
-given(bird.eat(any(Fruit.self, where: { $0.size < 100 })))
-  .will { print($0) }
-
-let apple = Fruit(size: 42)
-bird.eat(apple)    // Prints "42"
-bird.eat("Apple")  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
predicate@escaping (_ value:​ T) -> Bool

A closure that takes a value and returns true if it represents a match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/around(_:tolerance:)-00be404/index.html b/docs/0.17.0/around(_:tolerance:)-00be404/index.html deleted file mode 100644 index 7e9cb097..00000000 --- a/docs/0.17.0/around(_:tolerance:)-00be404/index.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - Mockingbird - around(_:tolerance:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -around(_:​tolerance:​) -

- -
-
public func around<T: FloatingPoint>(_ value: T, tolerance: T) -> T  
-
-
-

Matches floating point arguments within some tolerance.

- -
-
-

Mathematical operations on floating point numbers can cause loss of precision. Fuzzily match floating point arguments instead of using exact values to increase the robustness of tests.

- -
protocol Bird {
-  func canChirp(volume: Double) -> Bool
-}
-
-given(bird.canChirp(volume: around(42.0, tolerance: 0.1)))
-  .willReturn(true)
-
-print(bird.canChirp(volume: 42.0))     // Prints "true"
-print(bird.canChirp(volume: 42.0999))  // Prints "true"
-print(bird.canChirp(volume: 42.1))     // Prints "false"
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
valueT

The expected value.

-
toleranceT

Only matches if the absolute difference is strictly less than this value.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/atLeast(_:)-898a2b0/index.html b/docs/0.17.0/atLeast(_:)-898a2b0/index.html deleted file mode 100644 index df2afc8b..00000000 --- a/docs/0.17.0/atLeast(_:)-898a2b0/index.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - Mockingbird - atLeast(_:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -at​Least(_:​) -

- -
-
public func atLeast(_ times: Int) -> CountMatcher  
-
-
-

Matches greater than or equal to some count.

- -
-
-

The atLeast count matcher can be used to verify that the actual number of invocations received -by a mock is greater than or equal to the expected number of invocations.

- -
// Given two invocations (n = 2)
-bird.fly()
-bird.fly()
-
-verify(bird.fly()).wasCalled(atLeast(1))  // Passes
-verify(bird.fly()).wasCalled(atLeast(2))  // Passes
-verify(bird.fly()).wasCalled(atLeast(3))  // Fails (n < 3)
-
-

You can combine count matchers with adverbial counts for improved readability.

- -
verify(bird.fly()).wasCalled(atLeast(once))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An inclusive lower bound.

-
-

Returns

-

A count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/atMost(_:)-3e1c32b/index.html b/docs/0.17.0/atMost(_:)-3e1c32b/index.html deleted file mode 100644 index 01787eb7..00000000 --- a/docs/0.17.0/atMost(_:)-3e1c32b/index.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - Mockingbird - atMost(_:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -at​Most(_:​) -

- -
-
public func atMost(_ times: Int) -> CountMatcher  
-
-
-

Matches less than or equal to some count.

- -
-
-

The atMost count matcher can be used to verify that the actual number of invocations received -by a mock is less than or equal to the expected number of invocations.

- -
// Given two invocations (n = 2)
-bird.fly()
-bird.fly()
-
-verify(bird.fly()).wasCalled(atMost(1))  // Fails (n > 1)
-verify(bird.fly()).wasCalled(atMost(2))  // Passes
-verify(bird.fly()).wasCalled(atMost(3))  // Passes
-
-

You can combine count matchers with adverbial counts for improved readability.

- -
verify(bird.fly()).wasCalled(atMost(once))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An inclusive upper bound.

-
-

Returns

-

A count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/between(_:)-d57ee49/index.html b/docs/0.17.0/between(_:)-d57ee49/index.html deleted file mode 100644 index b91ba236..00000000 --- a/docs/0.17.0/between(_:)-d57ee49/index.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - Mockingbird - between(_:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -between(_:​) -

- -
-
public func between(_ range: Range<Int>) -> CountMatcher  
-
-
-

Matches counts that fall within some range.

- -
-
-

The between count matcher can be used to verify that the actual number of invocations received -by a mock is within an inclusive range of expected invocations.

- -
// Given two invocations (n = 2)
-bird.fly()
-bird.fly()
-
-verify(bird.fly()).wasCalled(between(1...2))  // Passes
-verify(bird.fly()).wasCalled(between(3...4))  // Fails (3 ≮ n < 4)
-
-

You can combine count matchers with adverbial counts for improved readability.

- -
verify(bird.fly()).wasCalled(between(once...twice))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
rangeRange<Int>

An closed integer range.

-
-

Returns

-

A count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/clearDefaultValues(on:)-d6625bc/index.html b/docs/0.17.0/clearDefaultValues(on:)-d6625bc/index.html deleted file mode 100644 index 7bff07f1..00000000 --- a/docs/0.17.0/clearDefaultValues(on:)-d6625bc/index.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - Mockingbird - clearDefaultValues(on:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -clear​Default​Values(on:​) -

- -
-
public func clearDefaultValues(on mocks: Mock...)  
-
-
-

Remove all registered default values.

- -
-
-

Partially reset a set of mocks during test runs by removing all registered default values.

- -
let bird = mock(Bird.self)
-bird.useDefaultValues(from: .standardProvider)
-
-print(bird.name)  // Prints ""
-verify(bird.getName()).wasCalled()  // Passes
-
-clearDefaultValues(on: bird)
-
-print(bird.name)  // Error: Missing stubbed implementation
-verify(bird.getName()).wasCalled()  // Passes
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mocksMock

A set of mocks to reset.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/clearInvocations(on:)-c035ab0/index.html b/docs/0.17.0/clearInvocations(on:)-c035ab0/index.html deleted file mode 100644 index ed34c9bd..00000000 --- a/docs/0.17.0/clearInvocations(on:)-c035ab0/index.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - Mockingbird - clearInvocations(on:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -clear​Invocations(on:​) -

- -
-
public func clearInvocations(on mocks: Mock...)  
-
-
-

Remove all recorded invocations.

- -
-
-

Partially reset a set of mocks during test runs by removing all recorded invocations.

- -
let bird = mock(Bird.self)
-given(bird.getName()).willReturn("Ryan")
-
-print(bird.name)  // Prints "Ryan"
-verify(bird.getName()).wasCalled()  // Passes
-
-clearInvocations(on: bird)
-
-print(bird.name)  // Prints "Ryan"
-verify(bird.getName()).wasCalled()  // Error: Got 0 invocations
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mocksMock

A set of mocks to reset.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/clearStubs(on:)-733a109/index.html b/docs/0.17.0/clearStubs(on:)-733a109/index.html deleted file mode 100644 index 602917d0..00000000 --- a/docs/0.17.0/clearStubs(on:)-733a109/index.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - Mockingbird - clearStubs(on:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -clear​Stubs(on:​) -

- -
-
public func clearStubs(on mocks: Mock...)  
-
-
-

Remove all concrete stubs.

- -
-
-

Partially reset a set of mocks during test runs by removing all stubs.

- -
let bird = mock(Bird.self)
-given(bird.getName()).willReturn("Ryan")
-
-print(bird.name)  // Prints "Ryan"
-verify(bird.getName()).wasCalled()  // Passes
-
-clearStubs(on: bird)
-
-print(bird.name)  // Error: Missing stubbed implementation
-verify(bird.getName()).wasCalled()  // Passes
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mocksMock

A set of mocks to reset.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/eventually(_:_:)-4bc028a/index.html b/docs/0.17.0/eventually(_:_:)-4bc028a/index.html deleted file mode 100644 index 32bf6ab9..00000000 --- a/docs/0.17.0/eventually(_:_:)-4bc028a/index.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - Mockingbird - eventually(_:_:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -eventually(_:​_:​) -

- -
-
public func eventually(_ description: String? = nil,
-                       _ block: () -> Void) -> XCTestExpectation  
-
-
-

Create a deferrable test expectation from a block containing verification calls.

- -
-
-

Mocked methods that are invoked asynchronously can be verified using an eventually block which -returns an XCTestExpectation.

- -
DispatchQueue.main.async {
-  Tree(with: bird).shake()
-}
-
-let expectation =
-  eventually {
-    verify(bird.fly()).wasCalled()
-    verify(bird.chirp()).wasCalled()
-  }
-
-wait(for: [expectation], timeout: 1.0)
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
descriptionString?

An optional description for the created XCTestExpectation.

-
block() -> Void

A block containing verification calls.

-
-

Returns

-

An XCTestExpectation that fulfilles once all verifications in the block are met.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/exactly(_:)-c366d42/index.html b/docs/0.17.0/exactly(_:)-c366d42/index.html deleted file mode 100644 index 1c97de9a..00000000 --- a/docs/0.17.0/exactly(_:)-c366d42/index.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - Mockingbird - exactly(_:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -exactly(_:​) -

- -
-
public func exactly(_ times: Int) -> CountMatcher  
-
-
-

Matches an exact count.

- -
-
-

The exactly count matcher can be used to verify that the actual number of invocations received -by a mock equals the expected number of invocations.

- -
// Given two invocations (n = 2)
-bird.fly()
-bird.fly()
-
-verify(bird.fly()).wasCalled(exactly(1))  // Fails (n ≠ 1)
-verify(bird.fly()).wasCalled(exactly(2))  // Passes
-
-

You can combine count matchers with adverbial counts for improved readability.

- -
verify(bird.fly()).wasCalled(exactly(once))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An exact integer count.

-
-

Returns

-

A count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/finiteSequence(of:)-4225436/index.html b/docs/0.17.0/finiteSequence(of:)-4225436/index.html deleted file mode 100644 index bde50193..00000000 --- a/docs/0.17.0/finiteSequence(of:)-4225436/index.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - Mockingbird - finiteSequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -finite​Sequence(of:​) -

- -
-
public func finiteSequence<DeclarationType: Declaration, InvocationType, ReturnType>(
-  of implementations: InvocationType...
-) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>  
-
-
-

Stub a finite sequence of implementations.

- -
-
-

Provide one or more implementations which will be returned sequentially for each invocation. The -stub will be invalidated if the number of invocations is greater than the number of -implementations provided.

- -
given(bird.getName()).willReturn(finiteSequence(of: {
-  return Bool.random() ? "Ryan" : "Meisters"
-}, {
-  return Bool.random() ? "Sterling" : "Hackley"
-}))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementationsInvocation​Type

A sequence of implementations to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/finiteSequence(of:)-b90973c/index.html b/docs/0.17.0/finiteSequence(of:)-b90973c/index.html deleted file mode 100644 index cbd32d6a..00000000 --- a/docs/0.17.0/finiteSequence(of:)-b90973c/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Mockingbird - finiteSequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -finite​Sequence(of:​) -

- -
-
public func finiteSequence<DeclarationType: Declaration, InvocationType, ReturnType>(
-  of values: ReturnType...
-) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>  
-
-
-

Stub a finite sequence of values.

- -
-
-

Provide one or more values which will be returned sequentially for each invocation. The stub -will be invalidated if the number of invocations is greater than the number of values provided.

- -
given(bird.getName())
-  .willReturn(finiteSequence(of: "Ryan", "Sterling"))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
valuesReturn​Type

A sequence of values to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/given(_:)-8e1ce81/index.html b/docs/0.17.0/given(_:)-8e1ce81/index.html deleted file mode 100644 index 643b754d..00000000 --- a/docs/0.17.0/given(_:)-8e1ce81/index.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - Mockingbird - given(_:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -given(_:​) -

- -
-
public func given<DeclarationType: Declaration, InvocationType, ReturnType>(
-  _ declarations: Mockable<DeclarationType, InvocationType, ReturnType>...
-) -> StubbingManager<DeclarationType, InvocationType, ReturnType>  
-
-
-

Stub one or more declarations to return a value or perform an operation.

- -
-
-

Stubbing allows you to define custom behavior for mocks to perform.

- -
given(bird.canChirp()).willReturn(true)
-given(bird.canChirp()).willThrow(BirdError())
-given(bird.canChirp(volume: any())).will { volume in
-  return volume < 42
-}
-
-

This is equivalent to the shorthand syntax using the stubbing operator ~>.

- -
given(bird.canChirp()) ~> true
-given(bird.canChirp()) ~> { throw BirdError() }
-given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-

Properties can be stubbed with their getter and setter methods.

- -
given(bird.getName()).willReturn("Ryan")
-given(bird.setName(any())).will { print($0) }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
declarationsMockable<Declaration​Type, Invocation​Type, Return​Type>

One or more stubbable declarations.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/inOrder(with:file:line:_:)-2287378/index.html b/docs/0.17.0/inOrder(with:file:line:_:)-2287378/index.html deleted file mode 100644 index cf728c5c..00000000 --- a/docs/0.17.0/inOrder(with:file:line:_:)-2287378/index.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - Mockingbird - inOrder(with:file:line:_:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -in​Order(with:​file:​line:​_:​) -

- -
-
public func inOrder(with options: OrderedVerificationOptions = [],
-                    file: StaticString = #file, line: UInt = #line,
-                    _ block: () -> Void)  
-
-
-

Enforce the relative order of invocations.

- -
-
-

Calls to verify within the scope of an inOrder verification block are checked relative to -each other.

- -
// Verify that `fly` was called before `chirp`
-inOrder {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-

Pass options to inOrder verification blocks for stricter checks with additional invariants.

- -
inOrder(with: .noInvocationsAfter) {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-

An inOrder block is resolved greedily, such that each verification must happen from the oldest -remaining unsatisfied invocations.

- -
// Given these unsatisfied invocations
-bird.fly()
-bird.fly()
-bird.chirp()
-
-// Greedy strategy _must_ start from the first `fly`
-inOrder {
-  verify(bird.fly()).wasCalled(twice)
-  verify(bird.chirp()).wasCalled()
-}
-
-// Non-greedy strategy can start from the second `fly`
-inOrder {
-  verify(bird.fly()).wasCalled()
-  verify(bird.chirp()).wasCalled()
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
optionsOrdered​Verification​Options

Options to use when verifying invocations.

-
block() -> Void

A block containing ordered verification calls.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/index.html b/docs/0.17.0/index.html deleted file mode 100644 index 026091a5..00000000 --- a/docs/0.17.0/index.html +++ /dev/null @@ -1,721 +0,0 @@ - - - - - - Mockingbird - Mockingbird - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-
-

Classes

-
-
- - Argument​Captor - -
-
-

Captures method arguments passed during mock invocations.

- -
-
- - Argument​Matcher - -
-
-

Matches argument values with a comparator.

- -
-
- - Static​Mock - -
-
-

Used to store invocations on static or class scoped methods.

- -
-
- - Variable​Declaration - -
-
-

Mockable variable declarations.

- -
-
- - Property​Getter​Declaration - -
-
-

Mockable property getter declarations.

- -
-
- - Property​Setter​Declaration - -
-
-

Mockable property setter declarations.

- -
-
- - Function​Declaration - -
-
-

Mockable function declarations.

- -
-
- - Throwing​Function​Declaration - -
-
-

Mockable throwing function declarations.

- -
-
- - Subscript​Declaration - -
-
-

Mockable subscript declarations.

- -
-
- - Subscript​Getter​Declaration - -
-
-

Mockable subscript getter declarations.

- -
-
- - Subscript​Setter​Declaration - -
-
-

Mockable subscript setter declarations.

- -
-
- - Mocking​Context - -
-
-

Stores invocations received by mocks.

- -
-
- - Stubbing​Manager - -
-
-

An intermediate object used for stubbing declarations returned by given.

- -
-
- - Stubbing​Context - -
-
-

Stores stubbed implementations used by mocks.

- -
-
- - Non​Escaping​Closure - -
-
-

Placeholder for non-escaping closure parameter types.

- -
-
-
-
-

Structures

-
-
- - Count​Matcher - -
-
-

Checks whether a number matches some expected count.

- -
-
- - Mock​Metadata - -
-
-

Stores information about generated mocks.

- -
-
- - Mockable - -
-
-

Represents a mocked declaration that can be stubbed or verified.

- -
-
- - Implementation​Provider - -
-
-

Provides implementation functions used to stub behavior and return values.

- -
-
- - Value​Provider - -
-
-

Provides concrete instances of types.

- -
-
- - Source​Location - -
-
-

References a line of code in a file.

- -
-
- - Ordered​Verification​Options - -
-
-

Additional options to increase the strictness of inOrder verification blocks.

- -
-
- - Verification​Manager - -
-
-

An intermediate object used for verifying declarations returned by verify.

- -
-
-
-
-

Enumerations

-
-
- - Stubbing​Manager.​Transition​Strategy - -
-
-

When to use the next chained implementation provider.

- -
-
-
-
-

Protocols

-
-
- - Mock - -
-
-

All generated mocks conform to this protocol.

- -
-
- - Declaration - -
-
-

All mockable declaration types conform to this protocol.

- -
-
- - Providable - -
-
-

A type that can provide concrete instances of itself.

- -
-
- - Test​Failer - -
-
-

A type that can handle test failures emitted by Mockingbird.

- -
-
-
-
-

Functions

-
-
- - any(_:​containing:​) - -
-
-

Matches any collection containing all of the values.

- -
-
- - any(_:​containing:​) - -
-
-

Matches any dictionary containing all of the values.

- -
-
- - any(_:​keys:​) - -
-
-

Matches any dictionary containing all of the keys.

- -
-
- - any(_:​count:​) - -
-
-

Matches any collection with a specific number of elements.

- -
-
- - not​Empty(_:​) - -
-
-

Matches any collection with at least one element.

- -
-
- - around(_:​tolerance:​) - -
-
-

Matches floating point arguments within some tolerance.

- -
-
- - exactly(_:​) - -
-
-

Matches an exact count.

- -
-
- - at​Least(_:​) - -
-
-

Matches greater than or equal to some count.

- -
-
- - at​Most(_:​) - -
-
-

Matches less than or equal to some count.

- -
-
- - between(_:​) - -
-
-

Matches counts that fall within some range.

- -
-
- - not(_:​) - -
-
-

Negate a count matcher, only passing on non-matching counts.

- -
-
- - not(_:​) - -
-
-

Negate an exact count, only passing on non-matching counts.

- -
-
- - any(_:​) - -
-
-

Matches all argument values.

- -
-
- - any(_:​of:​) - -
-
-

Matches argument values equal to any of the provided values.

- -
-
- - any(_:​of:​) - -
-
-

Matches argument values identical to any of the provided values.

- -
-
- - any(_:​where:​) - -
-
-

Matches any argument values where the predicate returns true.

- -
-
- - not​Nil(_:​) - -
-
-

Matches any non-nil argument value.

- -
-
- - mock(_:​) - -
-
-

Returns a mock of a given type.

- -
-
- - reset(_:​) - -
-
-

Remove all recorded invocations and configured stubs.

- -
-
- - clear​Invocations(on:​) - -
-
-

Remove all recorded invocations.

- -
-
- - clear​Stubs(on:​) - -
-
-

Remove all concrete stubs.

- -
-
- - clear​Default​Values(on:​) - -
-
-

Remove all registered default values.

- -
-
- - use​Default​Values(from:​on:​) - -
-
-

Start returning default values for unstubbed methods on multiple mocks.

- -
-
- - use​Default​Values(from:​on:​) - -
-
-

Start returning default values for unstubbed methods on a single mock.

- -
-
- - sequence(of:​) - -
-
-

Stub a sequence of values.

- -
-
- - sequence(of:​) - -
-
-

Stub a sequence of implementations.

- -
-
- - looping​Sequence(of:​) - -
-
-

Stub a looping sequence of values.

- -
-
- - looping​Sequence(of:​) - -
-
-

Stub a looping sequence of implementations.

- -
-
- - finite​Sequence(of:​) - -
-
-

Stub a finite sequence of values.

- -
-
- - finite​Sequence(of:​) - -
-
-

Stub a finite sequence of implementations.

- -
-
- - last​Set​Value(initial:​) - -
-
-

Stubs a variable getter to return the last value received by the setter.

- -
-
- - given(_:​) - -
-
-

Stub one or more declarations to return a value or perform an operation.

- -
-
- - eventually(_:​_:​) - -
-
-

Create a deferrable test expectation from a block containing verification calls.

- -
-
- - in​Order(with:​file:​line:​_:​) - -
-
-

Enforce the relative order of invocations.

- -
-
- - verify(_:​file:​line:​) - -
-
-

Verify that a mock recieved a specific invocation some number of times.

- -
-
- - swizzle​Test​Failer(_:​) - -
-
-

Change the current global test failer.

- -
-
- - MKBFail(_:​is​Fatal:​file:​line:​) - -
-
-

Called by Mockingbird on test assertion failures.

- -
-
-
-
-

Variables

-
-
- - never - -
-
-

A count of zero.

- -
-
- - once - -
-
-

A count of one.

- -
-
- - twice - -
-
-

A count of two.

- -
-
-
-
-

Operators

-
-
- - ~> - -
-
-

The stubbing operator is used to bind an implementation to an intermediary Stub object.

- -
-
-
-
-

Extensions

-
-
- Array -
-
-
- Dictionary -
-
-
- Optional -
-
-
- Set -
-
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/lastSetValue(initial:)-d6a1a47/index.html b/docs/0.17.0/lastSetValue(initial:)-d6a1a47/index.html deleted file mode 100644 index 03f2b42d..00000000 --- a/docs/0.17.0/lastSetValue(initial:)-d6a1a47/index.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - Mockingbird - lastSetValue(initial:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -last​Set​Value(initial:​) -

- -
-
public func lastSetValue<DeclarationType: PropertyGetterDeclaration, InvocationType, ReturnType>(
-  initial: ReturnType
-) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>  
-
-
-

Stubs a variable getter to return the last value received by the setter.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
initialReturn​Type

The initial value to return.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/loopingSequence(of:)-8c11ab6/index.html b/docs/0.17.0/loopingSequence(of:)-8c11ab6/index.html deleted file mode 100644 index 714c3f65..00000000 --- a/docs/0.17.0/loopingSequence(of:)-8c11ab6/index.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - Mockingbird - loopingSequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -looping​Sequence(of:​) -

- -
-
public func loopingSequence<DeclarationType: Declaration, InvocationType, ReturnType>(
-  of values: ReturnType...
-) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>  
-
-
-

Stub a looping sequence of values.

- -
-
-

Provide one or more values which will be returned sequentially for each invocation. The sequence -will loop from the beginning if the number of invocations is greater than the number of values -provided.

- -
given(bird.getName())
-  .willReturn(loopingSequence(of: "Ryan", "Sterling"))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
valuesReturn​Type

A sequence of values to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/loopingSequence(of:)-cc3f2b3/index.html b/docs/0.17.0/loopingSequence(of:)-cc3f2b3/index.html deleted file mode 100644 index fe362824..00000000 --- a/docs/0.17.0/loopingSequence(of:)-cc3f2b3/index.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - Mockingbird - loopingSequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -looping​Sequence(of:​) -

- -
-
public func loopingSequence<DeclarationType: Declaration, InvocationType, ReturnType>(
-  of implementations: InvocationType...
-) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>  
-
-
-

Stub a looping sequence of implementations.

- -
-
-

Provide one or more implementations which will be returned sequentially for each invocation. The -sequence will loop from the beginning if the number of invocations is greater than the number of -implementations provided.

- -
given(bird.getName()).willReturn(loopingSequence(of: {
-  return Bool.random() ? "Ryan" : "Meisters"
-}, {
-  return Bool.random() ? "Sterling" : "Hackley"
-}))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Meisters"
-print(bird.name)  // Prints "Hackley"
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementationsInvocation​Type

A sequence of implementations to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/mock(_:)-40a8117/index.html b/docs/0.17.0/mock(_:)-40a8117/index.html deleted file mode 100644 index e1027808..00000000 --- a/docs/0.17.0/mock(_:)-40a8117/index.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - Mockingbird - mock(_:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -mock(_:​) -

- -
-
@available(*, unavailable, message: "No generated mock for this type which might be resolved by building the test target (⇧⌘U)")
-public func mock<T>(_ type: T.Type) -> T  
-
-
-

Returns a mock of a given type.

- -
-
-

Initialized mocks can be passed in place of the original type. Protocol mocks do not require -explicit initialization while class mocks should be created using initialize(…).

- -
protocol Bird {
-  init(name: String)
-}
-class Tree {
-  init(with bird: Bird) {}
-}
-
-let bird = mock(Bird.self)  // Protocol mock
-let tree = mock(Tree.self).initialize(with: bird)  // Class mock
-
-

Generated mock types are suffixed with Mock and should not be coerced into their supertype.

- -
let bird: BirdMock = mock(Bird.self)  // The concrete type is `BirdMock`
-let inferredBird = mock(Bird.self)    // Type inference also works
-let coerced: Bird = mock(Bird.self)   // Avoid upcasting mocks
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The type to mock.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/never-657a74c/index.html b/docs/0.17.0/never-657a74c/index.html deleted file mode 100644 index 1fdf8bc5..00000000 --- a/docs/0.17.0/never-657a74c/index.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - Mockingbird - never - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Variable -never -

- -
-
public let never: Int = 0
-
-
-

A count of zero.

- -
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/not(_:)-12c53a2/index.html b/docs/0.17.0/not(_:)-12c53a2/index.html deleted file mode 100644 index 18e463af..00000000 --- a/docs/0.17.0/not(_:)-12c53a2/index.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - Mockingbird - not(_:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -not(_:​) -

- -
-
public func not(_ countMatcher: CountMatcher) -> CountMatcher  
-
-
-

Negate a count matcher, only passing on non-matching counts.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n ≠ 1
-verify(bird.fly()).wasCalled(not(exactly(once)))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

A count matcher to negate.

-
-

Returns

-

A negated count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/not(_:)-90155c4/index.html b/docs/0.17.0/not(_:)-90155c4/index.html deleted file mode 100644 index 7a691123..00000000 --- a/docs/0.17.0/not(_:)-90155c4/index.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - Mockingbird - not(_:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -not(_:​) -

- -
-
public func not(_ times: Int) -> CountMatcher  
-
-
-

Negate an exact count, only passing on non-matching counts.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n ≠ 1
-verify(bird.fly()).wasCalled(not(once))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​Matcher

An exact count to negate.

-
-

Returns

-

A negated count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/notEmpty(_:)-42ce3f8/index.html b/docs/0.17.0/notEmpty(_:)-42ce3f8/index.html deleted file mode 100644 index 1e6e78b7..00000000 --- a/docs/0.17.0/notEmpty(_:)-42ce3f8/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Mockingbird - notEmpty(_:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -not​Empty(_:​) -

- -
-
public func notEmpty<T: Collection>(_ type: T.Type = T.self) -> T  
-
-
-

Matches any collection with at least one element.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher notEmpty to match collections with one or more elements.

- -
protocol Bird {
-  func send(_ messages: [String])
-}
-
-given(bird.send(any(count: 2))).will { print($0) }
-
-bird.send(["Hi"])  // Prints ["Hi"]
-bird.send([])      // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [T])    // Overloaded generically
-  func send(_ messages: [String])  // Overloaded explicitly
-  func send(_ messages: [Data])
-}
-
-given(bird.send(notEmpty([String].self)))
-  .will { print($0) }
-
-bird.send(["Hi"])       // Prints ["Hi"]
-bird.send([Data([1])])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/notNil(_:)-4da033f/index.html b/docs/0.17.0/notNil(_:)-4da033f/index.html deleted file mode 100644 index fca02420..00000000 --- a/docs/0.17.0/notNil(_:)-4da033f/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Mockingbird - notNil(_:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -not​Nil(_:​) -

- -
-
public func notNil<T>(_ type: T.Type = T.self) -> T  
-
-
-

Matches any non-nil argument value.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher notNil to match non-nil argument values.

- -
protocol Bird {
-  func send(_ message: String?)
-}
-
-given(bird.send(notNil())).will { print($0) }
-
-bird.send("Hello")  // Prints Optional("Hello")
-bird.send(nil)      // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ message: T?)    // Overloaded generically
-  func send(_ message: String?)  // Overloaded explicitly
-  func send(_ messages: Data?)
-}
-
-given(bird.send(notNil(String?.self)))
-  .will { print($0) }
-
-bird.send("Hello")    // Prints Optional("Hello")
-bird.send(nil)        // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/once-dc7031f/index.html b/docs/0.17.0/once-dc7031f/index.html deleted file mode 100644 index 1bf49ea0..00000000 --- a/docs/0.17.0/once-dc7031f/index.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - Mockingbird - once - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Variable -once -

- -
-
public let once: Int = 1
-
-
-

A count of one.

- -
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/reset(_:)-5654439/index.html b/docs/0.17.0/reset(_:)-5654439/index.html deleted file mode 100644 index 158b5a85..00000000 --- a/docs/0.17.0/reset(_:)-5654439/index.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - Mockingbird - reset(_:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -reset(_:​) -

- -
-
public func reset(_ mocks: Mock...)  
-
-
-

Remove all recorded invocations and configured stubs.

- -
-
-

Fully reset a set of mocks during test runs by removing all recorded invocations and clearing -all configurations.

- -
let bird = mock(Bird.self)
-given(bird.getName()).willReturn("Ryan")
-
-print(bird.name)  // Prints "Ryan"
-verify(bird.getName()).wasCalled()  // Passes
-
-reset(bird)
-
-print(bird.name)  // Error: Missing stubbed implementation
-verify(bird.getName()).wasCalled()  // Error: Got 0 invocations
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mocksMock

A set of mocks to reset.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/sequence(of:)-8b3c523/index.html b/docs/0.17.0/sequence(of:)-8b3c523/index.html deleted file mode 100644 index 406c7db2..00000000 --- a/docs/0.17.0/sequence(of:)-8b3c523/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Mockingbird - sequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -sequence(of:​) -

- -
-
public func sequence<DeclarationType: Declaration, InvocationType, ReturnType>(
-  of values: ReturnType...
-) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>  
-
-
-

Stub a sequence of values.

- -
-
-

Provide one or more values which will be returned sequentially for each invocation. The last -value will be used if the number of invocations is greater than the number of values provided.

- -
given(bird.getName())
-  .willReturn(sequence(of: "Ryan", "Sterling"))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Sterling"
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
valuesReturn​Type

A sequence of values to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/sequence(of:)-af09516/index.html b/docs/0.17.0/sequence(of:)-af09516/index.html deleted file mode 100644 index d9078f15..00000000 --- a/docs/0.17.0/sequence(of:)-af09516/index.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - Mockingbird - sequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -sequence(of:​) -

- -
-
public func sequence<DeclarationType: Declaration, InvocationType, ReturnType>(
-  of implementations: InvocationType...
-) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>  
-
-
-

Stub a sequence of implementations.

- -
-
-

Provide one or more implementations which will be returned sequentially for each invocation. The -last implementation will be used if the number of invocations is greater than the number of -implementations provided.

- -
given(bird.getName()).willReturn(sequence(of: {
-  return Bool.random() ? "Ryan" : "Meisters"
-}, {
-  return Bool.random() ? "Sterling" : "Hackley"
-}))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Hackley"
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementationsInvocation​Type

A sequence of implementations to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/swizzleTestFailer(_:)-8147916/index.html b/docs/0.17.0/swizzleTestFailer(_:)-8147916/index.html deleted file mode 100644 index df4119dd..00000000 --- a/docs/0.17.0/swizzleTestFailer(_:)-8147916/index.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - Mockingbird - swizzleTestFailer(_:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -swizzle​Test​Failer(_:​) -

- -
-
public func swizzleTestFailer(_ newTestFailer: TestFailer)  
-
-
-

Change the current global test failer.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
new​Test​FailerTest​Failer

A test failer instance to start handling test failures.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/twice-b13bfea/index.html b/docs/0.17.0/twice-b13bfea/index.html deleted file mode 100644 index d24e2337..00000000 --- a/docs/0.17.0/twice-b13bfea/index.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - Mockingbird - twice - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Variable -twice -

- -
-
public let twice: Int = 2
-
-
-

A count of two.

- -
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/useDefaultValues(from:on:)-3f9198a/index.html b/docs/0.17.0/useDefaultValues(from:on:)-3f9198a/index.html deleted file mode 100644 index 9815107c..00000000 --- a/docs/0.17.0/useDefaultValues(from:on:)-3f9198a/index.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - Mockingbird - useDefaultValues(from:on:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -use​Default​Values(from:​on:​) -

- -
-
public func useDefaultValues(from valueProvider: ValueProvider, on mock: Mock)  
-
-
-

Start returning default values for unstubbed methods on a single mock.

- -
-
-

Mocks are strict by default, meaning that calls to unstubbed methods will trigger a test -failure. Methods returning Void do not need to be stubbed in strict mode.

- -
let bird = mock(Bird.self)
-print(bird.name)  // Fails because `bird.getName()` is not stubbed
-bird.fly()        // Okay because `fly()` has a `Void` return type
-
-

To return default values for unstubbed methods, use a ValueProvider with the initialized mock. -Mockingbird provides preset value providers which are guaranteed to be backwards compatible, -such as .standardProvider.

- -
useDefaultValues(from: .standardProvider, on: bird)
-print(bird.name)  // Prints ""
-
-

You can create custom value providers by registering values for types. See Providable for how -to provide "wildcard" instances for generic types.

- -
var valueProvider = ValueProvider(from: .standardProvider)
-valueProvider.register("Ryan", for: String.self)
-useDefaultValues(from: valueProvider, on: bird)
-print(bird.name)  // Prints "Ryan"
-
-

Values from concrete stubs always have a higher precedence than default values.

- -
given(bird.getName()) ~> "Ryan"
-print(bird.name)  // Prints "Ryan"
-
-useDefaultValues(from: .standardProvider, on: bird)
-print(bird.name)  // Prints "Ryan"
-
- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
value​ProviderValue​Provider

A value provider to add.

-
mockMock

A mock that should start using the value provider.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/useDefaultValues(from:on:)-c891538/index.html b/docs/0.17.0/useDefaultValues(from:on:)-c891538/index.html deleted file mode 100644 index db47f4fe..00000000 --- a/docs/0.17.0/useDefaultValues(from:on:)-c891538/index.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - Mockingbird - useDefaultValues(from:on:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -use​Default​Values(from:​on:​) -

- -
-
public func useDefaultValues(from valueProvider: ValueProvider, on mocks: [Mock])  
-
-
-

Start returning default values for unstubbed methods on multiple mocks.

- -
-
-

Mocks are strict by default, meaning that calls to unstubbed methods will trigger a test -failure. Methods returning Void do not need to be stubbed in strict mode.

- -
let bird = mock(Bird.self)
-print(bird.name)  // Fails because `bird.getName()` is not stubbed
-bird.fly()        // Okay because `fly()` has a `Void` return type
-
-

To return default values for unstubbed methods, use a ValueProvider with the initialized mock. -Mockingbird provides preset value providers which are guaranteed to be backwards compatible, -such as .standardProvider.

- -
let anotherBird = mock(Bird.self)
-useDefaultValues(from: .standardProvider, on: [bird, anotherBird])
-print(bird.name)  // Prints ""
-print(anotherBird.name)  // Prints ""
-
-

You can create custom value providers by registering values for types. See Providable for how -to provide "wildcard" instances for generic types.

- -
var valueProvider = ValueProvider(from: .standardProvider)
-valueProvider.register("Ryan", for: String.self)
-
-useDefaultValues(from: valueProvider, on: [bird, anotherBird])
-
-print(bird.name)  // Prints "Ryan"
-print(anotherBird.name)  // Prints "Ryan"
-
-

Values from concrete stubs always have a higher precedence than default values.

- -
given(bird.getName()) ~> "Ryan"
-print(bird.name)  // Prints "Ryan"
-
-useDefaultValues(from: .standardProvider, on: [bird, anotherBird])
-
-print(bird.name)  // Prints "Ryan"
-print(anotherBird.name)  // Prints ""
-
- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
value​ProviderValue​Provider

A value provider to add.

-
mocks[Mock]

A list of mocks that should start using the value provider.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.17.0/verify(_:file:line:)-a5a6b2f/index.html b/docs/0.17.0/verify(_:file:line:)-a5a6b2f/index.html deleted file mode 100644 index 39152077..00000000 --- a/docs/0.17.0/verify(_:file:line:)-a5a6b2f/index.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - Mockingbird - verify(_:file:line:) - - - -
- - - Mockingbird - - Documentation - - 0.17.0 -
- - - - - -
-
-

-Function -verify(_:​file:​line:​) -

- -
-
public func verify<DeclarationType: Declaration, InvocationType, ReturnType>(
-  _ declaration: Mockable<DeclarationType, InvocationType, ReturnType>,
-  file: StaticString = #file, line: UInt = #line
-) -> VerificationManager<InvocationType, ReturnType>  
-
-
-

Verify that a mock recieved a specific invocation some number of times.

- -
-
-

Verification lets you assert that a mock received a particular invocation during its lifetime.

- -
verify(bird.doMethod()).wasCalled()
-verify(bird.getProperty()).wasCalled()
-verify(bird.setProperty(any())).wasCalled()
-
-

Match exact or wildcard argument values when verifying methods with parameters.

- -
verify(bird.canChirp(volume: any())).wasCalled()     // Called with any volume
-verify(bird.canChirp(volume: notNil())).wasCalled()  // Called with any non-nil volume
-verify(bird.canChirp(volume: 10)).wasCalled()        // Called with volume = 10
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mock

A mocked declaration to verify.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/AnyDeclaration-762b5df/index.html b/docs/0.18.0/AnyDeclaration-762b5df/index.html deleted file mode 100644 index deba4f4a..00000000 --- a/docs/0.18.0/AnyDeclaration-762b5df/index.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - Mockingbird - AnyDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Any​Declaration -

- -
-
public class AnyDeclaration: Declaration  
-
-
-

Mockable declarations.

- -
-
- -
- - - - - - - - - -AnyDeclaration - - -AnyDeclaration - - - - - -Declaration - - -Declaration - - - - - -AnyDeclaration->Declaration - - - - - - - - -
-

Conforms To

-
-
Declaration
-

All mockable declaration types conform to this protocol.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/ArgumentCaptor-94fb876/index.html b/docs/0.18.0/ArgumentCaptor-94fb876/index.html deleted file mode 100644 index 8b50ef5e..00000000 --- a/docs/0.18.0/ArgumentCaptor-94fb876/index.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - Mockingbird - ArgumentCaptor - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Argument​Captor -

- -
-
public class ArgumentCaptor<ParameterType>: ArgumentMatcher  
-
-
-

Captures method arguments passed during mock invocations.

- -
-
-

An argument captor extracts received argument values which can be used in other parts of the -test.

- -
let bird = mock(Bird.self)
-bird.name = "Ryan"
-
-let nameCaptor = ArgumentCaptor<String>()
-verify(bird.name = any()).wasCalled()
-print(nameCaptor.value)  // Prints "Ryan"
-
-
-
- -
- - - - - - - - - -ArgumentCaptor - - -ArgumentCaptor - - - - - -ArgumentMatcher - - -ArgumentMatcher - - - - - -ArgumentCaptor->ArgumentMatcher - - - - - - - - -
-

Superclass

-
-
ArgumentMatcher
-

Matches argument values with a comparator.

-
-
-
-
-

Initializers

- -
-

- init(weak:​) -

-
-
public init(weak: Bool = false)  
-
-
-

Create a new argument captor.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
weakBool

Whether captured arguments should be stored weakly.

-
-
-
-
-

Properties

- -
-

- matcher -

-
-
@available(*, deprecated, renamed: "any()")
-  public var matcher: ParameterType  
-
-
-

Creates an argument matcher that can be passed to a mockable declaration.

- -
-
-
-

- all​Values -

-
-
public var allValues: [ParameterType]  
-
-
-

All recorded argument values.

- -
-
-
-

- value -

-
-
public var value: ParameterType?  
-
-
-

The last recorded argument value.

- -
-
-
-
-

Methods

- -
-

- any() -

-
-
public func any<ParameterType>() -> ParameterType  
-
-
-

Creates an argument matcher that can be passed to a mockable declaration.

- -
-
-
-

- any() -

-
-
public func any<ParameterType: NSObjectProtocol>() -> ParameterType  
-
-
-

Creates an argument matcher that can be passed to a mockable declaration.

- -
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/ArgumentMatcher-e2bb17a/index.html b/docs/0.18.0/ArgumentMatcher-e2bb17a/index.html deleted file mode 100644 index b6eb5c2c..00000000 --- a/docs/0.18.0/ArgumentMatcher-e2bb17a/index.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - Mockingbird - ArgumentMatcher - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Argument​Matcher -

- -
-
@objc(MKBArgumentMatcher) public class ArgumentMatcher: NSObject  
-
-
-

Matches argument values with a comparator.

- -
-
- -
- - - - - - - - - -ArgumentMatcher - - -ArgumentMatcher - - - - - -NSObject - -NSObject - - - -ArgumentMatcher->NSObject - - - - - -ArgumentCaptor - - -ArgumentCaptor - - - - - -ArgumentCaptor->ArgumentMatcher - - - - - - - - -
-

Subclasses

-
-
ArgumentCaptor
-

Captures method arguments passed during mock invocations.

-
-
-

Conforms To

-
-
NSObject
-
-
-
-

Initializers

- -
-

- init(_:​description:​comparator:​) -

-
-
@objc public init(_ base: Any? = nil,
-                    description: String? = nil,
-                    comparator: @escaping (Any?, Any?) -> Bool)  
-
-
-
-
-

Properties

- -
-

- description -

-
-
public override var description: String  
-
-
-
-
-

Operators

- -
-

- == -

-
-
public static func == (lhs: ArgumentMatcher, rhs: ArgumentMatcher) -> Bool  
-
-
-
-

- != -

-
-
public static func != (lhs: ArgumentMatcher, rhs: ArgumentMatcher) -> Bool  
-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/Array/index.html b/docs/0.18.0/Array/index.html deleted file mode 100644 index 684f7560..00000000 --- a/docs/0.18.0/Array/index.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - Mockingbird - Array - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Extensions on - Array -

-
-

Methods

- -
-

- create​Instance() -

-
-
public static func createInstance() -> Self?  
-
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/Context-67f9dcd/index.html b/docs/0.18.0/Context-67f9dcd/index.html deleted file mode 100644 index 499c298d..00000000 --- a/docs/0.18.0/Context-67f9dcd/index.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - Mockingbird - Context - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Context -

- -
-
@objc(MKBContext) public class Context: NSObject  
-
-
-

Container for mock state and metadata.

- -
-
- -
- - - - - - - - - -Context - - -Context - - - - - -NSObject - -NSObject - - - -Context->NSObject - - - - - - - - -
-

Conforms To

-
-
NSObject
-
-
-
-

Initializers

- -
-

- init() -

-
-
@objc public override init()  
-
-
-
-
-

Properties

- -
-

- mocking -

-
-
@objc public let mocking: MockingContext
-
-
-

Information about received invocations.

- -
-
-
-

- stubbing -

-
-
@objc public let stubbing: StubbingContext
-
-
-

Implementations for stubbing behaviors.

- -
-
-
-

- proxy -

-
-
@objc public let proxy: ProxyContext
-
-
-

Invocation handler chain.

- -
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/CountMatcher-6825dbf/index.html b/docs/0.18.0/CountMatcher-6825dbf/index.html deleted file mode 100644 index 6fb00c7a..00000000 --- a/docs/0.18.0/CountMatcher-6825dbf/index.html +++ /dev/null @@ -1,274 +0,0 @@ - - - - - - Mockingbird - CountMatcher - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Structure - Count​Matcher -

- -
-
public struct CountMatcher  
-
-
-

Checks whether a number matches some expected count.

- -
- -
-

Methods

- -
-

- or(_:​) -

-
-
public func or(_ countMatcher: CountMatcher) -> CountMatcher  
-
-
-

Logically combine another count matcher, passing if either matches.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n = 1 || n ≥ 42
-verify(bird.fly()).wasCalled(exactly(once).or(atLeast(42)))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

Another count matcher to combine.

-
-

Returns

-

A combined count matcher.

- -
-
-

- or(_:​) -

-
-
public func or(_ times: Int) -> CountMatcher  
-
-
-

Logically combine with an exact count, passing if either matches.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n = 1 || n = 2
-verify(bird.fly()).wasCalled(exactly(once).or(twice))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An exact count to combine.

-
-

Returns

-

A combined count matcher.

- -
-
-

- and(_:​) -

-
-
public func and(_ countMatcher: CountMatcher) -> CountMatcher  
-
-
-

Logically combine another count matcher, only passing if both match.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n = 1 && n ≥ 42
-verify(bird.fly()).wasCalled(exactly(once).and(atLeast(42)))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

Another count matcher to combine.

-
-

Returns

-

A combined count matcher.

- -
-
-

- xor(_:​) -

-
-
public func xor(_ countMatcher: CountMatcher) -> CountMatcher  
-
-
-

Logically combine another count matcher, only passing if one matches but not the other.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n ≤ 2 ⊕ n ≥ 1
-verify(bird.fly()).wasCalled(atMost(twice).xor(atLeast(once)))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

Another count matcher to combine.

-
-

Returns

-

A combined count matcher.

- -
-
-

- xor(_:​) -

-
-
public func xor(_ times: Int) -> CountMatcher  
-
-
-

Logically combine an exact count, only passing if one matches but not the other.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n ≥ 1 ⊕ n = 2
-verify(bird.fly()).wasCalled(atLeast(once).xor(twice))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An exact count.

-
-

Returns

-

A combined count matcher.

- -
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/Declaration-61b39f6/index.html b/docs/0.18.0/Declaration-61b39f6/index.html deleted file mode 100644 index 2fcfee39..00000000 --- a/docs/0.18.0/Declaration-61b39f6/index.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - Mockingbird - Declaration - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Protocol - Declaration -

- -
-
public protocol Declaration  
-
-
-

All mockable declaration types conform to this protocol.

- -
-
- -
- - - - - - - - - -Declaration - - -Declaration - - - - - -VariableDeclaration - - -VariableDeclaration - - - - - -VariableDeclaration->Declaration - - - - - -SubscriptDeclaration - - -SubscriptDeclaration - - - - - -SubscriptDeclaration->Declaration - - - - - -AnyDeclaration - - -AnyDeclaration - - - - - -AnyDeclaration->Declaration - - - - - -FunctionDeclaration - - -FunctionDeclaration - - - - - -FunctionDeclaration->Declaration - - - - - - - - -
-

Types Conforming to Declaration

-
-
AnyDeclaration
-

Mockable declarations.

-
-
VariableDeclaration
-

Mockable variable declarations.

-
-
FunctionDeclaration
-

Mockable function declarations.

-
-
SubscriptDeclaration
-

Mockable subscript declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/Dictionary/index.html b/docs/0.18.0/Dictionary/index.html deleted file mode 100644 index 3b538d65..00000000 --- a/docs/0.18.0/Dictionary/index.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - Mockingbird - Dictionary - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Extensions on - Dictionary -

-
-

Methods

- -
-

- create​Instance() -

-
-
public static func createInstance() -> Self?  
-
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/DynamicStubbingManager-824a4fd/index.html b/docs/0.18.0/DynamicStubbingManager-824a4fd/index.html deleted file mode 100644 index 89265c48..00000000 --- a/docs/0.18.0/DynamicStubbingManager-824a4fd/index.html +++ /dev/null @@ -1,1226 +0,0 @@ - - - - - - Mockingbird - DynamicStubbingManager - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Dynamic​Stubbing​Manager -

- -
-
public class DynamicStubbingManager<ReturnType>:
-  StubbingManager<AnyDeclaration, Any?, ReturnType>  
-
-
-

An intermediate object used for stubbing Objective-C declarations returned by given.

- -
-
-

Stubbed implementations are type erased to allow Swift to apply arguments with minimal type -information. See StubbingContext+ObjCReturnValue for more context.

- -
-
- -
- - - - - - - - - -DynamicStubbingManager - - -DynamicStubbingManager - - - - - -StubbingManager<AnyDeclaration, Any?, ReturnType> - -StubbingManager<AnyDeclaration, Any?, ReturnType> - - - -DynamicStubbingManager->StubbingManager<AnyDeclaration, Any?, ReturnType> - - - - - - - - -
-

Conforms To

-
-
StubbingManager<AnyDeclaration, Any?, ReturnType>
-
-
-
-

Methods

- -
-

- will​Return(_:​) -

-
-
@discardableResult
-  override public func willReturn(_ value: ReturnType) -> Self  
-
-
-

Stub a mocked method or property by returning a single value.

- -
-
-

Stubbing allows you to define custom behavior for mocks to perform.

- -
given(bird.doMethod()).willReturn(someValue)
-given(bird.property).willReturn(someValue)
-
-

Match exact or wildcard argument values when stubbing methods with parameters. Stubs added -later have a higher precedence, so add stubs with specific matchers last.

- -
given(bird.canChirp(volume: any())).willReturn(true)     // Any volume
-given(bird.canChirp(volume: notNil())).willReturn(true)  // Any non-nil volume
-given(bird.canChirp(volume: 10)).willReturn(true)        // Volume = 10
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
valueReturn​Type

A stubbed value to return.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will​Throw(_:​) -

-
-
@discardableResult
-  public func willThrow(_ error: Error) -> Self  
-
-
-

Stub a mocked method that throws with an error.

- -
-
-

Stubbing allows you to define custom behavior for mocks to perform. Methods that throw or -rethrow errors can be stubbed with a throwable object.

- -
struct BirdError: Error {}
-given(bird.throwingMethod()).willThrow(BirdError())
-
- - -
-

Parameters

- - - - - - - - - - - - - - - - -
errorError

A stubbed error object to throw.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
-
@discardableResult
-  public func will(
-    _ implementation: @escaping () -> ReturnType
-  ) -> Self  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementation@escaping () -> Return​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
-
@discardableResult
-  public func will<P0>(
-    _ implementation: @escaping (P0) -> ReturnType
-  ) -> Self  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementation@escaping (P0) -> Return​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
-
@discardableResult
-  public func will<P0,P1>(
-    _ implementation: @escaping (P0,P1) -> ReturnType
-  ) -> Self  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementation@escaping (P0,P1) -> Return​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
-
@discardableResult
-  public func will<P0,P1,P2>(
-    _ implementation: @escaping (P0,P1,P2) -> ReturnType
-  ) -> Self  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementation@escaping (P0,P1,P2) -> Return​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
-
@discardableResult
-  public func will<P0,P1,P2,P3>(
-    _ implementation: @escaping (P0,P1,P2,P3) -> ReturnType
-  ) -> Self  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementation@escaping (P0,P1,P2,P3) -> Return​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
-
@discardableResult
-  public func will<P0,P1,P2,P3,P4>(
-    _ implementation: @escaping (P0,P1,P2,P3,P4) -> ReturnType
-  ) -> Self  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementation@escaping (P0,P1,P2,P3,P4) -> Return​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
-
@discardableResult
-  public func will<P0,P1,P2,P3,P4,P5>(
-    _ implementation: @escaping (P0,P1,P2,P3,P4,P5) -> ReturnType
-  ) -> Self  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementation@escaping (P0,P1,P2,P3,P4,P5) -> Return​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
-
@discardableResult
-  public func will<P0,P1,P2,P3,P4,P5,P6>(
-    _ implementation: @escaping (P0,P1,P2,P3,P4,P5,P6) -> ReturnType
-  ) -> Self  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementation@escaping (P0,P1,P2,P3,P4,P5,P6) -> Return​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
-
@discardableResult
-  public func will<P0,P1,P2,P3,P4,P5,P6,P7>(
-    _ implementation: @escaping (P0,P1,P2,P3,P4,P5,P6,P7) -> ReturnType
-  ) -> Self  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementation@escaping (P0,P1,P2,P3,P4,P5,P6,P7) -> Return​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
-
@discardableResult
-  public func will<P0,P1,P2,P3,P4,P5,P6,P7,P8>(
-    _ implementation: @escaping (P0,P1,P2,P3,P4,P5,P6,P7,P8) -> ReturnType
-  ) -> Self  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementation@escaping (P0,P1,P2,P3,P4,P5,P6,P7,P8) -> Return​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
-
@discardableResult
-  public func will<P0,P1,P2,P3,P4,P5,P6,P7,P8,P9>(
-    _ implementation: @escaping (P0,P1,P2,P3,P4,P5,P6,P7,P8,P9) -> ReturnType
-  ) -> Self  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementation@escaping (P0,P1,P2,P3,P4,P5,P6,P7,P8,P9) -> Return​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
-
@discardableResult
-  public func will(
-    _ implementation: @escaping () throws -> ReturnType
-  ) -> Self  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementation@escaping () throws -> Return​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
-
@discardableResult
-  public func will<P0>(
-    _ implementation: @escaping (P0) throws -> ReturnType
-  ) -> Self  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementation@escaping (P0) throws -> Return​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
-
@discardableResult
-  public func will<P0,P1>(
-    _ implementation: @escaping (P0,P1) throws -> ReturnType
-  ) -> Self  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementation@escaping (P0,P1) throws -> Return​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
-
@discardableResult
-  public func will<P0,P1,P2>(
-    _ implementation: @escaping (P0,P1,P2) throws -> ReturnType
-  ) -> Self  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementation@escaping (P0,P1,P2) throws -> Return​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
-
@discardableResult
-  public func will<P0,P1,P2,P3>(
-    _ implementation: @escaping (P0,P1,P2,P3) throws -> ReturnType
-  ) -> Self  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementation@escaping (P0,P1,P2,P3) throws -> Return​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
-
@discardableResult
-  public func will<P0,P1,P2,P3,P4>(
-    _ implementation: @escaping (P0,P1,P2,P3,P4) throws -> ReturnType
-  ) -> Self  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementation@escaping (P0,P1,P2,P3,P4) throws -> Return​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
-
@discardableResult
-  public func will<P0,P1,P2,P3,P4,P5>(
-    _ implementation: @escaping (P0,P1,P2,P3,P4,P5) throws -> ReturnType
-  ) -> Self  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementation@escaping (P0,P1,P2,P3,P4,P5) throws -> Return​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
-
@discardableResult
-  public func will<P0,P1,P2,P3,P4,P5,P6>(
-    _ implementation: @escaping (P0,P1,P2,P3,P4,P5,P6) throws -> ReturnType
-  ) -> Self  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementation@escaping (P0,P1,P2,P3,P4,P5,P6) throws -> Return​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
-
@discardableResult
-  public func will<P0,P1,P2,P3,P4,P5,P6,P7>(
-    _ implementation: @escaping (P0,P1,P2,P3,P4,P5,P6,P7) throws -> ReturnType
-  ) -> Self  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementation@escaping (P0,P1,P2,P3,P4,P5,P6,P7) throws -> Return​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
-
@discardableResult
-  public func will<P0,P1,P2,P3,P4,P5,P6,P7,P8>(
-    _ implementation: @escaping (P0,P1,P2,P3,P4,P5,P6,P7,P8) throws -> ReturnType
-  ) -> Self  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementation@escaping (P0,P1,P2,P3,P4,P5,P6,P7,P8) throws -> Return​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
-
@discardableResult
-  public func will<P0,P1,P2,P3,P4,P5,P6,P7,P8,P9>(
-    _ implementation: @escaping (P0,P1,P2,P3,P4,P5,P6,P7,P8,P9) throws -> ReturnType
-  ) -> Self  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementation@escaping (P0,P1,P2,P3,P4,P5,P6,P7,P8,P9) throws -> Return​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/ErrorBox-1b2dcf7/index.html b/docs/0.18.0/ErrorBox-1b2dcf7/index.html deleted file mode 100644 index 69e3836f..00000000 --- a/docs/0.18.0/ErrorBox-1b2dcf7/index.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - Mockingbird - ErrorBox - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Error​Box -

- -
-
@objc(MKBErrorBox) public class ErrorBox: NSObject  
-
-
-

Used to forward errors thrown from stubbed implementations to the Objective-C runtime.

- -
-
- -
- - - - - - - - - -ErrorBox - - -ErrorBox - - - - - -NSObject - -NSObject - - - -ErrorBox->NSObject - - - - - -ObjCErrorBox - - -ObjCErrorBox - - - - - -ObjCErrorBox->ErrorBox - - - - - -SwiftErrorBox - - -SwiftErrorBox - - - - - -SwiftErrorBox->ErrorBox - - - - - - - - -
-

Subclasses

-
-
SwiftErrorBox
-

Holds Swift errors which are bridged to NSErrors.

-
-
ObjCErrorBox
-

Holds Objective-C NSError objects.

-
-
-

Conforms To

-
-
NSObject
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/ForwardingContext-feff474/index.html b/docs/0.18.0/ForwardingContext-feff474/index.html deleted file mode 100644 index 6af2a091..00000000 --- a/docs/0.18.0/ForwardingContext-feff474/index.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - Mockingbird - ForwardingContext - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Structure - Forwarding​Context -

- -
-
public struct ForwardingContext  
-
-
-

Intermediary object for binding forwarding targets to a mock.

- -
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/FunctionDeclaration-9288d96/index.html b/docs/0.18.0/FunctionDeclaration-9288d96/index.html deleted file mode 100644 index 591fcd4d..00000000 --- a/docs/0.18.0/FunctionDeclaration-9288d96/index.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - Mockingbird - FunctionDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Function​Declaration -

- -
-
public class FunctionDeclaration: Declaration  
-
-
-

Mockable function declarations.

- -
-
- -
- - - - - - - - - -FunctionDeclaration - - -FunctionDeclaration - - - - - -Declaration - - -Declaration - - - - - -FunctionDeclaration->Declaration - - - - - -ThrowingFunctionDeclaration - - -ThrowingFunctionDeclaration - - - - - -ThrowingFunctionDeclaration->FunctionDeclaration - - - - - - - - -
-

Subclasses

-
-
ThrowingFunctionDeclaration
-

Mockable throwing function declarations.

-
-
-

Conforms To

-
-
Declaration
-

All mockable declaration types conform to this protocol.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/ImplementationProvider-ebb9664/index.html b/docs/0.18.0/ImplementationProvider-ebb9664/index.html deleted file mode 100644 index 2a766eaf..00000000 --- a/docs/0.18.0/ImplementationProvider-ebb9664/index.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - Mockingbird - ImplementationProvider - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Structure - Implementation​Provider -

- -
-
public struct ImplementationProvider<DeclarationType: Declaration, InvocationType, ReturnType>  
-
-
-

Provides implementation functions used to stub behavior and return values.

- -
- -
-

Initializers

- -
-

- init(implementation​Creator:​) -

-
-
public init(implementationCreator: @escaping () -> Any?)  
-
-
-

Create an implementation provider with an optional callback.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
implementation​Creator@escaping () -> Any?

A closure returning an implementation when evaluated.

-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/InvocationRecorder-7d70b12/index.html b/docs/0.18.0/InvocationRecorder-7d70b12/index.html deleted file mode 100644 index 6893aa43..00000000 --- a/docs/0.18.0/InvocationRecorder-7d70b12/index.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - Mockingbird - InvocationRecorder - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Invocation​Recorder -

- -
-
@objc(MKBInvocationRecorder) public class InvocationRecorder: NSObject  
-
-
-

Records invocations for stubbing and verification.

- -
-
- -
- - - - - - - - - -InvocationRecorder - - -InvocationRecorder - - - - - -NSObject - -NSObject - - - -InvocationRecorder->NSObject - - - - - - - - -
-

Nested Types

-
-
InvocationRecorder.Mode
-

Used to attribute declarations to stubbing and verification calls in tests.

-
-
-

Conforms To

-
-
NSObject
-
-
-
-

Properties

- -
-

- mode -

-
-
@objc public let mode: Mode
-
-
-
-

- shared​Recorder -

-
-
@objc public static var sharedRecorder: InvocationRecorder?  
-
-
-

The global invocation recorder instance.

- -
-
-
-
-

Methods

- -
-

- record​Invocation(_:​context:​) -

-
-
@objc public func recordInvocation(_ invocation: ObjCInvocation, context: Context)  
-
-
-
-

- get​Facade​Value(at:​arguments​Count:​) -

-
-
@objc public func getFacadeValue(at argumentIndex: Int, argumentsCount: Int) -> Any?  
-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/InvocationRecorder_Mode-cf6cb72/index.html b/docs/0.18.0/InvocationRecorder_Mode-cf6cb72/index.html deleted file mode 100644 index aac98a9e..00000000 --- a/docs/0.18.0/InvocationRecorder_Mode-cf6cb72/index.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - Mockingbird - InvocationRecorder.Mode - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Enumeration - Invocation​Recorder.​Mode -

- -
-
@objc(MKBInvocationRecorderMode) public enum Mode: UInt  
-
-
-

Used to attribute declarations to stubbing and verification calls in tests.

- -
-
- -
- - - - - - - - - -InvocationRecorder.Mode - - -InvocationRecorder.Mode - - - - - -UInt - -UInt - - - -InvocationRecorder.Mode->UInt - - - - - - - - -
-

Member Of

-
-
InvocationRecorder
-

Records invocations for stubbing and verification.

-
-
-

Conforms To

-
-
UInt
-
-
-
-

Enumeration Cases

- -
-

- none -

-
-
case none = 0
-
-
-
-

- stubbing -

-
-
case stubbing
-
-
-
-

- verifying -

-
-
case verifying
-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/Mock-ad39d03/index.html b/docs/0.18.0/Mock-ad39d03/index.html deleted file mode 100644 index 23f75e22..00000000 --- a/docs/0.18.0/Mock-ad39d03/index.html +++ /dev/null @@ -1,337 +0,0 @@ - - - - - - Mockingbird - Mock - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Protocol - Mock -

- -
-
public protocol Mock: AnyObject  
-
-
-

All generated mocks conform to this protocol.

- -
-
- -
- - - - - - - - - -Mock - - -Mock - - - - - -AnyObject - -AnyObject - - - -Mock->AnyObject - - - - - -StaticMock - - -StaticMock - - - - - -StaticMock->Mock - - - - - - - - -
-

Conforms To

-
-
AnyObject
-
-

Types Conforming to Mock

-
-
StaticMock
-

Used to store invocations on static or class scoped methods.

-
-
-
-
-

Default Implementations

- -
-

- use​Default​Values(from:​) -

-
-
@discardableResult
-  func useDefaultValues(from valueProvider: ValueProvider) -> Self  
-
-
-

Adds a value provider returning default values for unstubbed methods to this mock.

- -
-
-

Mocks are strict by default, meaning that calls to unstubbed methods will trigger a test -failure. Methods returning Void do not need to be stubbed in strict mode.

- -
let bird = mock(Bird.self)
-print(bird.name)  // Fails because `bird.name` is not stubbed
-bird.fly()        // Okay because `fly()` has a `Void` return type
-
-

To return default values for unstubbed methods, use a ValueProvider with the initialized -mock. Mockingbird provides preset value providers which are guaranteed to be backwards -compatible, such as .standardProvider.

- -
bird.useDefaultValues(from: .standardProvider)
-print(bird.name)  // Prints ""
-
-

You can create custom value providers by registering values for types. See Providable for -how to provide "wildcard" instances for generic types.

- -
var valueProvider = ValueProvider(from: .standardProvider)
-valueProvider.register("Ryan", for: String.self)
-bird.useDefaultValues(from: valueProvider)
-print(bird.name)  // Prints "Ryan"
-
-

Values from concrete stubs always have a higher precedence than default values.

- -
given(bird.name) ~> "Ryan"
-print(bird.name)  // Prints "Ryan"
-
-bird.useDefaultValues(from: .standardProvider)
-print(bird.name)  // Prints "Ryan"
-
- -
-

Parameters

- - - - - - - - - - - - - - - - -
value​ProviderValue​Provider

A value provider to add.

-
-
-
-

- forward​Calls​ToSuper() -

-
-
@discardableResult
-  func forwardCallsToSuper() -> Self  
-
-
-

Create a partial mock, forwarding all calls without an explicit stub to the superclass.

- -
-
-

Use forwardCallsToSuper on class mocks to call the superclass implementation. Superclass -forwarding persists until removed with clearStubs or shadowed by a forwarding target that -was added afterwards.

- -
class Bird {
-  let name: String
-  init(name: String) { self.name = name }
-}
-
-// `BirdMock` subclasses `Bird`
-let bird: BirdMock = mock(Bird.self).initialize(name: "Ryan")
-
-bird.forwardCallsToSuper()
-print(bird.name)  // Prints "Ryan"
-
-

Concrete stubs always have a higher priority than forwarding targets, regardless of the order -they were added.

- -
let bird = mock(Bird.self).initialize(name: "Sterling")
-given(bird.name).willReturn("Ryan")
-bird.forwardCallsToSuper()
-print(bird.name)  // Prints "Ryan"
-
-

Objects must inherit from the mocked type to handle forwarded invocations, even if the -declaration is identical. Adding an unrelated type as a forwarding target is a no-op.

- -
// Not a class
-protocol AbstractBird {
-  var name: String { get }
-}
-
-let bird = mock(AbstractBird.self)
-bird.forwardCallsToSuper()
-print(bird.name)  // Error: Missing stubbed implementation
-
-
-

Returns

-

A partial mock using the superclass to handle invocations.

- -
-
-

- forward​Calls(to:​) -

-
-
@discardableResult
-  func forwardCalls<T>(to object: T) -> Self  
-
-
-

Create a partial mock, forwarding all calls without an explicit stub to an object.

- -
-
-

Objects are strongly referenced and receive proxed invocations until removed with -clearStubs. Targets added afterwards have a higher precedence and only pass calls down the forwarding chain if unable handle the invocation, such as when the target is unrelated to the -mocked type.

- -
class Crow: Bird {
-  let name: String
-  init(name: String) { self.name = name }
-}
-
-let bird = mock(Bird.self)
-bird.forwardCalls(to: Crow(name: "Ryan"))
-print(bird.name)  // Prints "Ryan"
-
-// Additional targets take precedence
-bird.forwardCalls(to: Crow(name: "Sterling"))
-print(bird.name)  // Prints "Sterling"
-
-

Concrete stubs always have a higher priority than forwarding targets, regardless of the order -they were added.

- -
given(bird.name).willReturn("Ryan")
-bird.forwardCalls(to: Crow(name: "Sterling"))
-print(bird.name)  // Prints "Ryan"
-
-

Objects must inherit from the mocked type to handle forwarded invocations, even if the -declaration is identical. Adding an unrelated type as a forwarding target is a no-op.

- -
// Not a `Bird`
-class Person {
-  var name = "Ryan"
-}
-
-bird.forwardCalls(to: Person())
-print(bird.name)  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
objectT

An object that should handle forwarded invocations.

-
-

Returns

-

A partial mock using object to handle invocations.

- -
-
- - -
-

Requirements

- -
-

- mockingbird​Context -

-
-
var mockingbirdContext: Context  
-
-
-

Runtime metdata about the mock instance.

- -
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/MockMetadata-491926a/index.html b/docs/0.18.0/MockMetadata-491926a/index.html deleted file mode 100644 index fee505c7..00000000 --- a/docs/0.18.0/MockMetadata-491926a/index.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - Mockingbird - MockMetadata - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Structure - Mock​Metadata -

- -
-
public struct MockMetadata  
-
-
-

Stores information about generated mocks.

- -
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/Mockable-92ced01/index.html b/docs/0.18.0/Mockable-92ced01/index.html deleted file mode 100644 index dff3d4ae..00000000 --- a/docs/0.18.0/Mockable-92ced01/index.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - Mockingbird - Mockable - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Structure - Mockable -

- -
-
public struct Mockable<DeclarationType: Declaration, InvocationType, ReturnType>  
-
-
-

Represents a mocked declaration that can be stubbed or verified.

- -
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/MockingContext-c31b095/index.html b/docs/0.18.0/MockingContext-c31b095/index.html deleted file mode 100644 index dccb6986..00000000 --- a/docs/0.18.0/MockingContext-c31b095/index.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - Mockingbird - MockingContext - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Mocking​Context -

- -
-
@objc(MKBMockingContext) public class MockingContext: NSObject  
-
-
-

Stores invocations received by mocks.

- -
-
- -
- - - - - - - - - -MockingContext - - -MockingContext - - - - - -NSObject - -NSObject - - - -MockingContext->NSObject - - - - - - - - -
-

Conforms To

-
-
NSObject
-
-
-
-

Methods

- -
-

- objc​Did​Invoke(_:​evaluating:​) -

-
-
@objc public func objcDidInvoke(_ invocation: ObjCInvocation,
-                                  evaluating thunk: (ObjCInvocation) -> Any?) -> Any?  
-
-
-

Invoke a thunk from Objective-C.

- -
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/NSObjectProtocol/index.html b/docs/0.18.0/NSObjectProtocol/index.html deleted file mode 100644 index 08c15d08..00000000 --- a/docs/0.18.0/NSObjectProtocol/index.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - Mockingbird - NSObjectProtocol - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Extensions on - NSObjectProtocol -

-
-

Methods

- -
-

- forward​Calls​ToSuper() -

-
-
@discardableResult
-  func forwardCallsToSuper() -> Self  
-
-
-

Create a partial mock, forwarding all calls without an explicit stub to the superclass.

- -
-
-

Use forwardCallsToSuper on class mocks to call the superclass implementation. Superclass -forwarding persists until removed with clearStubs or shadowed by a forwarding target that -was added afterwards.

- -
class Bird {
-  let name: String
-  init(name: String) { self.name = name }
-}
-
-// `BirdMock` subclasses `Bird`
-let bird: BirdMock = mock(Bird.self).initialize(name: "Ryan")
-
-bird.forwardCallsToSuper()
-print(bird.name)  // Prints "Ryan"
-
-

Concrete stubs always have a higher priority than forwarding targets, regardless of the order -they were added.

- -
let bird = mock(Bird.self).initialize(name: "Sterling")
-given(bird.name).willReturn("Ryan")
-bird.forwardCallsToSuper()
-print(bird.name)  // Prints "Ryan"
-
-

Objects must inherit from the mocked type to handle forwarded invocations, even if the -declaration is identical. Adding an unrelated type as a forwarding target is a no-op.

- -
// Not a class
-protocol AbstractBird {
-  var name: String { get }
-}
-
-let bird = mock(AbstractBird.self)
-bird.forwardCallsToSuper()
-print(bird.name)  // Error: Missing stubbed implementation
-
-
-

Returns

-

A partial mock using the superclass to handle invocations.

- -
-
-

- forward​Calls(to:​) -

-
-
@discardableResult
-  func forwardCalls<T>(to target: T) -> Self  
-
-
-

Create a partial mock, forwarding all calls without an explicit stub to an object.

- -
-
-

Objects are strongly referenced and receive proxed invocations until removed with -clearStubs. Targets added afterwards have a higher precedence and only pass calls down the forwarding chain if unable handle the invocation, such as when the target is unrelated to the -mocked type.

- -
class Crow: Bird {
-  let name: String
-  init(name: String) { self.name = name }
-}
-
-let bird = mock(Bird.self)
-bird.forwardCalls(to: Crow(name: "Ryan"))
-print(bird.name)  // Prints "Ryan"
-
-// Additional targets take precedence
-bird.forwardCalls(to: Crow(name: "Sterling"))
-print(bird.name)  // Prints "Sterling"
-
-

Concrete stubs always have a higher priority than forwarding targets, regardless of the order -they were added.

- -
given(bird.name).willReturn("Ryan")
-bird.forwardCalls(to: Crow(name: "Sterling"))
-print(bird.name)  // Prints "Ryan"
-
-

Objects must inherit from the mocked type to handle forwarded invocations, even if the -declaration is identical. Adding an unrelated type as a forwarding target is a no-op.

- -
// Not a `Bird`
-class Person {
-  var name = "Ryan"
-}
-
-bird.forwardCalls(to: Person())
-print(bird.name)  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
object

An object that should handle forwarded invocations.

-
-

Returns

-

A partial mock using object to handle invocations.

- -
-
-

- use​Default​Values(from:​) -

-
-
@discardableResult
-  func useDefaultValues(from valueProvider: ValueProvider) -> Self  
-
-
-

Adds a value provider returning default values for unstubbed methods to this mock.

- -
-
-

Mocks are strict by default, meaning that calls to unstubbed methods will trigger a test -failure. Methods returning Void do not need to be stubbed in strict mode.

- -
let bird = mock(Bird.self)
-print(bird.name)  // Fails because `bird.name` is not stubbed
-bird.fly()        // Okay because `fly()` has a `Void` return type
-
-

To return default values for unstubbed methods, use a ValueProvider with the initialized -mock. Mockingbird provides preset value providers which are guaranteed to be backwards -compatible, such as .standardProvider.

- -
bird.useDefaultValues(from: .standardProvider)
-print(bird.name)  // Prints ""
-
-

You can create custom value providers by registering values for types. See Providable for -how to provide "wildcard" instances for generic types.

- -
var valueProvider = ValueProvider(from: .standardProvider)
-valueProvider.register("Ryan", for: String.self)
-bird.useDefaultValues(from: valueProvider)
-print(bird.name)  // Prints "Ryan"
-
-

Values from concrete stubs always have a higher precedence than default values.

- -
given(bird.name) ~> "Ryan"
-print(bird.name)  // Prints "Ryan"
-
-bird.useDefaultValues(from: .standardProvider)
-print(bird.name)  // Prints "Ryan"
-
- -
-

Parameters

- - - - - - - - - - - - - - - - -
value​ProviderValue​Provider

A value provider to add.

-
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/NonEscapingClosure-ac8dd96/index.html b/docs/0.18.0/NonEscapingClosure-ac8dd96/index.html deleted file mode 100644 index 896bde24..00000000 --- a/docs/0.18.0/NonEscapingClosure-ac8dd96/index.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - Mockingbird - NonEscapingClosure - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Non​Escaping​Closure -

- -
-
public class NonEscapingClosure<ClosureType>: NonEscapingType  
-
-
-

Placeholder for non-escaping closure parameter types.

- -
-
-

Non-escaping closures cannot be stored in an Invocation so an instance of a -NonEscapingClosure is stored instead.

- -
protocol Bird {
-  func send(_ message: String, callback: (Result) -> Void)
-}
-
-bird.send("Hello", callback: { print($0) })
-
-// Must use a wildcard argument matcher like `any`
-verify(bird.send("Hello", callback: any())).wasCalled()
-
-

Mark closure parameter types as @escaping to capture closures during verification.

- -
protocol Bird {
-  func send(_ message: String, callback: @escaping (Result) -> Void)
-}
-
-bird.send("Hello", callback: { print($0) })
-
-let argumentCaptor = ArgumentCaptor<(Result) -> Void>()
-verify(bird.send("Hello", callback: argumentCaptor.matcher)).wasCalled()
-argumentCaptor.value?(.success)  // Prints Result.success
-
-
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/ObjCErrorBox-ece9985/index.html b/docs/0.18.0/ObjCErrorBox-ece9985/index.html deleted file mode 100644 index 543cd373..00000000 --- a/docs/0.18.0/ObjCErrorBox-ece9985/index.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - Mockingbird - ObjCErrorBox - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Obj​CError​Box -

- -
-
@objc(MKBObjCErrorBox) public class ObjCErrorBox: ErrorBox  
-
-
-

Holds Objective-C NSError objects.

- -
-
- -
- - - - - - - - - -ObjCErrorBox - - -ObjCErrorBox - - - - - -ErrorBox - - -ErrorBox - - - - - -ObjCErrorBox->ErrorBox - - - - - - - - -
-

Superclass

-
-
ErrorBox
-

Used to forward errors thrown from stubbed implementations to the Objective-C runtime.

-
-
-
-
-

Properties

- -
-

- error -

-
-
@objc public let error: NSError? 
-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/ObjCInvocation-9ef7ffe/index.html b/docs/0.18.0/ObjCInvocation-9ef7ffe/index.html deleted file mode 100644 index 010a7f7a..00000000 --- a/docs/0.18.0/ObjCInvocation-9ef7ffe/index.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - Mockingbird - ObjCInvocation - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Obj​CInvocation -

- -
-
@objc(MKBObjCInvocation) public class ObjCInvocation: NSObject, Invocation  
-
-
-

An invocation recieved by an Objective-C.

- -
-
- -
- - - - - - - - - -ObjCInvocation - - -ObjCInvocation - - - - - -Invocation - -Invocation - - - -ObjCInvocation->Invocation - - - - - -NSObject - -NSObject - - - -ObjCInvocation->NSObject - - - - - - - - -
-

Conforms To

-
-
NSObject
-
-
-
-

Initializers

- -
-

- init(selector​Name:​setter​Selector​Name:​selector​Type:​arguments:​objc​Return​Type:​) -

-
-
@objc public required init(selectorName: String,
-                             setterSelectorName: String?,
-                             selectorType: SelectorType,
-                             arguments: [ArgumentMatcher],
-                             objcReturnType: String)  
-
-
-
-
-

Properties

- -
-

- description -

-
-
override public var description: String  
-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/Optional/index.html b/docs/0.18.0/Optional/index.html deleted file mode 100644 index 6237bec2..00000000 --- a/docs/0.18.0/Optional/index.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - Mockingbird - Optional - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Extensions on - Optional -

-
-

Methods

- -
-

- create​Instance() -

-
-
public static func createInstance() -> Self?  
-
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/OrderedVerificationOptions-2ad9275/index.html b/docs/0.18.0/OrderedVerificationOptions-2ad9275/index.html deleted file mode 100644 index d86cb05c..00000000 --- a/docs/0.18.0/OrderedVerificationOptions-2ad9275/index.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - - - Mockingbird - OrderedVerificationOptions - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Structure - Ordered​Verification​Options -

- -
-
public struct OrderedVerificationOptions: OptionSet  
-
-
-

Additional options to increase the strictness of inOrder verification blocks.

- -
-
- -
- - - - - - - - - -OrderedVerificationOptions - - -OrderedVerificationOptions - - - - - -OptionSet - -OptionSet - - - -OrderedVerificationOptions->OptionSet - - - - - - - - -
-

Conforms To

-
-
OptionSet
-
-
-
-

Initializers

- -
-

- init(raw​Value:​) -

-
-
public init(rawValue: Int)  
-
-
-
-
-

Properties

- -
-

- raw​Value -

-
-
public let rawValue: Int
-
-
-
-

- no​Invocations​Before -

-
-
public static let noInvocationsBefore  
-
-
-

Check that there are no recorded invocations before those explicitly verified in the block.

- -
-
-

Use this option to disallow invocations prior to those satisfying the first verification.

- -
bird.name
-bird.canFly
-bird.fly()
-
-// Passes _without_ the option
-inOrder {
-  verify(bird.canFly).wasCalled()
-  verify(bird.fly()).wasCalled()
-}
-
-// Fails with the option
-inOrder(with: .noInvocationsBefore) {
-  verify(bird.canFly).wasCalled()
-  verify(bird.fly()).wasCalled()
-}
-
-
-
-
-

- no​Invocations​After -

-
-
public static let noInvocationsAfter  
-
-
-

Check that there are no recorded invocations after those explicitly verified in the block.

- -
-
-

Use this option to disallow subsequent invocations to those satisfying the last verification.

- -
bird.name
-bird.canFly
-bird.fly()
-
-// Passes _without_ the option
-inOrder {
-  verify(bird.name).wasCalled()
-  verify(bird.canFly).wasCalled()
-}
-
-// Fails with the option
-inOrder(with: .noInvocationsAfter) {
-  verify(bird.name).wasCalled()
-  verify(bird.canFly).wasCalled()
-}
-
-
-
-
-

- only​Consecutive​Invocations -

-
-
public static let onlyConsecutiveInvocations  
-
-
-

Check that there are no recorded invocations between those explicitly verified in the block.

- -
-
-

Use this option to disallow non-consecutive invocations to each verification.

- -
bird.name
-bird.canFly
-bird.fly()
-
-// Passes _without_ the option
-inOrder {
-  verify(bird.name).wasCalled()
-  verify(bird.fly()).wasCalled()
-}
-
-// Fails with the option
-inOrder(with: .onlyConsecutiveInvocations) {
-  verify(bird.name).wasCalled()
-  verify(bird.fly()).wasCalled()
-}
-
-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/PropertyGetterDeclaration-8ac0b54/index.html b/docs/0.18.0/PropertyGetterDeclaration-8ac0b54/index.html deleted file mode 100644 index bd27a13b..00000000 --- a/docs/0.18.0/PropertyGetterDeclaration-8ac0b54/index.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - Mockingbird - PropertyGetterDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Property​Getter​Declaration -

- -
-
public class PropertyGetterDeclaration: VariableDeclaration  
-
-
-

Mockable property getter declarations.

- -
-
- -
- - - - - - - - - -PropertyGetterDeclaration - - -PropertyGetterDeclaration - - - - - -VariableDeclaration - - -VariableDeclaration - - - - - -PropertyGetterDeclaration->VariableDeclaration - - - - - - - - -
-

Superclass

-
-
VariableDeclaration
-

Mockable variable declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/PropertySetterDeclaration-1a29109/index.html b/docs/0.18.0/PropertySetterDeclaration-1a29109/index.html deleted file mode 100644 index aa6427f9..00000000 --- a/docs/0.18.0/PropertySetterDeclaration-1a29109/index.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - Mockingbird - PropertySetterDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Property​Setter​Declaration -

- -
-
public class PropertySetterDeclaration: VariableDeclaration  
-
-
-

Mockable property setter declarations.

- -
-
- -
- - - - - - - - - -PropertySetterDeclaration - - -PropertySetterDeclaration - - - - - -VariableDeclaration - - -VariableDeclaration - - - - - -PropertySetterDeclaration->VariableDeclaration - - - - - - - - -
-

Superclass

-
-
VariableDeclaration
-

Mockable variable declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/Providable-fd593f8/index.html b/docs/0.18.0/Providable-fd593f8/index.html deleted file mode 100644 index a7b565a1..00000000 --- a/docs/0.18.0/Providable-fd593f8/index.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - Mockingbird - Providable - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Protocol - Providable -

- -
-
public protocol Providable  
-
-
-

A type that can provide concrete instances of itself.

- -
-
-

Provide wildcard instances for generic types by conforming the base type to Providable and -registering the type. Non-wildcard instances have precedence over wildcard instances.

- -
extension Array: Providable {
-  public static func createInstance() -> Self? {
-    return Array()
-  }
-}
-
-var valueProvider = ValueProvider()
-valueProvider.registerType(Array<Any>.self)
-
-// All specializations of `Array` return an empty array
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints []
-print(valueProvider.provideValue(for: Array<Data>.self))    // Prints []
-
-// Register a non-wildcard instance of `Array<String>`
-valueProvider.register(["A", "B"], for: Array<String>.self)
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints ["A", "B"]
-print(valueProvider.provideValue(for: Array<Data>.self))    // Prints []
-
- -
- - - - -
-

Requirements

- -
-

- create​Instance() -

-
-
static func createInstance() -> Self? 
-
-
-

Create a concrete instance of this type, or nil if no concrete instance is available.

- -
-
- -
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/ProxyContext-67feefc/index.html b/docs/0.18.0/ProxyContext-67feefc/index.html deleted file mode 100644 index b4075b8a..00000000 --- a/docs/0.18.0/ProxyContext-67feefc/index.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - Mockingbird - ProxyContext - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Proxy​Context -

- -
-
@objc(MKBProxyContext) public class ProxyContext: NSObject  
-
-
-

Stores potential targets that can handle forwarded invocations from mocked calls.

- -
-
- -
- - - - - - - - - -ProxyContext - - -ProxyContext - - - - - -NSObject - -NSObject - - - -ProxyContext->NSObject - - - - - - - - -
-

Conforms To

-
-
NSObject
-
-
-
-

Methods

- -
-

- targets(for:​) -

-
-
@objc public func targets(for invocation: ObjCInvocation) -> [Any]  
-
-
-

Returns available proxy targets in descending priority, type erased for Obj-C interop.

- -
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/SelectorType-d2b8230/index.html b/docs/0.18.0/SelectorType-d2b8230/index.html deleted file mode 100644 index 12d3d9e8..00000000 --- a/docs/0.18.0/SelectorType-d2b8230/index.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - Mockingbird - SelectorType - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Enumeration - Selector​Type -

- -
-
@objc(MKBSelectorType) public enum SelectorType: UInt, CustomStringConvertible  
-
-
-

Attributes selectors to a specific member type.

- -
-
- -
- - - - - - - - - -SelectorType - - -SelectorType - - - - - -CustomStringConvertible - -CustomStringConvertible - - - -SelectorType->CustomStringConvertible - - - - - -UInt - -UInt - - - -SelectorType->UInt - - - - - - - - -
-

Conforms To

-
-
CustomStringConvertible
-
UInt
-
-
-
-

Enumeration Cases

- -
-

- method -

-
-
case method
-
-
-
-

- getter -

-
-
case getter
-
-
-
-

- setter -

-
-
case setter
-
-
-
-

- subscript​Getter -

-
-
case subscriptGetter
-
-
-
-

- subscript​Setter -

-
-
case subscriptSetter
-
-
-
-
-

Properties

- -
-

- description -

-
-
public var description: String  
-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/Set/index.html b/docs/0.18.0/Set/index.html deleted file mode 100644 index 73bbda30..00000000 --- a/docs/0.18.0/Set/index.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - Mockingbird - Set - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Extensions on - Set -

-
-

Methods

- -
-

- create​Instance() -

-
-
public static func createInstance() -> Self?  
-
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/SourceLocation-e12b876/index.html b/docs/0.18.0/SourceLocation-e12b876/index.html deleted file mode 100644 index 5875616e..00000000 --- a/docs/0.18.0/SourceLocation-e12b876/index.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - Mockingbird - SourceLocation - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Structure - Source​Location -

- -
-
public struct SourceLocation  
-
-
-

References a line of code in a file.

- -
- - - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/StaticMock-a04a7c2/index.html b/docs/0.18.0/StaticMock-a04a7c2/index.html deleted file mode 100644 index 37160d66..00000000 --- a/docs/0.18.0/StaticMock-a04a7c2/index.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - Mockingbird - StaticMock - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Static​Mock -

- -
-
public class StaticMock: Mock  
-
-
-

Used to store invocations on static or class scoped methods.

- -
-
- -
- - - - - - - - - -StaticMock - - -StaticMock - - - - - -Mock - - -Mock - - - - - -StaticMock->Mock - - - - - - - - -
-

Conforms To

-
-
Mock
-

All generated mocks conform to this protocol.

-
-
-
-
-

Properties

- -
-

- mockingbird​Context -

-
-
public let mockingbirdContext  
-
-
-

Runtime metdata about the mock instance.

- -
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/StaticStubbingManager-5a4489d/index.html b/docs/0.18.0/StaticStubbingManager-5a4489d/index.html deleted file mode 100644 index 891ccf9a..00000000 --- a/docs/0.18.0/StaticStubbingManager-5a4489d/index.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - Mockingbird - StaticStubbingManager - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Static​Stubbing​Manager -

- -
-
public class StaticStubbingManager<DeclarationType: Declaration, InvocationType, ReturnType>:
-StubbingManager<DeclarationType, InvocationType, ReturnType>  
-
-
-

An intermediate object used for stubbing Swift declarations returned by given.

- -
-
- -
- - - - - - - - - -StaticStubbingManager - - -StaticStubbingManager - - - - - -StubbingManager<DeclarationType, InvocationType, ReturnType> - -StubbingManager<DeclarationType, InvocationType, ReturnType> - - - -StaticStubbingManager->StubbingManager<DeclarationType, InvocationType, ReturnType> - - - - - - - - -
-

Conforms To

-
-
StubbingManager<DeclarationType, InvocationType, ReturnType>
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/StubbingContext-d729e61/index.html b/docs/0.18.0/StubbingContext-d729e61/index.html deleted file mode 100644 index 55013067..00000000 --- a/docs/0.18.0/StubbingContext-d729e61/index.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - Mockingbird - StubbingContext - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Stubbing​Context -

- -
-
@objc(MKBStubbingContext) public class StubbingContext: NSObject  
-
-
-

Stores stubbed implementations used by mocks.

- -
-
- -
- - - - - - - - - -StubbingContext - - -StubbingContext - - - - - -NSObject - -NSObject - - - -StubbingContext->NSObject - - - - - - - - -
-

Conforms To

-
-
NSObject
-
-
-
-

Properties

- -
-

- no​Implementation -

-
-
@objc public static let noImplementation  
-
-
-

Used to indicate that no implementation exists for a given invocation.

- -
-
-
-
-

Methods

- -
-

- evaluate​Return​Value(for:​) -

-
-
@objc public func evaluateReturnValue(for invocation: ObjCInvocation) -> Any?  
-
-
-

Apply arguments to a Swift implementation forwarded by the Objective-C runtime.

- -
-
-

Invocations with more than 10 arguments will throw a missing stubbed implementation error.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
invocationObj​CInvocation

An Objective-C invocation to handle.

-
-

Returns

-

The value returned from evaluating the Swift implementation.

- -
-
-

- provide​Default​Value(for:​) -

-
-
@objc public func provideDefaultValue(for invocation: ObjCInvocation) -> Any?  
-
-
-

Attempts to return a value using the default value provider.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
invocationObj​CInvocation

An Objective-C invocation to handle.

-
-

Returns

-

A value or nil if the provider could not handle the Objective-C return type.

- -
-
-

- fail​Test(for:​) -

-
-
@objc public func failTest(for invocation: ObjCInvocation) -> Never  
-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/StubbingManager-c41b02a/index.html b/docs/0.18.0/StubbingManager-c41b02a/index.html deleted file mode 100644 index cc8c6284..00000000 --- a/docs/0.18.0/StubbingManager-c41b02a/index.html +++ /dev/null @@ -1,393 +0,0 @@ - - - - - - Mockingbird - StubbingManager - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Stubbing​Manager -

- -
-
public class StubbingManager<DeclarationType: Declaration, InvocationType, ReturnType>  
-
-
-

An intermediate object used for stubbing declarations returned by given.

- -
-
- - -

Nested Types

-
-
StubbingManager.TransitionStrategy
-

When to use the next chained implementation provider.

-
-
-
-
-

Methods

- -
-

- will​Forward​ToSuper() -

-
-
@discardableResult
-  func willForwardToSuper() -> Self  
-
-
-

Forward calls for a specific declaration to the superclass.

- -
-
-

Use willForwardToSuper on class mock declarations to call the superclass implementation when -receiving a matching invocation. Superclass forwarding persists until removed with -clearStubs or shadowed by a forwarding target that was added afterwards.

- -
class Bird {
-  let name: String
-  init(name: String) { self.name = name }
-}
-
-// `BirdMock` subclasses `Bird`
-let bird: BirdMock = mock(Bird.self).initialize(name: "Ryan")
-
-given(bird.name).willForwardToSuper()
-print(bird.name)  // Prints "Ryan"
-
-

The mocked type must be a class. Adding superclass forwarding to mocked protocol declarations -is a no-op.

- -
// Not a class
-protocol AbstractBird {
-  var name: String { get }
-}
-
-let bird = mock(AbstractBird.self)
-given(bird.name).willForwardToSuper()
-print(bird.name)  // Error: Missing stubbed implementation
-
- -
-

Parameters

- - - - - - - - - - - - - - - - -
object

An object that should handle forwarded invocations.

-
-
-
-

- will​Forward(to:​) -

-
-
@discardableResult
-  func willForward<T>(to object: T) -> Self  
-
-
-

Forward calls for a specific declaration to an object.

- -
-
-

Objects are strongly referenced and receive forwarded invocations until removed with -clearStubs. Targets added afterwards have a higher precedence and only pass calls down the -forwarding chain if unable handle the invocation, such as when the target is unrelated to the -mocked type.

- -
class Crow: Bird {
-  let name: String
-  init(name: String) { self.name = name }
-}
-
-given(bird.name).willForward(to: Crow(name: "Ryan"))
-print(bird.name)  // Prints "Ryan"
-
-// Additional targets take precedence
-given(bird.name).willForward(to: Crow(name: "Sterling"))
-print(bird.name)  // Prints "Sterling"
-
-

Concrete stubs always have a higher priority than forwarding targets, regardless of the order -they were added.

- -
given(bird.name).willReturn("Ryan")
-given(bird.name).willForward(to: Crow(name: "Sterling"))
-print(bird.name)  // Prints "Ryan"
-
-

Objects must inherit from the mocked type to handle forwarded invocations, even if the -declaration is identical. Adding an unrelated type as a forwarding target is a no-op.

- -
// Not a `Bird`
-class Person {
-  var name = "Ryan"
-}
-
-given(bird.name).willForward(to: Person())
-print(bird.name)  // Error: Missing stubbed implementation
-
- -
-

Parameters

- - - - - - - - - - - - - - - - -
objectT

An object that should handle forwarded invocations.

-
-
-
-

- will​Return(_:​) -

-
-
@discardableResult
-  public func willReturn(_ value: ReturnType) -> Self  
-
-
-

Stub a mocked method or property by returning a single value.

- -
-
-

Stubbing allows you to define custom behavior for mocks to perform.

- -
given(bird.doMethod()).willReturn(someValue)
-given(bird.property).willReturn(someValue)
-
-

Match exact or wildcard argument values when stubbing methods with parameters. Stubs added -later have a higher precedence, so add stubs with specific matchers last.

- -
given(bird.canChirp(volume: any())).willReturn(true)     // Any volume
-given(bird.canChirp(volume: notNil())).willReturn(true)  // Any non-nil volume
-given(bird.canChirp(volume: 10)).willReturn(true)        // Volume = 10
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
valueReturn​Type

A stubbed value to return.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will​Return(_:​transition:​) -

-
-
@discardableResult
-  public func willReturn(
-    _ provider: ImplementationProvider<DeclarationType, InvocationType, ReturnType>,
-    transition: TransitionStrategy = .onFirstNil
-  ) -> Self  
-
-
-

Stub a mocked method or property with an implementation provider.

- -
-
-

There are several preset implementation providers such as lastSetValue, which can be used -with property getters to automatically save and return values.

- -
given(bird.name).willReturn(lastSetValue(initial: ""))
-print(bird.name)  // Prints ""
-bird.name = "Ryan"
-print(bird.name)  // Prints "Ryan"
-
-

Implementation providers usually return multiple values, so when using chained stubbing it's -necessary to specify a transition strategy that defines when to go to the next stub.

- -
given(bird.name)
-  .willReturn(lastSetValue(initial: ""), transition: .after(2))
-  .willReturn("Sterling")
-
-print(bird.name)  // Prints ""
-bird.name = "Ryan"
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
providerImplementation​Provider<Declaration​Type, Invocation​Type, Return​Type>

An implementation provider that creates closure implementation stubs.

-
transitionTransition​Strategy

When to use the next implementation provider in the list.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
-

- will(_:​) -

-
-
@discardableResult
-  public func will(_ implementation: InvocationType) -> Self  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any()))
-  .will { volume in
-    return volume < 42
-  }
-
-

Stubs are type safe and work with inout and closure parameter types.

- -
protocol Bird {
-  func send(_ message: inout String)
-  func fly(callback: (Result) -> Void)
-}
-
-// Inout parameter type
-var message = "Hello!"
-given(bird.send(message: any())).will { message in
-  message = message.uppercased()
-}
-bird.send(&message)
-print(message)   // Prints "HELLO!"
-
-// Closure parameter type
-given(bird.fly(callback: any())).will { callback in
-  callback(.success)
-}
-bird.fly(callback: { result in
-  print(result)  // Prints Result.success
-})
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementationInvocation​Type

A closure implementation stub to evaluate.

-
-

Returns

-

The current stubbing manager which can be used to chain additional stubs.

- -
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/StubbingManager_TransitionStrategy-1e8f2be/index.html b/docs/0.18.0/StubbingManager_TransitionStrategy-1e8f2be/index.html deleted file mode 100644 index 9aa05ce5..00000000 --- a/docs/0.18.0/StubbingManager_TransitionStrategy-1e8f2be/index.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - Mockingbird - StubbingManager.TransitionStrategy - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Enumeration - Stubbing​Manager.​Transition​Strategy -

- -
-
public enum TransitionStrategy  
-
-
-

When to use the next chained implementation provider.

- -
-
- - -

Member Of

-
-
StubbingManager
-

An intermediate object used for stubbing declarations returned by given.

-
-
-
-
-

Enumeration Cases

- -
-

- after -

-
-
case after(_ times: Int) 
-
-
-

Go to the next provider after providing a certain number of implementations.

- -
-
-

This transition strategy is particularly useful for non-finite value providers such as -sequence and loopingSequence.

- -
given(bird.name)
-  .willReturn(loopingSequence(of: "Ryan", "Sterling"), transition: .after(3))
-  .willReturn("Andrew")
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Andrew"
-
-
-
-
-

- on​First​Nil -

-
-
case onFirstNil
-
-
-

Use the current provider until it provides a nil implementation.

- -
-
-

This transition strategy should be used for finite value providers like finiteSequence -that are nil terminated to indicate an invalidated state.

- -
given(bird.name)
-  .willReturn(finiteSequence(of: "Ryan", "Sterling"), transition: .onFirstNil)
-  .willReturn("Andrew")
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Andrew"
-
-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/SubscriptDeclaration-c38cdc6/index.html b/docs/0.18.0/SubscriptDeclaration-c38cdc6/index.html deleted file mode 100644 index 319fcf73..00000000 --- a/docs/0.18.0/SubscriptDeclaration-c38cdc6/index.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - Mockingbird - SubscriptDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Subscript​Declaration -

- -
-
public class SubscriptDeclaration: Declaration  
-
-
-

Mockable subscript declarations.

- -
-
- -
- - - - - - - - - -SubscriptDeclaration - - -SubscriptDeclaration - - - - - -Declaration - - -Declaration - - - - - -SubscriptDeclaration->Declaration - - - - - -SubscriptGetterDeclaration - - -SubscriptGetterDeclaration - - - - - -SubscriptGetterDeclaration->SubscriptDeclaration - - - - - -SubscriptSetterDeclaration - - -SubscriptSetterDeclaration - - - - - -SubscriptSetterDeclaration->SubscriptDeclaration - - - - - - - - -
-

Subclasses

-
-
SubscriptGetterDeclaration
-

Mockable subscript getter declarations.

-
-
SubscriptSetterDeclaration
-

Mockable subscript setter declarations.

-
-
-

Conforms To

-
-
Declaration
-

All mockable declaration types conform to this protocol.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/SubscriptGetterDeclaration-f0cef1c/index.html b/docs/0.18.0/SubscriptGetterDeclaration-f0cef1c/index.html deleted file mode 100644 index e7c169ae..00000000 --- a/docs/0.18.0/SubscriptGetterDeclaration-f0cef1c/index.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - Mockingbird - SubscriptGetterDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Subscript​Getter​Declaration -

- -
-
public class SubscriptGetterDeclaration: SubscriptDeclaration  
-
-
-

Mockable subscript getter declarations.

- -
-
- -
- - - - - - - - - -SubscriptGetterDeclaration - - -SubscriptGetterDeclaration - - - - - -SubscriptDeclaration - - -SubscriptDeclaration - - - - - -SubscriptGetterDeclaration->SubscriptDeclaration - - - - - - - - -
-

Superclass

-
-
SubscriptDeclaration
-

Mockable subscript declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/SubscriptSetterDeclaration-e2c7a0d/index.html b/docs/0.18.0/SubscriptSetterDeclaration-e2c7a0d/index.html deleted file mode 100644 index fdebf8d7..00000000 --- a/docs/0.18.0/SubscriptSetterDeclaration-e2c7a0d/index.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - Mockingbird - SubscriptSetterDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Subscript​Setter​Declaration -

- -
-
public class SubscriptSetterDeclaration: SubscriptDeclaration  
-
-
-

Mockable subscript setter declarations.

- -
-
- -
- - - - - - - - - -SubscriptSetterDeclaration - - -SubscriptSetterDeclaration - - - - - -SubscriptDeclaration - - -SubscriptDeclaration - - - - - -SubscriptSetterDeclaration->SubscriptDeclaration - - - - - - - - -
-

Superclass

-
-
SubscriptDeclaration
-

Mockable subscript declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/SwiftErrorBox-a9850af/index.html b/docs/0.18.0/SwiftErrorBox-a9850af/index.html deleted file mode 100644 index dc0587c9..00000000 --- a/docs/0.18.0/SwiftErrorBox-a9850af/index.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - Mockingbird - SwiftErrorBox - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Swift​Error​Box -

- -
-
@objc(MKBSwiftErrorBox) public class SwiftErrorBox: ErrorBox  
-
-
-

Holds Swift errors which are bridged to NSErrors.

- -
-
- -
- - - - - - - - - -SwiftErrorBox - - -SwiftErrorBox - - - - - -ErrorBox - - -ErrorBox - - - - - -SwiftErrorBox->ErrorBox - - - - - - - - -
-

Superclass

-
-
ErrorBox
-

Used to forward errors thrown from stubbed implementations to the Objective-C runtime.

-
-
-
-
-

Properties

- -
-

- error -

-
-
@objc public let error: Error
-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/TestFailer-f9088cc/index.html b/docs/0.18.0/TestFailer-f9088cc/index.html deleted file mode 100644 index 20fae3b1..00000000 --- a/docs/0.18.0/TestFailer-f9088cc/index.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - Mockingbird - TestFailer - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Protocol - Test​Failer -

- -
-
public protocol TestFailer  
-
-
-

A type that can handle test failures emitted by Mockingbird.

- -
- - - - -
-

Requirements

- -
-

- fail(message:​is​Fatal:​file:​line:​) -

-
-
func fail(message: String, isFatal: Bool, file: StaticString, line: UInt) 
-
-
-

Fail the current test case.

- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
messageString

A description of the failure.

-
is​FatalBool

If true, test case execution should not continue.

-
fileStatic​String

The file where the failure occurred.

-
lineUInt

The line in the file where the failure occurred.

-
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/ThrowingFunctionDeclaration-c3ccd38/index.html b/docs/0.18.0/ThrowingFunctionDeclaration-c3ccd38/index.html deleted file mode 100644 index cce5a387..00000000 --- a/docs/0.18.0/ThrowingFunctionDeclaration-c3ccd38/index.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - Mockingbird - ThrowingFunctionDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Throwing​Function​Declaration -

- -
-
public class ThrowingFunctionDeclaration: FunctionDeclaration  
-
-
-

Mockable throwing function declarations.

- -
-
- -
- - - - - - - - - -ThrowingFunctionDeclaration - - -ThrowingFunctionDeclaration - - - - - -FunctionDeclaration - - -FunctionDeclaration - - - - - -ThrowingFunctionDeclaration->FunctionDeclaration - - - - - - - - -
-

Superclass

-
-
FunctionDeclaration
-

Mockable function declarations.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/ValueProvider-242b058/index.html b/docs/0.18.0/ValueProvider-242b058/index.html deleted file mode 100644 index b0e617e2..00000000 --- a/docs/0.18.0/ValueProvider-242b058/index.html +++ /dev/null @@ -1,559 +0,0 @@ - - - - - - Mockingbird - ValueProvider - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Structure - Value​Provider -

- -
-
public struct ValueProvider  
-
-
-

Provides concrete instances of types.

- -
-
-

To return default values for unstubbed methods, use a ValueProvider with the initialized mock. -Mockingbird provides preset value providers which are guaranteed to be backwards compatible, -such as .standardProvider.

- -
let bird = mock(Bird.self)
-bird.useDefaultValues(from: .standardProvider)
-print(bird.name)  // Prints ""
-
-

You can create custom value providers by registering values for types.

- -
var valueProvider = ValueProvider()
-valueProvider.register("Ryan", for: String.self)
-
-bird.useDefaultValues(from: valueProvider)
-print(bird.name)  // Prints "Ryan"
-
-
- -
-

Initializers

- -
-

- init() -

-
-
public init()  
-
-
-

Create an empty value provider.

- -
-
-
-
-

Properties

- -
-

- collections​Provider -

-
-
static let collectionsProvider  
-
-
-

A value provider with default-initialized collections.

- -
-
-

https://developer.apple.com/documentation/foundation/collections

- -
-
-
-

- primitives​Provider -

-
-
static let primitivesProvider  
-
-
-

A value provider with primitive Swift types.

- -
-
-

https://developer.apple.com/documentation/foundation/numbers_data_and_basic_values

- -
-
-
-

- basics​Provider -

-
-
static let basicsProvider  
-
-
-

A value provider with basic number and data types that are not primitives.

- -
-
-

https://developer.apple.com/documentation/foundation/numbers_data_and_basic_values

- -
-
-
-

- strings​Provider -

-
-
static let stringsProvider  
-
-
-

A value provider with string and text types.

- -
-
-

https://developer.apple.com/documentation/foundation/strings_and_text

- -
-
-
-

- dates​Provider -

-
-
static let datesProvider  
-
-
-

A value provider with date and time types.

- -
-
-

https://developer.apple.com/documentation/foundation/dates_and_times

- -
-
-
-

- standard​Provider -

-
-
public static let standardProvider = ValueProvider() +
-    .collectionsProvider +
-    .primitivesProvider +
-    .basicsProvider +
-    .stringsProvider +
-    .datesProvider
-
-
-

All preset value providers.

- -
-
-
-
-

Methods

- -
-

- add(_:​) -

-
-
mutating public func add(_ other: Self)  
-
-
-

Adds the values from another value provider.

- -
-
-

Value providers can be composed by adding values from another provider. Values in the other -provider have precedence and will overwrite existing values in this provider.

- -
var valueProvider = ValueProvider()
-valueProvider.add(.standardProvider)
-print(valueProvider.provideValue(for: String.self))  // Prints ""
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
otherSelf

A value provider to combine.

-
-
-
-

- adding(_:​) -

-
-
public func adding(_ other: Self) -> Self  
-
-
-

Returns a new value provider containing the values from both providers.

- -
-
-

Value providers can be composed by adding values from another provider. Values in the added -provider have precendence over those in base provider.

- -
let valueProvider = ValueProvider.collectionsProvider.adding(.primitivesProvider)
-print(valueProvider.provideValue(for: [Bool].self))  // Prints []
-print(valueProvider.provideValue(for: Int.self))     // Prints 0
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
otherSelf

A value provider to combine.

-
-

Returns

-

A new value provider with the values of lhs and rhs.

- -
-
-

- register(_:​for:​) -

-
-
mutating public func register<K, V>(_ value: V, for type: K.Type)  
-
-
-

Register a value for a specific type.

- -
-
-

Create custom value providers by registering values for types.

- -
var valueProvider = ValueProvider()
-valueProvider.register("Ryan", for: String.self)
-print(valueProvider.provideValue(for: String.self))  // Prints "Ryan"
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
valueV

The value to register.

-
typeK.​Type

The type to register the value under. value must be of kind type.

-
-
-
-

- register​Type(_:​) -

-
-
mutating public func registerType<T: Providable>(_ type: T.Type = T.self)  
-
-
-

Register a Providable type used to provide values for generic types.

- -
-
-

Provide wildcard instances for generic types by conforming the base type to Providable and -registering the type. Non-wildcard instances have precedence over wildcard instances.

- -
extension Array: Providable {
-  public static func createInstance() -> Self? {
-    return Array()
-  }
-}
-
-var valueProvider = ValueProvider()
-valueProvider.registerType(Array<Any>.self)
-
-// All specializations of `Array` return an empty array
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints []
-print(valueProvider.provideValue(for: Array<Data>.self))    // Prints []
-
-// Register a non-wildcard instance of `Array<String>`
-valueProvider.register(["A", "B"], for: Array<String>.self)
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints ["A", "B"]
-print(valueProvider.provideValue(for: Array<Data>.self))    // Prints []
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

A Providable type to register.

-
-
-
-

- remove(_:​) -

-
-
mutating public func remove<T>(_ type: T.Type)  
-
-
-

Remove a registered value for a given type.

- -
-
-

Previously registered values can be removed from the top-level value provider. This does not -affect values provided by subproviders.

- -
var valueProvider = ValueProvider(from: .standardProvider)
-print(valueProvider.provideValue(for: String.self))  // Prints ""
-
-// Override the subprovider value
-valueProvider.register("Ryan", for: String.self)
-print(valueProvider.provideValue(for: String.self))  // Prints "Ryan"
-
-// Remove the registered value
-valueProvider.remove(String.self)
-print(valueProvider.provideValue(for: String.self))  // Prints ""
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The type to remove a previously registered value for.

-
-
-
-

- remove(_:​) -

-
-
mutating public func remove<T: Providable>(_ type: T.Type = T.self)  
-
-
-

Remove a registered Providable type.

- -
-
-

Previously registered wildcard instances for generic types can be removed from the top-level -value provider.

- -
var valueProvider = ValueProvider()
-
-valueProvider.registerType(Array<Any>.self)
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints []
-
-valueProvider.remove(Array<Any>.self)
-print(valueProvider.provideValue(for: Array<String>.self))  // Prints nil
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

A Providable type to remove.

-
-
-
-

- provide​Value(for:​) -

-
-
public func provideValue<T>(for type: T.Type = T.self) -> T?  
-
-
-

Provide a value for a given type.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

A type to provide a value for.

-
-

Returns

-

A concrete instance of the given type, or nil if no value could be provided.

- -
-
-
-

Operators

- -
-

- + -

-
-
static public func + (lhs: Self, rhs: Self) -> Self  
-
-
-

Returns a new value provider containing the values from both providers.

- -
-
-

Value providers can be composed by adding values from other providers. Values in the second -provider have precendence over those in first provider.

- -
let valueProvider = .collectionsProvider + .primitivesProvider
-print(valueProvider.provideValue(for: [Bool].self))  // Prints []
-print(valueProvider.provideValue(for: Int.self))     // Prints 0
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
lhsSelf

A value provider.

-
rhsSelf

A value provider.

-
-

Returns

-

A new value provider with the values of lhs and rhs.

- -
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/VariableDeclaration-f83ff6c/index.html b/docs/0.18.0/VariableDeclaration-f83ff6c/index.html deleted file mode 100644 index a141422d..00000000 --- a/docs/0.18.0/VariableDeclaration-f83ff6c/index.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - Mockingbird - VariableDeclaration - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Variable​Declaration -

- -
-
public class VariableDeclaration: Declaration  
-
-
-

Mockable variable declarations.

- -
-
- -
- - - - - - - - - -VariableDeclaration - - -VariableDeclaration - - - - - -Declaration - - -Declaration - - - - - -VariableDeclaration->Declaration - - - - - -PropertySetterDeclaration - - -PropertySetterDeclaration - - - - - -PropertySetterDeclaration->VariableDeclaration - - - - - -PropertyGetterDeclaration - - -PropertyGetterDeclaration - - - - - -PropertyGetterDeclaration->VariableDeclaration - - - - - - - - -
-

Subclasses

-
-
PropertyGetterDeclaration
-

Mockable property getter declarations.

-
-
PropertySetterDeclaration
-

Mockable property setter declarations.

-
-
-

Conforms To

-
-
Declaration
-

All mockable declaration types conform to this protocol.

-
-
-
- - - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/VerificationManager-4f75443/index.html b/docs/0.18.0/VerificationManager-4f75443/index.html deleted file mode 100644 index 81158dbc..00000000 --- a/docs/0.18.0/VerificationManager-4f75443/index.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - Mockingbird - VerificationManager - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Class - Verification​Manager -

- -
-
public class VerificationManager<InvocationType, ReturnType>  
-
-
-

An intermediate object used for verifying declarations returned by verify.

- -
- -
-

Methods

- -
-

- was​Called(_:​) -

-
-
public func wasCalled(_ countMatcher: CountMatcher)  
-
-
-

Verify that the mock received the invocation some number of times using a count matcher.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

A count matcher defining the number of invocations to verify.

-
-
-
-

- was​Called(_:​) -

-
-
public func wasCalled(_ times: Int = once)  
-
-
-

Verify that the mock received the invocation an exact number of times.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

The exact number of invocations expected.

-
-
-
-

- was​Never​Called() -

-
-
public func wasNeverCalled()  
-
-
-

Verify that the mock never received the invocation.

- -
-
-
-

- returning(_:​) -

-
-
public func returning(_ type: ReturnType.Type = ReturnType.self) -> Self  
-
-
-

Disambiguate methods overloaded by return type.

- -
-
-

Declarations for methods overloaded by return type cannot type inference and should be -disambiguated.

- -
protocol Bird {
-  func getMessage<T>() throws -> T    // Overloaded generically
-  func getMessage() throws -> String  // Overloaded explicitly
-  func getMessage() throws -> Data
-}
-
-verify(bird.send(any()))
-  .returning(String.self)
-  .wasCalled()
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeReturn​Type.​Type

The return type of the declaration to verify.

-
-
-
- - - -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/all.css b/docs/0.18.0/all.css deleted file mode 100644 index 68137abd..00000000 --- a/docs/0.18.0/all.css +++ /dev/null @@ -1 +0,0 @@ -:root{--system-red:#ff3b30;--system-orange:#ff9500;--system-yellow:#fc0;--system-green:#34c759;--system-teal:#5ac8fa;--system-blue:#007aff;--system-indigo:#5856d6;--system-purple:#af52de;--system-pink:#ff2d55;--system-gray:#8e8e93;--system-gray2:#aeaeb2;--system-gray3:#c7c7cc;--system-gray4:#d1d1d6;--system-gray5:#e5e5ea;--system-gray6:#f2f2f7;--label:#000;--secondary-label:#3c3c43;--tertiary-label:#48484a;--quaternary-label:#636366;--placeholder-text:#8e8e93;--link:#007aff;--separator:#e5e5ea;--opaque-separator:#c6c6c8;--system-fill:#787880;--secondary-system-fill:#787880;--tertiary-system-fill:#767680;--quaternary-system-fill:#747480;--system-background:#fff;--secondary-system-background:#f2f2f7;--tertiary-system-background:#fff;--secondary-system-grouped-background:#fff;--tertiary-system-grouped-background:#f2f2f7}@supports (color:color(display-p3 1 1 1)){:root{--system-red:color(display-p3 1 0.2314 0.1882);--system-orange:color(display-p3 1 0.5843 0);--system-yellow:color(display-p3 1 0.8 0);--system-green:color(display-p3 0.2039 0.7804 0.349);--system-teal:color(display-p3 0.3529 0.7843 0.9804);--system-blue:color(display-p3 0 0.4784 1);--system-indigo:color(display-p3 0.3451 0.3373 0.8392);--system-purple:color(display-p3 0.6863 0.3216 0.8706);--system-pink:color(display-p3 1 0.1765 0.3333);--system-gray:color(display-p3 0.5569 0.5569 0.5765);--system-gray2:color(display-p3 0.6824 0.6824 0.698);--system-gray3:color(display-p3 0.7804 0.7804 0.8);--system-gray4:color(display-p3 0.8196 0.8196 0.8392);--system-gray5:color(display-p3 0.898 0.898 0.9176);--system-gray6:color(display-p3 0.949 0.949 0.9686);--label:color(display-p3 0 0 0);--secondary-label:color(display-p3 0.2353 0.2353 0.2627);--tertiary-label:color(display-p3 0.2823 0.2823 0.2901);--quaternary-label:color(display-p3 0.4627 0.4627 0.5019);--placeholder-text:color(display-p3 0.5568 0.5568 0.5764);--link:color(display-p3 0 0.4784 1);--separator:color(display-p3 0.898 0.898 0.9176);--opaque-separator:color(display-p3 0.7765 0.7765 0.7843);--system-fill:color(display-p3 0.4706 0.4706 0.502);--secondary-system-fill:color(display-p3 0.4706 0.4706 0.502);--tertiary-system-fill:color(display-p3 0.4627 0.4627 0.502);--quaternary-system-fill:color(display-p3 0.4549 0.4549 0.502);--system-background:color(display-p3 1 1 1);--secondary-system-background:color(display-p3 0.949 0.949 0.9686);--tertiary-system-background:color(display-p3 1 1 1);--secondary-system-grouped-background:color(display-p3 1 1 1);--tertiary-system-grouped-background:color(display-p3 0.949 0.949 0.9686)}}:root{--large-title:600 32pt/39pt sans-serif;--title-1:600 26pt/32pt sans-serif;--title-2:600 20pt/25pt sans-serif;--title-3:500 18pt/23pt sans-serif;--headline:500 15pt/20pt sans-serif;--body:300 15pt/20pt sans-serif;--callout:300 14pt/19pt sans-serif;--subhead:300 13pt/18pt sans-serif;--footnote:300 12pt/16pt sans-serif;--caption-1:300 11pt/13pt sans-serif;--caption-2:300 11pt/13pt sans-serif}@media screen and (max-width:768px){:root{--large-title:600 27.2pt/33.15pt sans-serif;--title-1:600 22.1pt/27.2pt sans-serif;--title-2:600 17pt/21.25pt sans-serif;--title-3:500 15.3pt/19.55pt sans-serif;--headline:500 12.75pt/17pt sans-serif;--body:300 12.75pt/17pt sans-serif;--callout:300 11.9pt/16.15pt sans-serif;--subhead:300 11.05pt/15.3pt sans-serif;--footnote:300 10.2pt/13.6pt sans-serif;--caption-1:300 9.35pt/11.05pt sans-serif;--caption-2:300 9.35pt/11.05pt sans-serif}}:root{--icon-case:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%2389c5e6' height='90' rx='8' stroke='%236bb7e1' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M20.21 50c0-20.7 11.9-32.79 30.8-32.79 16 0 28.21 10.33 28.7 25.32H64.19C63.4 35 58.09 30.11 51 30.11c-8.79 0-14.37 7.52-14.37 19.82s5.54 20 14.41 20c7.08 0 12.22-4.66 13.23-12.09h15.52c-.74 15.07-12.43 25-28.78 25C32 82.81 20.21 70.72 20.21 50z' fill='%23fff'/%3E%3C/svg%3E");--icon-class:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%239b98e6' height='90' rx='8' stroke='%235856d6' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='m20.21 50c0-20.7 11.9-32.79 30.8-32.79 16 0 28.21 10.33 28.7 25.32h-15.52c-.79-7.53-6.1-12.42-13.19-12.42-8.79 0-14.37 7.52-14.37 19.82s5.54 20 14.41 20c7.08 0 12.22-4.66 13.23-12.09h15.52c-.74 15.07-12.43 25-28.78 25-19.01-.03-30.8-12.12-30.8-32.84z' fill='%23fff'/%3E%3C/svg%3E");--icon-enumeration:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%23eca95b' height='90' rx='8' stroke='%23e89234' stroke-miterlimit='10' stroke-width='4' width='90' x='5.17' y='5'/%3E%3Cpath d='M71.9 81.71H28.43V18.29H71.9v13H44.56v12.62h25.71v11.87H44.56V68.7H71.9z' fill='%23fff'/%3E%3C/svg%3E");--icon-extension:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%23eca95b' height='90' rx='8' stroke='%23e89234' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cg fill='%23fff'%3E%3Cpath d='M54.43 81.93H20.51V18.07h33.92v12.26H32.61v13.8h20.45v11.32H32.61v14.22h21.82zM68.74 74.58h-.27l-2.78 7.35h-7.28L64 69.32l-6-12.54h8l2.74 7.3h.27l2.76-7.3h7.64l-6.14 12.54 5.89 12.61h-7.64z'/%3E%3C/g%3E%3C/svg%3E");--icon-function:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%237ac673' height='90' rx='8' stroke='%235bb74f' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M24.25 75.66A5.47 5.47 0 0130 69.93c1.55 0 3.55.41 6.46.41 3.19 0 4.78-1.55 5.46-6.65l1.5-10.14h-9.34a6 6 0 110-12h11.1l1.09-7.27C47.82 23.39 54.28 17.7 64 17.7c6.69 0 11.74 1.77 11.74 6.64A5.47 5.47 0 0170 30.07c-1.55 0-3.55-.41-6.46-.41-3.14 0-4.73 1.51-5.46 6.65l-.78 5.27h11.44a6 6 0 11.05 12H55.6l-1.78 12.11C52.23 76.61 45.72 82.3 36 82.3c-6.7 0-11.75-1.77-11.75-6.64z' fill='%23fff'/%3E%3C/svg%3E");--icon-method:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%235a98f8' height='90' rx='8' stroke='%232974ed' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M70.61 81.71v-39.6h-.31l-15.69 39.6h-9.22l-15.65-39.6h-.35v39.6H15.2V18.29h18.63l16 41.44h.36l16-41.44H84.8v63.42z' fill='%23fff'/%3E%3C/svg%3E");--icon-property:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%2389c5e6' height='90' rx='8' stroke='%236bb7e1' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M52.31 18.29c13.62 0 22.85 8.84 22.85 22.46s-9.71 22.37-23.82 22.37H41v18.59H24.84V18.29zM41 51h7c6.85 0 10.89-3.56 10.89-10.2S54.81 30.64 48 30.64h-7z' fill='%23fff'/%3E%3C/svg%3E");--icon-protocol:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%23ff6682' height='90' rx='8' stroke='%23ff2d55' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cg fill='%23fff'%3E%3Cpath d='M46.28 18.29c11.84 0 20 8.66 20 21.71s-8.44 21.71-20.6 21.71H34.87v20H22.78V18.29zM34.87 51.34H43c6.93 0 11-4 11-11.29S50 28.8 43.07 28.8h-8.2zM62 57.45h8v4.77h.16c.84-3.45 2.54-5.12 5.17-5.12a5.06 5.06 0 011.92.35V65a5.69 5.69 0 00-2.39-.51c-3.08 0-4.66 1.74-4.66 5.12v12.1H62z'/%3E%3C/g%3E%3C/svg%3E");--icon-structure:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%23b57edf' height='90' rx='8' stroke='%239454c2' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M38.38 63c.74 4.53 5.62 7.16 11.82 7.16s10.37-2.81 10.37-6.68c0-3.51-2.73-5.31-10.24-6.76l-6.5-1.23C31.17 53.14 24.62 47 24.62 37.28c0-12.22 10.59-20.09 25.18-20.09 16 0 25.36 7.83 25.53 19.91h-15c-.26-4.57-4.57-7.29-10.42-7.29s-9.31 2.63-9.31 6.37c0 3.34 2.9 5.18 9.8 6.5l6.5 1.23C70.46 46.51 76.61 52 76.61 62c0 12.74-10 20.83-26.72 20.83-15.82 0-26.28-7.3-26.5-19.78z' fill='%23fff'/%3E%3C/svg%3E");--icon-typealias:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%237ac673' height='90' rx='8' stroke='%235bb74f' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M42 81.71V31.3H24.47v-13h51.06v13H58v50.41z' fill='%23fff'/%3E%3C/svg%3E");--icon-variable:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Crect fill='%237ac673' height='90' rx='8' stroke='%235bb74f' stroke-miterlimit='10' stroke-width='4' width='90' x='5' y='5'/%3E%3Cpath d='M39.85 81.71L19.63 18.29H38l12.18 47.64h.35L62.7 18.29h17.67L60.15 81.71z' fill='%23fff'/%3E%3C/svg%3E")}body,button,input,select,textarea{-moz-font-feature-settings:"kern";-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;direction:ltr;font-synthesis:none;text-align:left}h1:first-of-type,h2:first-of-type,h3:first-of-type,h4:first-of-type,h5:first-of-type,h6:first-of-type{margin-top:0}h1 code,h2 code,h3 code,h4 code,h5 code,h6 code{font-family:inherit;font-weight:inherit}h1 img,h2 img,h3 img,h4 img,h5 img,h6 img{margin:0 .5em .2em 0;vertical-align:middle;display:inline-block}h1+*,h2+*,h3+*,h4+*,h5+*,h6+*{margin-top:.8em}img+h1{margin-top:.5em}img+h1,img+h2,img+h3,img+h4,img+h5,img+h6{margin-top:.3em}:is(h1,h2,h3,h4,h5,h6)+:is(h1,h2,h3,h4,h5,h6){margin-top:.4em}:matches(h1,h2,h3,h4,h5,h6)+:matches(h1,h2,h3,h4,h5,h6){margin-top:.4em}:is(p,ul,ol)+:is(h1,h2,h3,h4,h5,h6){margin-top:1.6em}:matches(p,ul,ol)+:matches(h1,h2,h3,h4,h5,h6){margin-top:1.6em}:is(p,ul,ol)+*{margin-top:.8em}:matches(p,ul,ol)+*{margin-top:.8em}ol,ul{margin-left:1.17647em}:matches(ul,ol) :matches(ul,ol){margin-bottom:0;margin-top:0}nav h2{color:#3c3c43;color:var(--secondary-label);font-size:1rem;font-feature-settings:"c2sc";font-variant:small-caps;font-weight:600;text-transform:uppercase}nav ol,nav ul{margin:0;list-style:none}nav li li{font-size:smaller}a:link,a:visited{text-decoration:none}a:hover{text-decoration:underline}a:active{text-decoration:none}b,strong{font-weight:600}.discussion,.summary{font:300 14pt/19pt sans-serif;font:var(--callout)}article>.discussion{margin-bottom:2em}.discussion .highlight{padding:1em;text-indent:0}cite,dfn,em,i{font-style:italic}:matches(h1,h2,h3) sup{font-size:.4em}sup a{color:inherit;vertical-align:inherit}sup a:hover{color:#007aff;color:var(--link);text-decoration:none}sub{line-height:1}abbr{border:0}:lang(ja),:lang(ko),:lang(th),:lang(zh){font-style:normal}:lang(ko){word-break:keep-all}form fieldset{margin:1em auto;max-width:450px;width:95%}form label{display:block;font-size:1em;font-weight:400;line-height:1.5em;margin-bottom:14px;position:relative;width:100%}input[type=email],input[type=number],input[type=password],input[type=tel],input[type=text],input[type=url],textarea{border-radius:4px;border:1px solid #e5e5ea;border:1px solid var(--separator);color:#333;font-family:inherit;font-size:100%;font-weight:400;height:34px;margin:0;padding:0 1em;position:relative;vertical-align:top;width:100%;z-index:1}input[type=email],input [type=email]:focus,input[type=number],input [type=number]:focus,input[type=password],input [type=password]:focus,input[type=tel],input [type=tel]:focus,input[type=text],input [type=text]:focus,input[type=url],input [type=url]:focus,textarea,textarea:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none}input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,textarea:focus{border-color:#08c;box-shadow:0 0 0 3px rgba(0,136,204,.3);outline:0;z-index:9}input[type=email]:-moz-read-only,input[type=number]:-moz-read-only,input[type=password]:-moz-read-only,input[type=tel]:-moz-read-only,input[type=text]:-moz-read-only,input[type=url]:-moz-read-only,textarea:-moz-read-only{background:none;border:none;box-shadow:none;padding-left:0}input[type=email]:read-only,input[type=number]:read-only,input[type=password]:read-only,input[type=tel]:read-only,input[type=text]:read-only,input[type=url]:read-only,textarea:read-only{background:none;border:none;box-shadow:none;padding-left:0}::-webkit-input-placeholder{color:#8e8e93;color:var(--placeholder-text)}::-moz-placeholder{color:#8e8e93;color:var(--placeholder-text)}:-ms-input-placeholder{color:#8e8e93;color:var(--placeholder-text)}::-ms-input-placeholder{color:#8e8e93;color:var(--placeholder-text)}::placeholder{color:#8e8e93;color:var(--placeholder-text)}textarea{-webkit-overflow-scrolling:touch;line-height:1.4737;min-height:134px;overflow-y:auto;resize:vertical;transform:translateZ(0)}textarea,textarea:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none}select{background:transparent;border-radius:4px;border:none;cursor:pointer;font-family:inherit;font-size:1em;height:34px;margin:0;padding:0 1em;width:100%}select,select:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none}select:focus{border-color:#08c;box-shadow:0 0 0 3px rgba(0,136,204,.3);outline:0;z-index:9}input[type=file]{background:#fafafa;border-radius:4px;color:#333;cursor:pointer;font-family:inherit;font-size:100%;height:34px;margin:0;padding:6px 1em;position:relative;vertical-align:top;width:100%;z-index:1}input[type=file]:focus{border-color:#08c;outline:0;box-shadow:0 0 0 3px rgba(0,136,204,.3);z-index:9}button,button:focus,input[type=file]:focus,input[type=file]:focus:focus,input[type=reset],input[type=reset]:focus,input[type=submit],input[type=submit]:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none}:matches(button,input[type=reset],input[type=submit]){background-color:#e3e3e3;background:linear-gradient(#fff,#e3e3e3);border-color:#d6d6d6;color:#0070c9}:matches(button,input[type=reset],input[type=submit]):hover{background-color:#eee;background:linear-gradient(#fff,#eee);border-color:#d9d9d9}:matches(button,input[type=reset],input[type=submit]):active{background-color:#dcdcdc;background:linear-gradient(#f7f7f7,#dcdcdc);border-color:#d0d0d0}:matches(button,input[type=reset],input[type=submit]):disabled{background-color:#e3e3e3;background:linear-gradient(#fff,#e3e3e3);border-color:#d6d6d6;color:#0070c9}body{background:var(--system-grouped-background);color:#000;color:var(--label);font-family:ui-system,-apple-system,BlinkMacSystemFont,sans-serif;font:300 15pt/20pt sans-serif;font:var(--body)}h1{font:600 32pt/39pt sans-serif;font:var(--large-title)}h2{font:600 20pt/25pt sans-serif;font:var(--title-2)}h3{font:500 18pt/23pt sans-serif;font:var(--title-3)}[role=article]>h3,h4,h5,h6{font:500 15pt/20pt sans-serif;font:var(--headline)}.summary+h4,.summary+h5,.summary+h6{margin-top:2em;margin-bottom:0}a{color:#007aff;color:var(--link)}label{font:300 14pt/19pt sans-serif;font:var(--callout)}input,label{display:block}input{margin-bottom:1em}hr{border:none;border-top:1px solid #e5e5ea;border-top:1px solid var(--separator);margin:1em 0}table{width:100%;font:300 11pt/13pt sans-serif;font:var(--caption-1);caption-side:bottom;margin-bottom:2em}td,th{padding:0 1em}th{font-weight:600;text-align:left}thead th{border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator)}tr:last-of-type td,tr:last-of-type th{border-bottom:none}td,th{border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator);color:#3c3c43;color:var(--secondary-label)}caption{color:#48484a;color:var(--tertiary-label);font:300 11pt/13pt sans-serif;font:var(--caption-2);margin-top:2em;text-align:left}.graph text,[role=article]>h3,code,dl dt[class],nav li[class]{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-weight:300}.graph>polygon{display:none}.graph text{fill:currentColor!important}.graph ellipse,.graph path,.graph polygon,.graph rect{stroke:currentColor!important}body{width:90vw;max-width:1280px;margin:1em auto}body>header{font:600 26pt/32pt sans-serif;font:var(--title-1);padding:.5em 0}body>header a{color:#000;color:var(--label)}body>header span{font-weight:400}body>header sup{text-transform:uppercase;font-size:small;font-weight:300;letter-spacing:.1ch}body>footer,body>header sup{color:#3c3c43;color:var(--secondary-label)}body>footer{clear:both;padding:1em 0;font:300 11pt/13pt sans-serif;font:var(--caption-1)}@media screen and (max-width:768px){body>nav{display:none}}main,nav{overflow-x:auto}main{background:#fff;background:var(--system-background);border-radius:8px;padding:0}main section{border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator);margin-bottom:2em;padding-bottom:1em}main section:last-of-type{border-bottom:none;margin-bottom:0}nav{float:right;margin-left:1em;max-height:100vh;overflow:auto;padding:0 1em 3em;position:-webkit-sticky;position:sticky;top:1em;width:20vw}nav a{color:#3c3c43;color:var(--secondary-label)}nav ul a{color:#48484a;color:var(--tertiary-label)}nav ol,nav ul{padding:0}nav ul{font:300 14pt/19pt sans-serif;font:var(--callout);margin-bottom:1em}nav ol>li>a{display:block;font-size:smaller;font:500 15pt/20pt sans-serif;font:var(--headline);margin:.5em 0}nav li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}blockquote{--link:var(--secondary-label);border-left:4px solid #e5e5ea;border-left:4px solid var(--separator);color:#3c3c43;color:var(--secondary-label);font-size:smaller;margin-left:0;padding-left:2em}blockquote a{text-decoration:underline}article{padding:2em 0 1em}article>.summary{border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator);margin-bottom:2em;padding-bottom:1em}article>.summary:last-child{border-bottom:none}.parameters th{text-align:right}.parameters td{color:#3c3c43;color:var(--secondary-label)}.parameters th+td{text-align:center}dl{display:inline-block;margin-top:0}dt{font:500 15pt/20pt sans-serif;font:var(--headline)}dd{margin-left:2em;margin-bottom:1em}dd p{margin-top:0}.highlight{background:#f2f2f7;background:var(--secondary-system-background);border-radius:8px;font-size:smaller;margin-bottom:2em;overflow-x:auto;padding:1em 1em 1em 3em;text-indent:-2em}.highlight .p{white-space:nowrap}.highlight .placeholder{color:#000;color:var(--label)}.highlight a{text-decoration:underline;color:#8e8e93;color:var(--placeholder-text)}.highlight .attribute,.highlight .keyword,.highlight .literal{color:#af52de;color:var(--system-purple)}.highlight .number{color:#007aff;color:var(--system-blue)}.highlight .declaration{color:#5ac8fa;color:var(--system-teal)}.highlight .type{color:#5856d6;color:var(--system-indigo)}.highlight .directive{color:#ff9500;color:var(--system-orange)}.highlight .comment{color:#8e8e93;color:var(--system-gray)}main summary:hover{text-decoration:underline}figure{margin:2em 0;padding:1em 0}figure svg{max-width:100%;height:auto!important;margin:0 auto;display:block}@media screen and (max-width:768px){#relationships figure{display:none}}h1 small{font-size:.5em;line-height:1.5;display:block;font-weight:400;color:#636366;color:var(--quaternary-label)}dd code,li code,p code{font-size:smaller;color:#3c3c43;color:var(--secondary-label)}a code{text-decoration:underline}dl dt[class],nav li[class],section>[role=article][class]{background-image:var(--background-image);background-size:1em;background-repeat:no-repeat;background-position:left .125em}nav li[class]{background-position:left .25em}section>[role=article]{margin-bottom:1em;padding-bottom:1em;border-bottom:1px solid #e5e5ea;border-bottom:1px solid var(--separator);padding-left:2em}section>[role=article]:last-of-type{margin-bottom:0;padding-bottom:0;border-bottom:none}dl dt[class],nav li[class]{list-style:none;text-indent:2em;margin-bottom:.5em}nav li[class]{text-indent:1.5em;margin-bottom:1em}.case,.enumeration_case{--background-image:var(--icon-case);--link:var(--system-teal)}.class{--background-image:var(--icon-class);--link:var(--system-indigo)}.enumeration{--background-image:var(--icon-enumeration)}.enumeration,.extension{--link:var(--system-orange)}.extension{--background-image:var(--icon-extension)}.function{--background-image:var(--icon-function);--link:var(--system-green)}.initializer,.method{--background-image:var(--icon-method);--link:var(--system-blue)}.property{--background-image:var(--icon-property);--link:var(--system-teal)}.protocol{--background-image:var(--icon-protocol);--link:var(--system-pink)}.structure{--background-image:var(--icon-structure);--link:var(--system-purple)}.typealias{--background-image:var(--icon-typealias)}.typealias,.variable{--link:var(--system-green)}.variable{--background-image:var(--icon-variable)}.unknown{--link:var(--quaternary-label);color:#007aff;color:var(--link)} \ No newline at end of file diff --git a/docs/0.18.0/any(_:)-04561d1/index.html b/docs/0.18.0/any(_:)-04561d1/index.html deleted file mode 100644 index 854b7766..00000000 --- a/docs/0.18.0/any(_:)-04561d1/index.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - Mockingbird - any(_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -any(_:​) -

- -
-
public func any<T: NSObjectProtocol>(_ type: T.Type = T.self) -> T  
-
-
-

Matches all Objective-C object argument values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the wildcard argument matcher any as a type safe placeholder for matching any argument -value.

- -
// Protocol referencing Obj-C object types
-protocol Bird {
-  func canChirp(volume: NSNumber) -> Bool
-}
-
-given(bird.canChirp(volume: any())).willReturn(true)
-print(bird.canChirp(volume: 10))  // Prints "true"
-verify(bird.canChirp(volume: any())).wasCalled()
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
// Protocol referencing Obj-C object types
-protocol Bird {
-  func send<T: NSObject>(_ message: T)  // Overloaded generically
-  func send(_ message: NSString)        // Overloaded explicitly
-  func send(_ message: NSData)
-}
-
-given(bird.send(any(NSString.self))).will { print($0) }
-
-bird.send("Hello")  // Prints "Hello"
-
-verify(bird.send(any(NSString.self))).wasCalled()
-verify(bird.send(any(NSData.self))).wasNeverCalled()
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/any(_:)-57c9fd0/index.html b/docs/0.18.0/any(_:)-57c9fd0/index.html deleted file mode 100644 index ee8d8ad5..00000000 --- a/docs/0.18.0/any(_:)-57c9fd0/index.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - Mockingbird - any(_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -any(_:​) -

- -
-
public func any<T>(_ type: T.Type = T.self) -> T  
-
-
-

Matches all argument values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the wildcard argument matcher any as a type safe placeholder for matching any argument -value.

- -
given(bird.canChirp(volume: any())).willReturn(true)
-print(bird.canChirp(volume: 10))  // Prints "true"
-verify(bird.canChirp(volume: any())).wasCalled()
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ message: T)    // Overloaded generically
-  func send(_ message: String)  // Overloaded explicitly
-  func send(_ message: Data)
-}
-
-given(bird.send(any(String.self))).will { print($0) }
-
-bird.send("Hello")  // Prints "Hello"
-
-verify(bird.send(any(String.self))).wasCalled()
-verify(bird.send(any(Data.self))).wasNeverCalled()
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/any(_:containing:)-095611c/index.html b/docs/0.18.0/any(_:containing:)-095611c/index.html deleted file mode 100644 index 06e93823..00000000 --- a/docs/0.18.0/any(_:containing:)-095611c/index.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - Mockingbird - any(_:containing:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -any(_:​containing:​) -

- -
-
public func any<K, V>(_ type: Dictionary<K, V>.Type = Dictionary<K, V>.self,
-                      containing values: V...) -> Dictionary<K, V>  
-
-
-

Matches any dictionary containing all of the values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(containing:) to match dictionaries that contain all specified -values.

- -
protocol Bird {
-  func send(_ messages: [UUID: String])
-}
-
-given(bird.send(any(containing: "Hi", "Hello")))
-  .will { print($0) }
-
-bird.send([
-  UUID(): "Hi",
-  UUID(): "Hello",
-])  // Prints ["Hi", "Hello"]
-
-bird.send([
-  UUID(): "Hi",
-  UUID(): "Bye",
-])  // Error: Missing stubbed implementation
-
-bird.send([
-  UUID(): "Bye",
-]) // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [UUID: T])    // Overloaded generically
-  func send(_ messages: [UUID: String])  // Overloaded explicitly
-  func send(_ messages: [UUID: Data])
-}
-
-given(bird.send(any([UUID: String].self, containing: "Hi", "Hello")))
-  .will { print($0) }
-
-bird.send([
-  UUID(): "Hi",
-  UUID(): "Hello",
-])  // Prints ["Hi", "Hello"]
-
-bird.send([
-  UUID(): Data([1]),
-  UUID(): Data([2]),
-])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeDictionary<K, V>.​Type

The parameter type used to disambiguate overloaded methods.

-
valuesV

A set of values that must all exist in the dictionary to match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/any(_:containing:)-44dd020/index.html b/docs/0.18.0/any(_:containing:)-44dd020/index.html deleted file mode 100644 index caeca1b1..00000000 --- a/docs/0.18.0/any(_:containing:)-44dd020/index.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - Mockingbird - any(_:containing:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -any(_:​containing:​) -

- -
-
public func any<T: Collection>(_ type: T.Type = T.self, containing values: T.Element...) -> T  
-
-
-

Matches any collection containing all of the values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(containing:) to match collections that contain all specified -values.

- -
protocol Bird {
-  func send(_ messages: [String])
-}
-
-given(bird.send(any(containing: "Hi", "Hello")))
-  .will { print($0) }
-
-bird.send(["Hi", "Hello"])  // Prints ["Hi", "Hello"]
-bird.send(["Hi", "Bye"])    // Error: Missing stubbed implementation
-bird.send(["Bye"])          // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [T])    // Overloaded generically
-  func send(_ messages: [String])  // Overloaded explicitly
-  func send(_ messages: [Data])
-}
-
-given(bird.send(any([String].self, containing: ["Hi", "Hello"])))
-  .will { print($0) }
-
-bird.send(["Hi", "Hello"])       // Prints ["Hi", "Hello"]
-bird.send([Data([1]), Data(2)])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
valuesT.​Element

A set of values that must all exist in the collection to match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/any(_:count:)-dbbc1fd/index.html b/docs/0.18.0/any(_:count:)-dbbc1fd/index.html deleted file mode 100644 index a0970d18..00000000 --- a/docs/0.18.0/any(_:count:)-dbbc1fd/index.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - Mockingbird - any(_:count:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -any(_:​count:​) -

- -
-
public func any<T: Collection>(_ type: T.Type = T.self, count countMatcher: CountMatcher) -> T  
-
-
-

Matches any collection with a specific number of elements.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(count:) to match collections with a specific number of elements.

- -
protocol Bird {
-  func send(_ messages: [String])
-}
-
-given(bird.send(any(count: 2))).will { print($0) }
-
-bird.send(["Hi", "Hello"])  // Prints ["Hi", "Hello"]
-bird.send(["Hi"])           // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [T])    // Overloaded generically
-  func send(_ messages: [String])  // Overloaded explicitly
-  func send(_ messages: [Data])
-}
-
-given(bird.send(any([String].self, count: 2)))
-  .will { print($0) }
-
-bird.send(["Hi", "Hello"])         // Prints ["Hi", "Hello"]
-bird.send([Data([1]), Data([2])])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
count​MatcherCount​Matcher

A count matcher defining the number of acceptable elements in the collection.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/any(_:keys:)-8ca4847/index.html b/docs/0.18.0/any(_:keys:)-8ca4847/index.html deleted file mode 100644 index 8aefff09..00000000 --- a/docs/0.18.0/any(_:keys:)-8ca4847/index.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - Mockingbird - any(_:keys:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -any(_:​keys:​) -

- -
-
public func any<K, V>(_ type: Dictionary<K, V>.Type = Dictionary<K, V>.self,
-                      keys: K...) -> Dictionary<K, V>  
-
-
-

Matches any dictionary containing all of the keys.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(keys:) to match dictionaries that contain all specified keys.

- -
protocol Bird {
-  func send(_ messages: [UUID: String])
-}
-
-let messageId1 = UUID()
-let messageId2 = UUID()
-given(bird.send(any(keys: messageId1, messageId2)))
-  .will { print($0) }
-
-bird.send([
-  messageId1: "Hi",
-  messageId2: "Hello",
-])  // Prints ["Hi", "Hello"]
-
-bird.send([
-  UUID(): "Hi",
-  UUID(): "Hello",
-])  // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [UUID: T])    // Overloaded generically
-  func send(_ messages: [UUID: String])  // Overloaded explicitly
-  func send(_ messages: [UUID: Data])
-}
-
-let messageId1 = UUID()
-let messageId2 = UUID()
-given(bird.send(any([UUID: String].self, keys: messageId1, messageId2)))
-  .will { print($0) }
-
-bird.send([
-  messageId1: "Hi",
-  messageId2: "Hello",
-])  // Prints ["Hi", "Hello"]
-
-bird.send([
-  messageId1: Data([1]),
-  messageId2: Data([2]),
-])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeDictionary<K, V>.​Type

The parameter type used to disambiguate overloaded methods.

-
keysK

A set of keys that must all exist in the dictionary to match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/any(_:of:)-0eb9154/index.html b/docs/0.18.0/any(_:of:)-0eb9154/index.html deleted file mode 100644 index 03830689..00000000 --- a/docs/0.18.0/any(_:of:)-0eb9154/index.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - Mockingbird - any(_:of:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -any(_:​of:​) -

- -
-
public func any<T: AnyObject>(_ type: T.Type = T.self, of objects: T...) -> T  
-
-
-

Matches argument values identical to any of the provided values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(of:) to match objects identical to one or more of the specified -values.

- -
// Reference type
-class Location {
-  let name: String
-  init(name: String) { self.name = name }
-}
-
-protocol Bird {
-  func fly(to location: Location)
-}
-
-let home = Location(name: "Home")
-let work = Location("Work")
-given(bird.fly(to: any(of: home, work)))
-  .will { print($0.name) }
-
-bird.fly(to: home)  // Prints "Home"
-bird.fly(to: work)  // Prints "Work"
-
-let hawaii = Location("Hawaii")
-bird.fly(to: hawaii))  // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func fly<T>(to location: T)        // Overloaded generically
-  func fly(to location: Location)    // Overloaded explicitly
-  func fly(to locationName: String)
-}
-
-given(bird.fly(to: any(String.self, of: "Home", "Work")))
-  .will { print($0) }
-
-bird.send("Home")    // Prints "Hi"
-bird.send("Work")    // Prints "Hello"
-bird.send("Hawaii")  // Error: Missing stubbed implementation
-
- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
objectsT

A set of non-equatable objects that should result in a match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/any(_:of:)-64e400e/index.html b/docs/0.18.0/any(_:of:)-64e400e/index.html deleted file mode 100644 index f63d8ba1..00000000 --- a/docs/0.18.0/any(_:of:)-64e400e/index.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - Mockingbird - any(_:of:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -any(_:​of:​) -

- -
-
public func any<T: Equatable>(_ type: T.Type = T.self, of objects: T...) -> T  
-
-
-

Matches argument values equal to any of the provided values.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(of:) to match Equatable argument values equal to one or more of -the specified values.

- -
given(bird.canChirp(volume: any(of: 1, 3)))
-  .willReturn(true)
-
-given(bird.canChirp(volume: any(of: 2, 4)))
-  .willReturn(false)
-
-print(bird.canChirp(volume: 1))  // Prints "true"
-print(bird.canChirp(volume: 2))  // Prints "false"
-print(bird.canChirp(volume: 3))  // Prints "true"
-print(bird.canChirp(volume: 4))  // Prints "false"
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ message: T)    // Overloaded generically
-  func send(_ message: String)  // Overloaded explicitly
-  func send(_ message: Data)
-}
-
-given(bird.send(any(String.self, of: "Hi", "Hello")))
-  .will { print($0) }
-
-bird.send("Hi")     // Prints "Hi"
-bird.send("Hello")  // Prints "Hello"
-bird.send("Bye")    // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
objectsT

A set of equatable objects that should result in a match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/any(_:where:)-aeec51b/index.html b/docs/0.18.0/any(_:where:)-aeec51b/index.html deleted file mode 100644 index 951573a3..00000000 --- a/docs/0.18.0/any(_:where:)-aeec51b/index.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - Mockingbird - any(_:where:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -any(_:​where:​) -

- -
-
public func any<T>(_ type: T.Type = T.self, where predicate: @escaping (_ value: T) -> Bool) -> T  
-
-
-

Matches any argument values where the predicate returns true.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(where:) to match objects with custom equality logic. This is -particularly useful for parameter types that do not conform to Equatable.

- -
// Value type not explicitly conforming to `Equatable`
-struct Fruit {
-  let size: Int
-}
-
-protocol Bird {
-  func eat(_ fruit: Fruit)
-}
-
-given(bird.eat(any(where: { $0.size < 100 })))
-  .will { print($0.size) }
-
-let apple = Fruit(size: 42)
-bird.eat(apple)  // Prints "42"
-
-let pear = Fruit(size: 9001)
-bird.eat(pear)   // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func eat<T>(_ object: T)     // Overloaded generically
-  func eat(_ fruit: Fruit)     // Overloaded explicitly
-  func eat(_ fruits: [Fruit])
-}
-
-given(bird.eat(any(Fruit.self, where: { $0.size < 100 })))
-  .will { print($0) }
-
-let apple = Fruit(size: 42)
-bird.eat(apple)    // Prints "42"
-bird.eat("Apple")  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
predicate@escaping (_ value:​ T) -> Bool

A closure that takes a value and returns true if it represents a match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/any(_:where:)-faad7a5/index.html b/docs/0.18.0/any(_:where:)-faad7a5/index.html deleted file mode 100644 index 2d758203..00000000 --- a/docs/0.18.0/any(_:where:)-faad7a5/index.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - Mockingbird - any(_:where:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -any(_:​where:​) -

- -
-
public func any<T: NSObjectProtocol>(_ type: T.Type = T.self,
-                                     where predicate: @escaping (_ value: T) -> Bool) -> T  
-
-
-

Matches any Objective-C object argument values where the predicate returns true.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher any(where:) to match objects with custom equality logic. This is -particularly useful for parameter types that do not conform to Equatable.

- -
// Non-equatable class subclassing `NSObject`
-class Fruit: NSObject {
-  let size: Int
-  init(size: Int) { self.size = size }
-}
-
-protocol Bird {
-  func eat(_ fruit: Fruit)
-}
-
-given(bird.eat(any(where: { $0.size < 100 })))
-  .will { print($0.size) }
-
-let apple = Fruit(size: 42)
-bird.eat(apple)  // Prints "42"
-
-let pear = Fruit(size: 9001)
-bird.eat(pear)   // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func eat<T: NSObject>(_ object: T)  // Overloaded generically
-  func eat(_ fruit: Fruit)            // Overloaded explicitly
-  func eat(_ fruits: [Fruit])
-}
-
-given(bird.eat(any(Fruit.self, where: { $0.size < 100 })))
-  .will { print($0) }
-
-let apple = Fruit(size: 42)
-bird.eat(apple)    // Prints "42"
-bird.eat("Apple")  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
predicate@escaping (_ value:​ T) -> Bool

A closure that takes a value and returns true if it represents a match.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/arg(_:at:)-e5b4d4c/index.html b/docs/0.18.0/arg(_:at:)-e5b4d4c/index.html deleted file mode 100644 index 3cfcee54..00000000 --- a/docs/0.18.0/arg(_:at:)-e5b4d4c/index.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - Mockingbird - arg(_:at:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -arg(_:​at:​) -

- -
-
public func arg<T>(_ matcher: @autoclosure () -> T, at position: Int) -> T  
-
-
-

Specifies the argument position for an argument matcher.

- -
-
-

You must provide an explicit argument position when using argument matchers on an Objective-C -method with multiple value type parameters.

- -
@objc class Bird: NSObject {
-  @objc dynamic func chirp(volume: Int, duration: Int) {}
-}
-
-given(bird.chirp(volume: arg(any(), at: 0),
-                 duration: arg(any(), at: 1))).will {
-  print($0 as! Int, $1 as! Int)
-}
-
-bird.chirp(42, 9001)  // Prints 42, 9001
-
-

This is equivalent to the verbose form of declaring an argument position.

- -
given(bird.chirp(volume: firstArg(any()),
-                 duration: secondArg(any()))).will {
-  print($0 as! Int, $1 as! Int)
-}
-
- -
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
matcher@autoclosure () -> T

An argument matcher.

-
positionInt

The position of the argument in the mocked declaration.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/around(_:tolerance:)-00be404/index.html b/docs/0.18.0/around(_:tolerance:)-00be404/index.html deleted file mode 100644 index 5ec690bd..00000000 --- a/docs/0.18.0/around(_:tolerance:)-00be404/index.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - Mockingbird - around(_:tolerance:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -around(_:​tolerance:​) -

- -
-
public func around<T: FloatingPoint>(_ value: T, tolerance: T) -> T  
-
-
-

Matches floating point arguments within some tolerance.

- -
-
-

Mathematical operations on floating point numbers can cause loss of precision. Fuzzily match floating point arguments instead of using exact values to increase the robustness of tests.

- -
protocol Bird {
-  func canChirp(volume: Double) -> Bool
-}
-
-given(bird.canChirp(volume: around(42.0, tolerance: 0.1)))
-  .willReturn(true)
-
-print(bird.canChirp(volume: 42.0))     // Prints "true"
-print(bird.canChirp(volume: 42.0999))  // Prints "true"
-print(bird.canChirp(volume: 42.1))     // Prints "false"
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
valueT

The expected value.

-
toleranceT

Only matches if the absolute difference is strictly less than this value.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/atLeast(_:)-898a2b0/index.html b/docs/0.18.0/atLeast(_:)-898a2b0/index.html deleted file mode 100644 index ce4dd68e..00000000 --- a/docs/0.18.0/atLeast(_:)-898a2b0/index.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - Mockingbird - atLeast(_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -at​Least(_:​) -

- -
-
public func atLeast(_ times: Int) -> CountMatcher  
-
-
-

Matches greater than or equal to some count.

- -
-
-

The atLeast count matcher can be used to verify that the actual number of invocations received -by a mock is greater than or equal to the expected number of invocations.

- -
// Given two invocations (n = 2)
-bird.fly()
-bird.fly()
-
-verify(bird.fly()).wasCalled(atLeast(1))  // Passes
-verify(bird.fly()).wasCalled(atLeast(2))  // Passes
-verify(bird.fly()).wasCalled(atLeast(3))  // Fails (n < 3)
-
-

You can combine count matchers with adverbial counts for improved readability.

- -
verify(bird.fly()).wasCalled(atLeast(once))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An inclusive lower bound.

-
-

Returns

-

A count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/atMost(_:)-3e1c32b/index.html b/docs/0.18.0/atMost(_:)-3e1c32b/index.html deleted file mode 100644 index 372d1d62..00000000 --- a/docs/0.18.0/atMost(_:)-3e1c32b/index.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - Mockingbird - atMost(_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -at​Most(_:​) -

- -
-
public func atMost(_ times: Int) -> CountMatcher  
-
-
-

Matches less than or equal to some count.

- -
-
-

The atMost count matcher can be used to verify that the actual number of invocations received -by a mock is less than or equal to the expected number of invocations.

- -
// Given two invocations (n = 2)
-bird.fly()
-bird.fly()
-
-verify(bird.fly()).wasCalled(atMost(1))  // Fails (n > 1)
-verify(bird.fly()).wasCalled(atMost(2))  // Passes
-verify(bird.fly()).wasCalled(atMost(3))  // Passes
-
-

You can combine count matchers with adverbial counts for improved readability.

- -
verify(bird.fly()).wasCalled(atMost(once))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An inclusive upper bound.

-
-

Returns

-

A count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/between(_:)-d57ee49/index.html b/docs/0.18.0/between(_:)-d57ee49/index.html deleted file mode 100644 index 14b27719..00000000 --- a/docs/0.18.0/between(_:)-d57ee49/index.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - Mockingbird - between(_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -between(_:​) -

- -
-
public func between(_ range: Range<Int>) -> CountMatcher  
-
-
-

Matches counts that fall within some range.

- -
-
-

The between count matcher can be used to verify that the actual number of invocations received -by a mock is within an inclusive range of expected invocations.

- -
// Given two invocations (n = 2)
-bird.fly()
-bird.fly()
-
-verify(bird.fly()).wasCalled(between(1...2))  // Passes
-verify(bird.fly()).wasCalled(between(3...4))  // Fails (3 ≮ n < 4)
-
-

You can combine count matchers with adverbial counts for improved readability.

- -
verify(bird.fly()).wasCalled(between(once...twice))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
rangeRange<Int>

An closed integer range.

-
-

Returns

-

A count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/clearDefaultValues(on:)-7b56f7e/index.html b/docs/0.18.0/clearDefaultValues(on:)-7b56f7e/index.html deleted file mode 100644 index 04bf8960..00000000 --- a/docs/0.18.0/clearDefaultValues(on:)-7b56f7e/index.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - Mockingbird - clearDefaultValues(on:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -clear​Default​Values(on:​) -

- -
-
@available(*, deprecated, renamed: "clearStubs")
-public func clearDefaultValues(on mocks: Mock...)  
-
-
-

Remove all registered default values.

- -
-
-

Partially reset a set of mocks during test runs by removing all registered default values.

- -
let bird = mock(Bird.self)
-bird.useDefaultValues(from: .standardProvider)
-
-print(bird.name)  // Prints ""
-verify(bird.name).wasCalled()  // Passes
-
-clearDefaultValues(on: bird)
-
-print(bird.name)  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mocksMock

A set of mocks to reset.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/clearInvocations(on:)-3b83feb/index.html b/docs/0.18.0/clearInvocations(on:)-3b83feb/index.html deleted file mode 100644 index 019fbac3..00000000 --- a/docs/0.18.0/clearInvocations(on:)-3b83feb/index.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - Mockingbird - clearInvocations(on:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -clear​Invocations(on:​) -

- -
-
public func clearInvocations(on mocks: NSObjectProtocol...)  
-
-
-

Remove all recorded invocations.

- -
-
-

Partially reset a set of mocks during test runs by removing all recorded invocations.

- -
let bird = mock(Bird.self)
-given(bird.name).willReturn("Ryan")
-
-print(bird.name)  // Prints "Ryan"
-verify(bird.name).wasCalled()  // Passes
-
-clearInvocations(on: bird)
-
-print(bird.name)  // Prints "Ryan"
-verify(bird.name).wasCalled()  // Error: Got 0 invocations
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mocksNSObject​Protocol

A set of mocks to reset.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/clearInvocations(on:)-c035ab0/index.html b/docs/0.18.0/clearInvocations(on:)-c035ab0/index.html deleted file mode 100644 index 66c8df9e..00000000 --- a/docs/0.18.0/clearInvocations(on:)-c035ab0/index.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - Mockingbird - clearInvocations(on:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -clear​Invocations(on:​) -

- -
-
public func clearInvocations(on mocks: Mock...)  
-
-
-

Remove all recorded invocations.

- -
-
-

Partially reset a set of mocks during test runs by removing all recorded invocations.

- -
let bird = mock(Bird.self)
-given(bird.name).willReturn("Ryan")
-
-print(bird.name)  // Prints "Ryan"
-verify(bird.name).wasCalled()  // Passes
-
-clearInvocations(on: bird)
-
-print(bird.name)  // Prints "Ryan"
-verify(bird.name).wasCalled()  // Error: Got 0 invocations
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mocksMock

A set of mocks to reset.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/clearStubs(on:)-343b2f1/index.html b/docs/0.18.0/clearStubs(on:)-343b2f1/index.html deleted file mode 100644 index c2e0972e..00000000 --- a/docs/0.18.0/clearStubs(on:)-343b2f1/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Mockingbird - clearStubs(on:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -clear​Stubs(on:​) -

- -
-
public func clearStubs(on mocks: NSObjectProtocol...)  
-
-
-

Remove all concrete stubs.

- -
-
-

Partially reset a set of mocks during test runs by removing all stubs.

- -
let bird = mock(Bird.self)
-given(bird.name).willReturn("Ryan")
-
-print(bird.name)  // Prints "Ryan"
-verify(bird.name).wasCalled()  // Passes
-
-clearStubs(on: bird)
-
-print(bird.name)  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mocksNSObject​Protocol

A set of mocks to reset.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/clearStubs(on:)-733a109/index.html b/docs/0.18.0/clearStubs(on:)-733a109/index.html deleted file mode 100644 index b0de0904..00000000 --- a/docs/0.18.0/clearStubs(on:)-733a109/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Mockingbird - clearStubs(on:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -clear​Stubs(on:​) -

- -
-
public func clearStubs(on mocks: Mock...)  
-
-
-

Remove all concrete stubs.

- -
-
-

Partially reset a set of mocks during test runs by removing all stubs.

- -
let bird = mock(Bird.self)
-given(bird.name).willReturn("Ryan")
-
-print(bird.name)  // Prints "Ryan"
-verify(bird.name).wasCalled()  // Passes
-
-clearStubs(on: bird)
-
-print(bird.name)  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mocksMock

A set of mocks to reset.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/eventually(_:_:)-4bc028a/index.html b/docs/0.18.0/eventually(_:_:)-4bc028a/index.html deleted file mode 100644 index 623bc201..00000000 --- a/docs/0.18.0/eventually(_:_:)-4bc028a/index.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - Mockingbird - eventually(_:_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -eventually(_:​_:​) -

- -
-
public func eventually(_ description: String? = nil,
-                       _ block: () -> Void) -> XCTestExpectation  
-
-
-

Create a deferrable test expectation from a block containing verification calls.

- -
-
-

Mocked methods that are invoked asynchronously can be verified using an eventually block which -returns an XCTestExpectation.

- -
DispatchQueue.main.async {
-  Tree(with: bird).shake()
-}
-
-let expectation =
-  eventually {
-    verify(bird.fly()).wasCalled()
-    verify(bird.chirp()).wasCalled()
-  }
-
-wait(for: [expectation], timeout: 1.0)
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
descriptionString?

An optional description for the created XCTestExpectation.

-
block() -> Void

A block containing verification calls.

-
-

Returns

-

An XCTestExpectation that fulfilles once all verifications in the block are met.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/exactly(_:)-c366d42/index.html b/docs/0.18.0/exactly(_:)-c366d42/index.html deleted file mode 100644 index 3ae97436..00000000 --- a/docs/0.18.0/exactly(_:)-c366d42/index.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - Mockingbird - exactly(_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -exactly(_:​) -

- -
-
public func exactly(_ times: Int) -> CountMatcher  
-
-
-

Matches an exact count.

- -
-
-

The exactly count matcher can be used to verify that the actual number of invocations received -by a mock equals the expected number of invocations.

- -
// Given two invocations (n = 2)
-bird.fly()
-bird.fly()
-
-verify(bird.fly()).wasCalled(exactly(1))  // Fails (n ≠ 1)
-verify(bird.fly()).wasCalled(exactly(2))  // Passes
-
-

You can combine count matchers with adverbial counts for improved readability.

- -
verify(bird.fly()).wasCalled(exactly(once))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
timesInt

An exact integer count.

-
-

Returns

-

A count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/fifthArg(_:)-b65d250/index.html b/docs/0.18.0/fifthArg(_:)-b65d250/index.html deleted file mode 100644 index 26224bac..00000000 --- a/docs/0.18.0/fifthArg(_:)-b65d250/index.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - Mockingbird - fifthArg(_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -fifth​Arg(_:​) -

- -
-
public func fifthArg<T>(_ matcher: @autoclosure () -> T) -> T  
-
-
-

Specifies the fifth argument position for an argument matcher.

- -
-
-

You must provide an explicit argument position when using argument matchers on an Objective-C -method with multiple value type parameters.

- -
@objc class Bird: NSObject {
-  @objc dynamic func chirp(volume: Int, duration: Int) {}
-}
-
-given(bird.chirp(volume: firstArg(any()),
-                 duration: secondArg(any()))).will {
-  print($0 as! Int, $1 as! Int)
-}
-
-bird.chirp(42, 9001)  // Prints 42, 9001
-
-

This is equivalent to the verbose form of declaring an argument position.

- -
given(bird.chirp(volume: arg(any(), at: 0),
-                 duration: arg(any(), at: 1))).will {
-  print($0 as! Int, $1 as! Int)
-}
-
- -
-

Parameters

- - - - - - - - - - - - - - - - -
matcher@autoclosure () -> T

An argument matcher.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/finiteSequence(of:)-4225436/index.html b/docs/0.18.0/finiteSequence(of:)-4225436/index.html deleted file mode 100644 index 4cf64e78..00000000 --- a/docs/0.18.0/finiteSequence(of:)-4225436/index.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - Mockingbird - finiteSequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -finite​Sequence(of:​) -

- -
-
public func finiteSequence<DeclarationType: Declaration, InvocationType, ReturnType>(
-  of implementations: InvocationType...
-) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>  
-
-
-

Stub a finite sequence of implementations.

- -
-
-

Provide one or more implementations which will be returned sequentially for each invocation. The -stub will be invalidated if the number of invocations is greater than the number of -implementations provided.

- -
given(bird.name).willReturn(finiteSequence(of: {
-  return Bool.random() ? "Ryan" : "Meisters"
-}, {
-  return Bool.random() ? "Sterling" : "Hackley"
-}))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementationsInvocation​Type

A sequence of implementations to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/finiteSequence(of:)-b90973c/index.html b/docs/0.18.0/finiteSequence(of:)-b90973c/index.html deleted file mode 100644 index 88445fcc..00000000 --- a/docs/0.18.0/finiteSequence(of:)-b90973c/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Mockingbird - finiteSequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -finite​Sequence(of:​) -

- -
-
public func finiteSequence<DeclarationType: Declaration, InvocationType, ReturnType>(
-  of values: ReturnType...
-) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>  
-
-
-

Stub a finite sequence of values.

- -
-
-

Provide one or more values which will be returned sequentially for each invocation. The stub -will be invalidated if the number of invocations is greater than the number of values provided.

- -
given(bird.name)
-  .willReturn(finiteSequence(of: "Ryan", "Sterling"))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
valuesReturn​Type

A sequence of values to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/firstArg(_:)-ca2e527/index.html b/docs/0.18.0/firstArg(_:)-ca2e527/index.html deleted file mode 100644 index 5a663432..00000000 --- a/docs/0.18.0/firstArg(_:)-ca2e527/index.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - Mockingbird - firstArg(_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -first​Arg(_:​) -

- -
-
public func firstArg<T>(_ matcher: @autoclosure () -> T) -> T  
-
-
-

Specifies the first argument position for an argument matcher.

- -
-
-

You must provide an explicit argument position when using argument matchers on an Objective-C -method with multiple value type parameters.

- -
@objc class Bird: NSObject {
-  @objc dynamic func chirp(volume: Int, duration: Int) {}
-}
-
-given(bird.chirp(volume: firstArg(any()),
-                 duration: secondArg(any()))).will {
-  print($0 as! Int, $1 as! Int)
-}
-
-bird.chirp(42, 9001)  // Prints 42, 9001
-
-

This is equivalent to the verbose form of declaring an argument position.

- -
given(bird.chirp(volume: arg(any(), at: 0),
-                 duration: arg(any(), at: 1))).will {
-  print($0 as! Int, $1 as! Int)
-}
-
- -
-

Parameters

- - - - - - - - - - - - - - - - -
matcher@autoclosure () -> T

An argument matcher.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/forward(to:)-28668e8/index.html b/docs/0.18.0/forward(to:)-28668e8/index.html deleted file mode 100644 index 314e96dc..00000000 --- a/docs/0.18.0/forward(to:)-28668e8/index.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - Mockingbird - forward(to:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -forward(to:​) -

- -
-
public func forward<T>(to object: T) -> ForwardingContext  
-
-
-

Forward calls for a specific declaration to an object.

- -
-
-

Objects are strongly referenced and receive proxed invocations until removed with clearStubs. -Targets added afterwards have a higher precedence and only pass calls down the forwarding chain -if unable handle the invocation, such as when the target is unrelated to the mocked type.

- -
class Crow: Bird {
-  let name: String
-  init(name: String) { self.name = name }
-}
-
-given(bird.name) ~> forward(to: Crow(name: "Ryan"))
-print(bird.name)  // Prints "Ryan"
-
-// Additional targets take precedence
-given(bird.name) ~> forward(to: Crow(name: "Sterling"))
-print(bird.name)  // Prints "Sterling"
-
-

Concrete stubs always have a higher priority than forwarding targets, regardless of the order -they were added.

- -
given(bird.name) ~> "Ryan"
-given(bird.name) ~> forward(to: Crow(name: "Sterling"))
-print(bird.name)  // Prints "Ryan"
-
-

Objects must inherit from the mocked type to handle forwarded invocations, even if the -declaration is identical. Adding an unrelated type as a forwarding target is a no-op.

- -
// Not a `Bird`
-class Person {
-  var name = "Ryan"
-}
-
-given(bird.name) ~> forward(to: Person())
-print(bird.name)  // Error: Missing stubbed implementation
-
- -
-

Parameters

- - - - - - - - - - - - - - - - -
objectT

An object that should handle forwarded invocations.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/forwardToSuper()-5c5eb13/index.html b/docs/0.18.0/forwardToSuper()-5c5eb13/index.html deleted file mode 100644 index 6caf1ffb..00000000 --- a/docs/0.18.0/forwardToSuper()-5c5eb13/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Mockingbird - forwardToSuper() - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -forward​ToSuper() -

- -
-
public func forwardToSuper() -> ForwardingContext  
-
-
-

Forward calls for a specific declaration to the superclass.

- -
-
-

Use willForwardToSuper on class mock declarations to call the superclass implementation. -Superclass forwarding persists until removed with clearStubs or shadowed by a forwarding -target that was added afterwards.

- -
class Bird {
-  let name: String
-  init(name: String) { self.name = name }
-}
-
-// `BirdMock` subclasses `Bird`
-let bird: BirdMock = mock(Bird.self).initialize(name: "Ryan")
-
-given(bird.name) ~> forwardToSuper()
-print(bird.name)  // Prints "Ryan"
-
-

The mocked type must be a class. Adding superclass forwarding to mocked protocol declarations -is a no-op.

- -
// Not a class
-protocol AbstractBird {
-  var name: String { get }
-}
-
-let bird = mock(AbstractBird.self)
-given(bird.name) ~> forwardToSuper()
-print(bird.name)  // Error: Missing stubbed implementation
-
- -
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/fourthArg(_:)-17b6638/index.html b/docs/0.18.0/fourthArg(_:)-17b6638/index.html deleted file mode 100644 index f4f5b5ad..00000000 --- a/docs/0.18.0/fourthArg(_:)-17b6638/index.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - Mockingbird - fourthArg(_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -fourth​Arg(_:​) -

- -
-
public func fourthArg<T>(_ matcher: @autoclosure () -> T) -> T  
-
-
-

Specifies the fourth argument position for an argument matcher.

- -
-
-

You must provide an explicit argument position when using argument matchers on an Objective-C -method with multiple value type parameters.

- -
@objc class Bird: NSObject {
-  @objc dynamic func chirp(volume: Int, duration: Int) {}
-}
-
-given(bird.chirp(volume: firstArg(any()),
-                 duration: secondArg(any()))).will {
-  print($0 as! Int, $1 as! Int)
-}
-
-bird.chirp(42, 9001)  // Prints 42, 9001
-
-

This is equivalent to the verbose form of declaring an argument position.

- -
given(bird.chirp(volume: arg(any(), at: 0),
-                 duration: arg(any(), at: 1))).will {
-  print($0 as! Int, $1 as! Int)
-}
-
- -
-

Parameters

- - - - - - - - - - - - - - - - -
matcher@autoclosure () -> T

An argument matcher.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/given(_:)-8aeefd4/index.html b/docs/0.18.0/given(_:)-8aeefd4/index.html deleted file mode 100644 index 7d227531..00000000 --- a/docs/0.18.0/given(_:)-8aeefd4/index.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - Mockingbird - given(_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -given(_:​) -

- -
-
public func given<DeclarationType: Declaration, InvocationType, ReturnType>(
-  _ declaration: Mockable<DeclarationType, InvocationType, ReturnType>
-) -> StaticStubbingManager<DeclarationType, InvocationType, ReturnType>  
-
-
-

Stub a declaration to return a value or perform an operation.

- -
-
-

Stubbing allows you to define custom behavior for mocks to perform.

- -
protocol Bird {
-  var name: String { get }
-  func chirp(at volume: Int) throws -> Bool
-}
-
-given(bird.name).willReturn("Ryan")
-given(bird.chirp(at: 42)).willThrow(BirdError())
-given(bird.chirp(at: any())).will { volume in
-  return volume < 42
-}
-
-

This is equivalent to the shorthand syntax using the stubbing operator ~>.

- -
given(bird.name) ~> "Ryan"
-given(bird.chirp(at: 42)) ~> { throw BirdError() }
-given(bird.chirp(at: any())) ~> { volume in
-  return volume < 42
-}
-
-

Properties can have stubs on both their getters and setters.

- -
given(bird.name).willReturn("Ryan")
-given(bird.name = any()).will {
-  print("Hello \($0)")
-}
-
-print(bird.name)        // Prints "Ryan"
-bird.name = "Sterling"  // Prints "Hello Sterling"
-
-

This is equivalent to using the synthesized getter and setter methods.

- -
given(bird.getName()).willReturn("Ryan")
-given(bird.setName(any())).will {
-  print("Hello \($0)")
-}
-
-print(bird.name)        // Prints "Ryan"
-bird.name = "Sterling"  // Prints "Hello Sterling"
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
declarationMockable<Declaration​Type, Invocation​Type, Return​Type>

A stubbable declaration.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/given(_:)-a96595c/index.html b/docs/0.18.0/given(_:)-a96595c/index.html deleted file mode 100644 index 3dfaca7f..00000000 --- a/docs/0.18.0/given(_:)-a96595c/index.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - Mockingbird - given(_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -given(_:​) -

- -
-
public func given<ReturnType>(
-  _ declaration: @autoclosure () throws -> ReturnType
-) -> DynamicStubbingManager<ReturnType>  
-
-
-

Stub a declaration to return a value or perform an operation.

- -
-
-

Stubbing allows you to define custom behavior for mocks to perform.

- -
given(bird.canChirp()).willReturn(true)
-given(bird.canChirp()).willThrow(BirdError())
-given(bird.canChirp(volume: any())).will { volume in
-  return volume as Int < 42
-}
-
-

This is equivalent to the shorthand syntax using the stubbing operator ~>.

- -
given(bird.canChirp()) ~> true
-given(bird.canChirp()) ~> { throw BirdError() }
-given(bird.canChirp(volume: any()) ~> { volume in
-  return volume as Int < 42
-}
-
-

Properties can have stubs on both their getters and setters.

- -
given(bird.name).willReturn("Ryan")
-given(bird.name = any()).will { (name: String) in
-  print("Hello \(name)")
-}
-
-print(bird.name)        // Prints "Ryan"
-bird.name = "Sterling"  // Prints "Hello Sterling"
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
declaration@autoclosure () throws -> Return​Type

A stubbable declaration.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/inOrder(with:file:line:_:)-2287378/index.html b/docs/0.18.0/inOrder(with:file:line:_:)-2287378/index.html deleted file mode 100644 index 69918b7f..00000000 --- a/docs/0.18.0/inOrder(with:file:line:_:)-2287378/index.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - Mockingbird - inOrder(with:file:line:_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -in​Order(with:​file:​line:​_:​) -

- -
-
public func inOrder(with options: OrderedVerificationOptions = [],
-                    file: StaticString = #file, line: UInt = #line,
-                    _ block: () -> Void)  
-
-
-

Enforce the relative order of invocations.

- -
-
-

Calls to verify within the scope of an inOrder verification block are checked relative to -each other.

- -
// Verify that `canFly` was called before `fly`
-inOrder {
-  verify(bird.canFly).wasCalled()
-  verify(bird.fly()).wasCalled()
-}
-
-

Pass options to inOrder verification blocks for stricter checks with additional invariants.

- -
inOrder(with: .noInvocationsAfter) {
-  verify(bird.canFly).wasCalled()
-  verify(bird.fly()).wasCalled()
-}
-
-

An inOrder block is resolved greedily, such that each verification must happen from the oldest -remaining unsatisfied invocations.

- -
// Given these unsatisfied invocations
-bird.canFly
-bird.canFly
-bird.fly()
-
-// Greedy strategy _must_ start from the first `canFly`
-inOrder {
-  verify(bird.canFly).wasCalled(twice)
-  verify(bird.fly()).wasCalled()
-}
-
-// Non-greedy strategy can start from the second `canFly`
-inOrder {
-  verify(bird.canFly).wasCalled()
-  verify(bird.fly()).wasCalled()
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
optionsOrdered​Verification​Options

Options to use when verifying invocations.

-
block() -> Void

A block containing ordered verification calls.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/index.html b/docs/0.18.0/index.html deleted file mode 100644 index fd507638..00000000 --- a/docs/0.18.0/index.html +++ /dev/null @@ -1,968 +0,0 @@ - - - - - - Mockingbird - Mockingbird - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-
-

Classes

-
-
- - Argument​Captor - -
-
-

Captures method arguments passed during mock invocations.

- -
-
- - Argument​Matcher - -
-
-

Matches argument values with a comparator.

- -
-
- - Non​Escaping​Closure - -
-
-

Placeholder for non-escaping closure parameter types.

- -
-
- - Context - -
-
-

Container for mock state and metadata.

- -
-
- - Any​Declaration - -
-
-

Mockable declarations.

- -
-
- - Variable​Declaration - -
-
-

Mockable variable declarations.

- -
-
- - Property​Getter​Declaration - -
-
-

Mockable property getter declarations.

- -
-
- - Property​Setter​Declaration - -
-
-

Mockable property setter declarations.

- -
-
- - Function​Declaration - -
-
-

Mockable function declarations.

- -
-
- - Throwing​Function​Declaration - -
-
-

Mockable throwing function declarations.

- -
-
- - Subscript​Declaration - -
-
-

Mockable subscript declarations.

- -
-
- - Subscript​Getter​Declaration - -
-
-

Mockable subscript getter declarations.

- -
-
- - Subscript​Setter​Declaration - -
-
-

Mockable subscript setter declarations.

- -
-
- - Static​Mock - -
-
-

Used to store invocations on static or class scoped methods.

- -
-
- - Mocking​Context - -
-
-

Stores invocations received by mocks.

- -
-
- - Dynamic​Stubbing​Manager - -
-
-

An intermediate object used for stubbing Objective-C declarations returned by given.

- -
-
- - Invocation​Recorder - -
-
-

Records invocations for stubbing and verification.

- -
-
- - Proxy​Context - -
-
-

Stores potential targets that can handle forwarded invocations from mocked calls.

- -
-
- - Static​Stubbing​Manager - -
-
-

An intermediate object used for stubbing Swift declarations returned by given.

- -
-
- - Stubbing​Manager - -
-
-

An intermediate object used for stubbing declarations returned by given.

- -
-
- - Error​Box - -
-
-

Used to forward errors thrown from stubbed implementations to the Objective-C runtime.

- -
-
- - Swift​Error​Box - -
-
-

Holds Swift errors which are bridged to NSErrors.

- -
-
- - Obj​CError​Box - -
-
-

Holds Objective-C NSError objects.

- -
-
- - Stubbing​Context - -
-
-

Stores stubbed implementations used by mocks.

- -
-
- - Obj​CInvocation - -
-
-

An invocation recieved by an Objective-C.

- -
-
- - Verification​Manager - -
-
-

An intermediate object used for verifying declarations returned by verify.

- -
-
-
-
-

Structures

-
-
- - Count​Matcher - -
-
-

Checks whether a number matches some expected count.

- -
-
- - Mockable - -
-
-

Represents a mocked declaration that can be stubbed or verified.

- -
-
- - Mock​Metadata - -
-
-

Stores information about generated mocks.

- -
-
- - Implementation​Provider - -
-
-

Provides implementation functions used to stub behavior and return values.

- -
-
- - Forwarding​Context - -
-
-

Intermediary object for binding forwarding targets to a mock.

- -
-
- - Value​Provider - -
-
-

Provides concrete instances of types.

- -
-
- - Source​Location - -
-
-

References a line of code in a file.

- -
-
- - Ordered​Verification​Options - -
-
-

Additional options to increase the strictness of inOrder verification blocks.

- -
-
-
-
-

Enumerations

-
-
- - Invocation​Recorder.​Mode - -
-
-

Used to attribute declarations to stubbing and verification calls in tests.

- -
-
- - Stubbing​Manager.​Transition​Strategy - -
-
-

When to use the next chained implementation provider.

- -
-
- - Selector​Type - -
-
-

Attributes selectors to a specific member type.

- -
-
-
-
-

Protocols

-
-
- - Declaration - -
-
-

All mockable declaration types conform to this protocol.

- -
-
- - Mock - -
-
-

All generated mocks conform to this protocol.

- -
-
- - Providable - -
-
-

A type that can provide concrete instances of itself.

- -
-
- - Test​Failer - -
-
-

A type that can handle test failures emitted by Mockingbird.

- -
-
-
-
-

Functions

-
-
- - arg(_:​at:​) - -
-
-

Specifies the argument position for an argument matcher.

- -
-
- - first​Arg(_:​) - -
-
-

Specifies the first argument position for an argument matcher.

- -
-
- - second​Arg(_:​) - -
-
-

Specifies the second argument position for an argument matcher.

- -
-
- - third​Arg(_:​) - -
-
-

Specifies the third argument position for an argument matcher.

- -
-
- - fourth​Arg(_:​) - -
-
-

Specifies the fourth argument position for an argument matcher.

- -
-
- - fifth​Arg(_:​) - -
-
-

Specifies the fifth argument position for an argument matcher.

- -
-
- - any(_:​containing:​) - -
-
-

Matches any collection containing all of the values.

- -
-
- - any(_:​containing:​) - -
-
-

Matches any dictionary containing all of the values.

- -
-
- - any(_:​keys:​) - -
-
-

Matches any dictionary containing all of the keys.

- -
-
- - any(_:​count:​) - -
-
-

Matches any collection with a specific number of elements.

- -
-
- - not​Empty(_:​) - -
-
-

Matches any collection with at least one element.

- -
-
- - around(_:​tolerance:​) - -
-
-

Matches floating point arguments within some tolerance.

- -
-
- - exactly(_:​) - -
-
-

Matches an exact count.

- -
-
- - at​Least(_:​) - -
-
-

Matches greater than or equal to some count.

- -
-
- - at​Most(_:​) - -
-
-

Matches less than or equal to some count.

- -
-
- - between(_:​) - -
-
-

Matches counts that fall within some range.

- -
-
- - not(_:​) - -
-
-

Negate a count matcher, only passing on non-matching counts.

- -
-
- - not(_:​) - -
-
-

Negate an exact count, only passing on non-matching counts.

- -
-
- - any(_:​) - -
-
-

Matches all argument values.

- -
-
- - any(_:​) - -
-
-

Matches all Objective-C object argument values.

- -
-
- - any(_:​of:​) - -
-
-

Matches argument values equal to any of the provided values.

- -
-
- - any(_:​of:​) - -
-
-

Matches argument values identical to any of the provided values.

- -
-
- - any(_:​where:​) - -
-
-

Matches any argument values where the predicate returns true.

- -
-
- - any(_:​where:​) - -
-
-

Matches any Objective-C object argument values where the predicate returns true.

- -
-
- - not​Nil(_:​) - -
-
-

Matches any non-nil argument value.

- -
-
- - not​Nil(_:​) - -
-
-

Matches any non-nil Objective-C object argument value.

- -
-
- - mock(_:​) - -
-
-

Returns a mock of a given Swift type.

- -
-
- - mock(_:​) - -
-
-

Returns a dynamic mock of a given Objective-C object type.

- -
-
- - reset(_:​) - -
-
-

Remove all recorded invocations and configured stubs.

- -
-
- - reset(_:​) - -
-
-

Remove all recorded invocations and configured stubs.

- -
-
- - clear​Invocations(on:​) - -
-
-

Remove all recorded invocations.

- -
-
- - clear​Invocations(on:​) - -
-
-

Remove all recorded invocations.

- -
-
- - clear​Stubs(on:​) - -
-
-

Remove all concrete stubs.

- -
-
- - clear​Stubs(on:​) - -
-
-

Remove all concrete stubs.

- -
-
- - clear​Default​Values(on:​) - -
-
-

Remove all registered default values.

- -
-
- - forward​ToSuper() - -
-
-

Forward calls for a specific declaration to the superclass.

- -
-
- - forward(to:​) - -
-
-

Forward calls for a specific declaration to an object.

- -
-
- - last​Set​Value(initial:​) - -
-
-

Stubs a variable getter to return the last value received by the setter.

- -
-
- - sequence(of:​) - -
-
-

Stub a sequence of values.

- -
-
- - sequence(of:​) - -
-
-

Stub a sequence of implementations.

- -
-
- - looping​Sequence(of:​) - -
-
-

Stub a looping sequence of values.

- -
-
- - looping​Sequence(of:​) - -
-
-

Stub a looping sequence of implementations.

- -
-
- - finite​Sequence(of:​) - -
-
-

Stub a finite sequence of values.

- -
-
- - finite​Sequence(of:​) - -
-
-

Stub a finite sequence of implementations.

- -
-
- - given(_:​) - -
-
-

Stub a declaration to return a value or perform an operation.

- -
-
- - given(_:​) - -
-
-

Stub a declaration to return a value or perform an operation.

- -
-
- - eventually(_:​_:​) - -
-
-

Create a deferrable test expectation from a block containing verification calls.

- -
-
- - in​Order(with:​file:​line:​_:​) - -
-
-

Enforce the relative order of invocations.

- -
-
- - verify(_:​file:​line:​) - -
-
-

Verify that a mock recieved a specific invocation some number of times.

- -
-
- - verify(_:​file:​line:​) - -
-
-

Verify that a mock recieved a specific invocation some number of times.

- -
-
- - swizzle​Test​Failer(_:​) - -
-
-

Change the current global test failer.

- -
-
-
-
-

Variables

-
-
- - never - -
-
-

A count of zero.

- -
-
- - once - -
-
-

A count of one.

- -
-
- - twice - -
-
-

A count of two.

- -
-
-
-
-

Operators

-
-
- - ~> - -
-
-

The stubbing operator is used to bind an implementation to an intermediary Stub object.

- -
-
-
-
-

Extensions

-
-
- Array -
-
-
- Dictionary -
-
-
- NSObjectProtocol -
-
-
- Optional -
-
-
- Set -
-
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/lastSetValue(initial:)-d6a1a47/index.html b/docs/0.18.0/lastSetValue(initial:)-d6a1a47/index.html deleted file mode 100644 index 3271def8..00000000 --- a/docs/0.18.0/lastSetValue(initial:)-d6a1a47/index.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - Mockingbird - lastSetValue(initial:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -last​Set​Value(initial:​) -

- -
-
public func lastSetValue<DeclarationType: PropertyGetterDeclaration, InvocationType, ReturnType>(
-  initial: ReturnType
-) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>  
-
-
-

Stubs a variable getter to return the last value received by the setter.

- -
-
-

Getters can be stubbed to automatically save and return values. -with property getters to automatically save and return values.

- -
given(bird.name).willReturn(lastSetValue(initial: ""))
-print(bird.name)  // Prints ""
-bird.name = "Ryan"
-print(bird.name)  // Prints "Ryan"
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
initialReturn​Type

The initial value to return.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/loopingSequence(of:)-8c11ab6/index.html b/docs/0.18.0/loopingSequence(of:)-8c11ab6/index.html deleted file mode 100644 index 550eee2a..00000000 --- a/docs/0.18.0/loopingSequence(of:)-8c11ab6/index.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - Mockingbird - loopingSequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -looping​Sequence(of:​) -

- -
-
public func loopingSequence<DeclarationType: Declaration, InvocationType, ReturnType>(
-  of values: ReturnType...
-) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>  
-
-
-

Stub a looping sequence of values.

- -
-
-

Provide one or more values which will be returned sequentially for each invocation. The sequence -will loop from the beginning if the number of invocations is greater than the number of values -provided.

- -
given(bird.name)
-  .willReturn(loopingSequence(of: "Ryan", "Sterling"))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
valuesReturn​Type

A sequence of values to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/loopingSequence(of:)-cc3f2b3/index.html b/docs/0.18.0/loopingSequence(of:)-cc3f2b3/index.html deleted file mode 100644 index 12af59c8..00000000 --- a/docs/0.18.0/loopingSequence(of:)-cc3f2b3/index.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - Mockingbird - loopingSequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -looping​Sequence(of:​) -

- -
-
public func loopingSequence<DeclarationType: Declaration, InvocationType, ReturnType>(
-  of implementations: InvocationType...
-) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>  
-
-
-

Stub a looping sequence of implementations.

- -
-
-

Provide one or more implementations which will be returned sequentially for each invocation. The -sequence will loop from the beginning if the number of invocations is greater than the number of -implementations provided.

- -
given(bird.name).willReturn(loopingSequence(of: {
-  return Bool.random() ? "Ryan" : "Meisters"
-}, {
-  return Bool.random() ? "Sterling" : "Hackley"
-}))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Meisters"
-print(bird.name)  // Prints "Hackley"
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementationsInvocation​Type

A sequence of implementations to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/mock(_:)-40a8117/index.html b/docs/0.18.0/mock(_:)-40a8117/index.html deleted file mode 100644 index 8f008de4..00000000 --- a/docs/0.18.0/mock(_:)-40a8117/index.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - Mockingbird - mock(_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -mock(_:​) -

- -
-
@available(*, unavailable, message: "No generated mock for this type which might be resolved by building the test target (⇧⌘U)")
-public func mock<T>(_ type: T.Type) -> T  
-
-
-

Returns a mock of a given Swift type.

- -
-
-

Initialized mocks can be passed in place of the original type. Protocol mocks do not require -explicit initialization while class mocks should be created using initialize(…).

- -
protocol Bird {
-  init(name: String)
-}
-class Tree {
-  init(with bird: Bird) {}
-}
-
-let bird = mock(Bird.self)  // Protocol mock
-let tree = mock(Tree.self).initialize(with: bird)  // Class mock
-
-

Generated mock types are suffixed with Mock and should not be coerced into their supertype.

- -
let bird: BirdMock = mock(Bird.self)  // The concrete type is `BirdMock`
-let inferredBird = mock(Bird.self)    // Type inference also works
-let coerced: Bird = mock(Bird.self)   // Avoid upcasting mocks
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The type to mock.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/mock(_:)-b58cf6a/index.html b/docs/0.18.0/mock(_:)-b58cf6a/index.html deleted file mode 100644 index 98cd7aba..00000000 --- a/docs/0.18.0/mock(_:)-b58cf6a/index.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - Mockingbird - mock(_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -mock(_:​) -

- -
-
public func mock<T: NSObjectProtocol>(_ type: T.Type) -> T  
-
-
-

Returns a dynamic mock of a given Objective-C object type.

- -
-
-

Initialized mocks can be passed in place of the original type. Dynamic mocks use the -Objective-C runtime and do not require explicit initialization like Swift class mocks.

- -
// Objective-C declarations
-@protocol Bird <NSObject>
-- (instancetype)initWithName:(NSString *);
-@end
-@interface Tree : NSObject
-- (instancetype)initWithHeight:(NSInteger)height;
-@end
-
-let bird = mock(Bird.self)  // Protocol mock
-let tree = mock(Tree.self)  // Class mock
-
-

It's also possible to mock Swift types inheriting from NSObject or conforming to -NSObjectProtocol. Members must be dynamically dispatched and available to the Objective-C -runtime by specifying the objc attribute and dynamic modifier.

- -
@objc protocol Bird: NSObjectProtocol {
-  @objc dynamic func chirp()
-  @objc dynamic var name: String { get }
-}
-@objc class Tree: NSObject {
-  @objc dynamic func shake() {}
-  @objc dynamic var height: Int
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The type to mock.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/never-657a74c/index.html b/docs/0.18.0/never-657a74c/index.html deleted file mode 100644 index 1bea25e0..00000000 --- a/docs/0.18.0/never-657a74c/index.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - Mockingbird - never - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Variable -never -

- -
-
public let never: Int = 0
-
-
-

A count of zero.

- -
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/not(_:)-12c53a2/index.html b/docs/0.18.0/not(_:)-12c53a2/index.html deleted file mode 100644 index e4043223..00000000 --- a/docs/0.18.0/not(_:)-12c53a2/index.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - Mockingbird - not(_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -not(_:​) -

- -
-
public func not(_ countMatcher: CountMatcher) -> CountMatcher  
-
-
-

Negate a count matcher, only passing on non-matching counts.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n ≠ 1
-verify(bird.fly()).wasCalled(not(exactly(once)))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​MatcherCount​Matcher

A count matcher to negate.

-
-

Returns

-

A negated count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/not(_:)-90155c4/index.html b/docs/0.18.0/not(_:)-90155c4/index.html deleted file mode 100644 index 8c93966d..00000000 --- a/docs/0.18.0/not(_:)-90155c4/index.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - Mockingbird - not(_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -not(_:​) -

- -
-
public func not(_ times: Int) -> CountMatcher  
-
-
-

Negate an exact count, only passing on non-matching counts.

- -
-
-

Combined count matchers can be used to perform complex checks on the number of invocations -received.

- -
// Checks that n ≠ 1
-verify(bird.fly()).wasCalled(not(once))
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
count​Matcher

An exact count to negate.

-
-

Returns

-

A negated count matcher.

- -
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/notEmpty(_:)-42ce3f8/index.html b/docs/0.18.0/notEmpty(_:)-42ce3f8/index.html deleted file mode 100644 index e3a02e59..00000000 --- a/docs/0.18.0/notEmpty(_:)-42ce3f8/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Mockingbird - notEmpty(_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -not​Empty(_:​) -

- -
-
public func notEmpty<T: Collection>(_ type: T.Type = T.self) -> T  
-
-
-

Matches any collection with at least one element.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher notEmpty to match collections with one or more elements.

- -
protocol Bird {
-  func send(_ messages: [String])
-}
-
-given(bird.send(any(count: 2))).will { print($0) }
-
-bird.send(["Hi"])  // Prints ["Hi"]
-bird.send([])      // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ messages: [T])    // Overloaded generically
-  func send(_ messages: [String])  // Overloaded explicitly
-  func send(_ messages: [Data])
-}
-
-given(bird.send(notEmpty([String].self)))
-  .will { print($0) }
-
-bird.send(["Hi"])       // Prints ["Hi"]
-bird.send([Data([1])])  // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/notNil(_:)-4c25f3f/index.html b/docs/0.18.0/notNil(_:)-4c25f3f/index.html deleted file mode 100644 index 13f79cf1..00000000 --- a/docs/0.18.0/notNil(_:)-4c25f3f/index.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - Mockingbird - notNil(_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -not​Nil(_:​) -

- -
-
public func notNil<T: NSObjectProtocol>(_ type: T.Type = T.self) -> T  
-
-
-

Matches any non-nil Objective-C object argument value.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher notNil to match non-nil argument values.

- -
// Protocol referencing Obj-C object types
-protocol Bird {
-  func send(_ message: NSString?)
-}
-
-given(bird.send(notNil())).will { print($0) }
-
-bird.send("Hello")  // Prints Optional("Hello")
-bird.send(nil)      // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
// Protocol referencing Obj-C object types
-protocol Bird {
-  func send<T: NSObject>(_ message: T?)  // Overloaded generically
-  func send(_ message: NSString?)        // Overloaded explicitly
-  func send(_ messages: NSData?)
-}
-
-given(bird.send(notNil(NSString?.self)))
-  .will { print($0) }
-
-bird.send("Hello")  // Prints Optional("Hello")
-bird.send(nil)      // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/notNil(_:)-4da033f/index.html b/docs/0.18.0/notNil(_:)-4da033f/index.html deleted file mode 100644 index bad1b0ac..00000000 --- a/docs/0.18.0/notNil(_:)-4da033f/index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - Mockingbird - notNil(_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -not​Nil(_:​) -

- -
-
public func notNil<T>(_ type: T.Type = T.self) -> T  
-
-
-

Matches any non-nil argument value.

- -
-
-

Argument matching allows you to stub or verify specific invocations of parameterized methods. -Use the argument matcher notNil to match non-nil argument values.

- -
protocol Bird {
-  func send(_ message: String?)
-}
-
-given(bird.send(notNil())).will { print($0) }
-
-bird.send("Hello")  // Prints Optional("Hello")
-bird.send(nil)      // Error: Missing stubbed implementation
-
-

Methods overloaded by parameter type can be disambiguated by explicitly specifying the type.

- -
protocol Bird {
-  func send<T>(_ message: T?)    // Overloaded generically
-  func send(_ message: String?)  // Overloaded explicitly
-  func send(_ messages: Data?)
-}
-
-given(bird.send(notNil(String?.self)))
-  .will { print($0) }
-
-bird.send("Hello")  // Prints Optional("Hello")
-bird.send(nil)      // Error: Missing stubbed implementation
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
typeT.​Type

The parameter type used to disambiguate overloaded methods.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/once-dc7031f/index.html b/docs/0.18.0/once-dc7031f/index.html deleted file mode 100644 index 635070c3..00000000 --- a/docs/0.18.0/once-dc7031f/index.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - Mockingbird - once - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Variable -once -

- -
-
public let once: Int = 1
-
-
-

A count of one.

- -
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/reset(_:)-5654439/index.html b/docs/0.18.0/reset(_:)-5654439/index.html deleted file mode 100644 index 983a014d..00000000 --- a/docs/0.18.0/reset(_:)-5654439/index.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - Mockingbird - reset(_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -reset(_:​) -

- -
-
public func reset(_ mocks: Mock...)  
-
-
-

Remove all recorded invocations and configured stubs.

- -
-
-

Fully reset a set of mocks during test runs by removing all recorded invocations and clearing -all configurations.

- -
let bird = mock(Bird.self)
-given(bird.name).willReturn("Ryan")
-
-print(bird.name)  // Prints "Ryan"
-verify(bird.name).wasCalled()  // Passes
-
-reset(bird)
-
-print(bird.name)  // Error: Missing stubbed implementation
-verify(bird.name).wasCalled()  // Error: Got 0 invocations
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mocksMock

A set of mocks to reset.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/reset(_:)-76ccf89/index.html b/docs/0.18.0/reset(_:)-76ccf89/index.html deleted file mode 100644 index fa348018..00000000 --- a/docs/0.18.0/reset(_:)-76ccf89/index.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - Mockingbird - reset(_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -reset(_:​) -

- -
-
public func reset(_ mocks: NSObjectProtocol...)  
-
-
-

Remove all recorded invocations and configured stubs.

- -
-
-

Fully reset a set of mocks during test runs by removing all recorded invocations and clearing -all configurations.

- -
let bird = mock(Bird.self)
-given(bird.name).willReturn("Ryan")
-
-print(bird.name)  // Prints "Ryan"
-verify(bird.name).wasCalled()  // Passes
-
-reset(bird)
-
-print(bird.name)  // Error: Missing stubbed implementation
-verify(bird.name).wasCalled()  // Error: Got 0 invocations
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mocksNSObject​Protocol

A set of mocks to reset.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/secondArg(_:)-39c95e2/index.html b/docs/0.18.0/secondArg(_:)-39c95e2/index.html deleted file mode 100644 index a97944cf..00000000 --- a/docs/0.18.0/secondArg(_:)-39c95e2/index.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - Mockingbird - secondArg(_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -second​Arg(_:​) -

- -
-
public func secondArg<T>(_ matcher: @autoclosure () -> T) -> T  
-
-
-

Specifies the second argument position for an argument matcher.

- -
-
-

You must provide an explicit argument position when using argument matchers on an Objective-C -method with multiple value type parameters.

- -
@objc class Bird: NSObject {
-  @objc dynamic func chirp(volume: Int, duration: Int) {}
-}
-
-given(bird.chirp(volume: firstArg(any()),
-                 duration: secondArg(any()))).will {
-  print($0 as! Int, $1 as! Int)
-}
-
-bird.chirp(42, 9001)  // Prints 42, 9001
-
-

This is equivalent to the verbose form of declaring an argument position.

- -
given(bird.chirp(volume: arg(any(), at: 0),
-                 duration: arg(any(), at: 1))).will {
-  print($0 as! Int, $1 as! Int)
-}
-
- -
-

Parameters

- - - - - - - - - - - - - - - - -
matcher@autoclosure () -> T

An argument matcher.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/sequence(of:)-8b3c523/index.html b/docs/0.18.0/sequence(of:)-8b3c523/index.html deleted file mode 100644 index dff6a31d..00000000 --- a/docs/0.18.0/sequence(of:)-8b3c523/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Mockingbird - sequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -sequence(of:​) -

- -
-
public func sequence<DeclarationType: Declaration, InvocationType, ReturnType>(
-  of values: ReturnType...
-) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>  
-
-
-

Stub a sequence of values.

- -
-
-

Provide one or more values which will be returned sequentially for each invocation. The last -value will be used if the number of invocations is greater than the number of values provided.

- -
given(bird.name)
-  .willReturn(sequence(of: "Ryan", "Sterling"))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Sterling"
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
valuesReturn​Type

A sequence of values to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/sequence(of:)-af09516/index.html b/docs/0.18.0/sequence(of:)-af09516/index.html deleted file mode 100644 index 719f6e7a..00000000 --- a/docs/0.18.0/sequence(of:)-af09516/index.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - Mockingbird - sequence(of:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -sequence(of:​) -

- -
-
public func sequence<DeclarationType: Declaration, InvocationType, ReturnType>(
-  of implementations: InvocationType...
-) -> ImplementationProvider<DeclarationType, InvocationType, ReturnType>  
-
-
-

Stub a sequence of implementations.

- -
-
-

Provide one or more implementations which will be returned sequentially for each invocation. The -last implementation will be used if the number of invocations is greater than the number of -implementations provided.

- -
given(bird.name).willReturn(sequence(of: {
-  return Bool.random() ? "Ryan" : "Meisters"
-}, {
-  return Bool.random() ? "Sterling" : "Hackley"
-}))
-
-print(bird.name)  // Prints "Ryan"
-print(bird.name)  // Prints "Sterling"
-print(bird.name)  // Prints "Hackley"
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
implementationsInvocation​Type

A sequence of implementations to stub.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/swizzleTestFailer(_:)-8147916/index.html b/docs/0.18.0/swizzleTestFailer(_:)-8147916/index.html deleted file mode 100644 index 5e770a8d..00000000 --- a/docs/0.18.0/swizzleTestFailer(_:)-8147916/index.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - Mockingbird - swizzleTestFailer(_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -swizzle​Test​Failer(_:​) -

- -
-
public func swizzleTestFailer(_ newTestFailer: TestFailer)  
-
-
-

Change the current global test failer.

- -
-

Parameters

- - - - - - - - - - - - - - - - -
new​Test​FailerTest​Failer

A test failer instance to start handling test failures.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/thirdArg(_:)-4eaa586/index.html b/docs/0.18.0/thirdArg(_:)-4eaa586/index.html deleted file mode 100644 index 7223faca..00000000 --- a/docs/0.18.0/thirdArg(_:)-4eaa586/index.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - Mockingbird - thirdArg(_:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -third​Arg(_:​) -

- -
-
public func thirdArg<T>(_ matcher: @autoclosure () -> T) -> T  
-
-
-

Specifies the third argument position for an argument matcher.

- -
-
-

You must provide an explicit argument position when using argument matchers on an Objective-C -method with multiple value type parameters.

- -
@objc class Bird: NSObject {
-  @objc dynamic func chirp(volume: Int, duration: Int) {}
-}
-
-given(bird.chirp(volume: firstArg(any()),
-                 duration: secondArg(any()))).will {
-  print($0 as! Int, $1 as! Int)
-}
-
-bird.chirp(42, 9001)  // Prints 42, 9001
-
-

This is equivalent to the verbose form of declaring an argument position.

- -
given(bird.chirp(volume: arg(any(), at: 0),
-                 duration: arg(any(), at: 1))).will {
-  print($0 as! Int, $1 as! Int)
-}
-
- -
-

Parameters

- - - - - - - - - - - - - - - - -
matcher@autoclosure () -> T

An argument matcher.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/twice-b13bfea/index.html b/docs/0.18.0/twice-b13bfea/index.html deleted file mode 100644 index acfc0dcc..00000000 --- a/docs/0.18.0/twice-b13bfea/index.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - Mockingbird - twice - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Variable -twice -

- -
-
public let twice: Int = 2
-
-
-

A count of two.

- -
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/verify(_:file:line:)-023a535/index.html b/docs/0.18.0/verify(_:file:line:)-023a535/index.html deleted file mode 100644 index 1615c3f5..00000000 --- a/docs/0.18.0/verify(_:file:line:)-023a535/index.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - Mockingbird - verify(_:file:line:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -verify(_:​file:​line:​) -

- -
-
public func verify<ReturnType>(
-  _ declaration: @autoclosure () throws -> ReturnType,
-  file: StaticString = #file, line: UInt = #line
-) -> VerificationManager<Any?, ReturnType>  
-
-
-

Verify that a mock recieved a specific invocation some number of times.

- -
-
-

Verification lets you assert that a mock received a particular invocation during its lifetime.

- -
verify(bird.doMethod()).wasCalled()
-verify(bird.getProperty()).wasCalled()
-verify(bird.setProperty(any())).wasCalled()
-
-

Match exact or wildcard argument values when verifying methods with parameters.

- -
verify(bird.canChirp(volume: any())).wasCalled()     // Called with any volume
-verify(bird.canChirp(volume: notNil())).wasCalled()  // Called with any non-nil volume
-verify(bird.canChirp(volume: 10)).wasCalled()        // Called with volume = 10
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mock

A mocked declaration to verify.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/verify(_:file:line:)-a5a6b2f/index.html b/docs/0.18.0/verify(_:file:line:)-a5a6b2f/index.html deleted file mode 100644 index 29c0c504..00000000 --- a/docs/0.18.0/verify(_:file:line:)-a5a6b2f/index.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - Mockingbird - verify(_:file:line:) - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

-Function -verify(_:​file:​line:​) -

- -
-
public func verify<DeclarationType: Declaration, InvocationType, ReturnType>(
-  _ declaration: Mockable<DeclarationType, InvocationType, ReturnType>,
-  file: StaticString = #file, line: UInt = #line
-) -> VerificationManager<InvocationType, ReturnType>  
-
-
-

Verify that a mock recieved a specific invocation some number of times.

- -
-
-

Verification lets you assert that a mock received a particular invocation during its lifetime.

- -
verify(bird.doMethod()).wasCalled()
-verify(bird.getProperty()).wasCalled()
-verify(bird.setProperty(any())).wasCalled()
-
-

Match exact or wildcard argument values when verifying methods with parameters.

- -
verify(bird.canChirp(volume: any())).wasCalled()     // Called with any volume
-verify(bird.canChirp(volume: notNil())).wasCalled()  // Called with any non-nil volume
-verify(bird.canChirp(volume: 10)).wasCalled()        // Called with volume = 10
-
-
-

Parameters

- - - - - - - - - - - - - - - - -
mock

A mocked declaration to verify.

-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/0.18.0/~>-561b2ad/index.html b/docs/0.18.0/~>-561b2ad/index.html deleted file mode 100644 index c74502bf..00000000 --- a/docs/0.18.0/~>-561b2ad/index.html +++ /dev/null @@ -1,1420 +0,0 @@ - - - - - - Mockingbird - ~> - - - -
- - - Mockingbird - - Documentation - - 0.18.0 -
- - - - - -
-
-

- Operator - ~> -

- -
-
infix operator ~>
-
-
-

The stubbing operator is used to bind an implementation to an intermediary Stub object.

- -
-
-

Implementations

-
-

- DynamicStubbingManager<ReturnType> ~> @escaping @autoclosure () -> ReturnType - -

-
-
public func ~> <ReturnType>(
-  manager: DynamicStubbingManager<ReturnType>,
-  implementation: @escaping @autoclosure () -> ReturnType
-)  
-
-
-

Stub a mocked method or property by returning a single value.

- -
-
-

Stubbing allows you to define custom behavior for mocks to perform.

- -
given(bird.doMethod()) ~> someValue
-given(bird.property) ~> someValue
-
-

Match exact or wildcard argument values when stubbing methods with parameters. Stubs added -later have a higher precedence, so add stubs with specific matchers last.

- -
given(bird.canChirp(volume: any())) ~> true     // Any volume
-given(bird.canChirp(volume: notNil())) ~> true  // Any non-nil volume
-given(bird.canChirp(volume: 10)) ~> true        // Volume = 10
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerDynamic​Stubbing​Manager<Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementation@escaping @autoclosure () -> Return​Type

A stubbed value to return.

-
-
-
-

- DynamicStubbingManager<ReturnType> ~> @escaping () -> ReturnType - -

-
-
public func ~> <ReturnType>(
-  manager: DynamicStubbingManager<ReturnType>,
-  implementation: @escaping () -> ReturnType
-)  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerDynamic​Stubbing​Manager<Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementation@escaping () -> Return​Type

A closure implementation stub to evaluate.

-
-
-
-

- DynamicStubbingManager<ReturnType> ~> @escaping (P0) -> ReturnType - -

-
-
public func ~> <P0,ReturnType>(
-  manager: DynamicStubbingManager<ReturnType>,
-  implementation: @escaping (P0) -> ReturnType
-)  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerDynamic​Stubbing​Manager<Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementation@escaping (P0) -> Return​Type

A closure implementation stub to evaluate.

-
-
-
-

- DynamicStubbingManager<ReturnType> ~> @escaping (P0,P1) -> ReturnType - -

-
-
public func ~> <P0,P1,ReturnType>(
-  manager: DynamicStubbingManager<ReturnType>,
-  implementation: @escaping (P0,P1) -> ReturnType
-)  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerDynamic​Stubbing​Manager<Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementation@escaping (P0,P1) -> Return​Type

A closure implementation stub to evaluate.

-
-
-
-

- DynamicStubbingManager<ReturnType> ~> @escaping (P0,P1,P2) -> ReturnType - -

-
-
public func ~> <P0,P1,P2,ReturnType>(
-  manager: DynamicStubbingManager<ReturnType>,
-  implementation: @escaping (P0,P1,P2) -> ReturnType
-)  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerDynamic​Stubbing​Manager<Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementation@escaping (P0,P1,P2) -> Return​Type

A closure implementation stub to evaluate.

-
-
-
-

- DynamicStubbingManager<ReturnType> ~> @escaping (P0,P1,P2,P3) -> ReturnType - -

-
-
public func ~> <P0,P1,P2,P3,ReturnType>(
-  manager: DynamicStubbingManager<ReturnType>,
-  implementation: @escaping (P0,P1,P2,P3) -> ReturnType
-)  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerDynamic​Stubbing​Manager<Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementation@escaping (P0,P1,P2,P3) -> Return​Type

A closure implementation stub to evaluate.

-
-
-
-

- DynamicStubbingManager<ReturnType> ~> @escaping (P0,P1,P2,P3,P4) -> ReturnType - -

-
-
public func ~> <P0,P1,P2,P3,P4,ReturnType>(
-  manager: DynamicStubbingManager<ReturnType>,
-  implementation: @escaping (P0,P1,P2,P3,P4) -> ReturnType
-)  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerDynamic​Stubbing​Manager<Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementation@escaping (P0,P1,P2,P3,P4) -> Return​Type

A closure implementation stub to evaluate.

-
-
-
-

- DynamicStubbingManager<ReturnType> ~> @escaping (P0,P1,P2,P3,P4,P5) -> ReturnType - -

-
-
public func ~> <P0,P1,P2,P3,P4,P5,ReturnType>(
-  manager: DynamicStubbingManager<ReturnType>,
-  implementation: @escaping (P0,P1,P2,P3,P4,P5) -> ReturnType
-)  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerDynamic​Stubbing​Manager<Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementation@escaping (P0,P1,P2,P3,P4,P5) -> Return​Type

A closure implementation stub to evaluate.

-
-
-
-

- DynamicStubbingManager<ReturnType> ~> @escaping (P0,P1,P2,P3,P4,P5,P6) -> ReturnType - -

-
-
public func ~> <P0,P1,P2,P3,P4,P5,P6,ReturnType>(
-  manager: DynamicStubbingManager<ReturnType>,
-  implementation: @escaping (P0,P1,P2,P3,P4,P5,P6) -> ReturnType
-)  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerDynamic​Stubbing​Manager<Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementation@escaping (P0,P1,P2,P3,P4,P5,P6) -> Return​Type

A closure implementation stub to evaluate.

-
-
-
-

- DynamicStubbingManager<ReturnType> ~> @escaping (P0,P1,P2,P3,P4,P5,P6,P7) -> ReturnType - -

-
-
public func ~> <P0,P1,P2,P3,P4,P5,P6,P7,ReturnType>(
-  manager: DynamicStubbingManager<ReturnType>,
-  implementation: @escaping (P0,P1,P2,P3,P4,P5,P6,P7) -> ReturnType
-)  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerDynamic​Stubbing​Manager<Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementation@escaping (P0,P1,P2,P3,P4,P5,P6,P7) -> Return​Type

A closure implementation stub to evaluate.

-
-
-
-

- DynamicStubbingManager<ReturnType> ~> @escaping (P0,P1,P2,P3,P4,P5,P6,P7,P8) -> ReturnType - -

-
-
public func ~> <P0,P1,P2,P3,P4,P5,P6,P7,P8,ReturnType>(
-  manager: DynamicStubbingManager<ReturnType>,
-  implementation: @escaping (P0,P1,P2,P3,P4,P5,P6,P7,P8) -> ReturnType
-)  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerDynamic​Stubbing​Manager<Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementation@escaping (P0,P1,P2,P3,P4,P5,P6,P7,P8) -> Return​Type

A closure implementation stub to evaluate.

-
-
-
-

- DynamicStubbingManager<ReturnType> ~> @escaping (P0,P1,P2,P3,P4,P5,P6,P7,P8,P9) -> ReturnType - -

-
-
public func ~> <P0,P1,P2,P3,P4,P5,P6,P7,P8,P9,ReturnType>(
-  manager: DynamicStubbingManager<ReturnType>,
-  implementation: @escaping (P0,P1,P2,P3,P4,P5,P6,P7,P8,P9) -> ReturnType
-)  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerDynamic​Stubbing​Manager<Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementation@escaping (P0,P1,P2,P3,P4,P5,P6,P7,P8,P9) -> Return​Type

A closure implementation stub to evaluate.

-
-
-
-

- DynamicStubbingManager<ReturnType> ~> @escaping () throws -> ReturnType - -

-
-
public func ~> <ReturnType>(
-  manager: DynamicStubbingManager<ReturnType>,
-  implementation: @escaping () throws -> ReturnType
-)  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerDynamic​Stubbing​Manager<Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementation@escaping () throws -> Return​Type

A closure implementation stub to evaluate.

-
-
-
-

- DynamicStubbingManager<ReturnType> ~> @escaping (P0) throws -> ReturnType - -

-
-
public func ~> <P0,ReturnType>(
-  manager: DynamicStubbingManager<ReturnType>,
-  implementation: @escaping (P0) throws -> ReturnType
-)  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerDynamic​Stubbing​Manager<Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementation@escaping (P0) throws -> Return​Type

A closure implementation stub to evaluate.

-
-
-
-

- DynamicStubbingManager<ReturnType> ~> @escaping (P0,P1) throws -> ReturnType - -

-
-
public func ~> <P0,P1,ReturnType>(
-  manager: DynamicStubbingManager<ReturnType>,
-  implementation: @escaping (P0,P1) throws -> ReturnType
-)  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerDynamic​Stubbing​Manager<Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementation@escaping (P0,P1) throws -> Return​Type

A closure implementation stub to evaluate.

-
-
-
-

- DynamicStubbingManager<ReturnType> ~> @escaping (P0,P1,P2) throws -> ReturnType - -

-
-
public func ~> <P0,P1,P2,ReturnType>(
-  manager: DynamicStubbingManager<ReturnType>,
-  implementation: @escaping (P0,P1,P2) throws -> ReturnType
-)  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerDynamic​Stubbing​Manager<Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementation@escaping (P0,P1,P2) throws -> Return​Type

A closure implementation stub to evaluate.

-
-
-
-

- DynamicStubbingManager<ReturnType> ~> @escaping (P0,P1,P2,P3) throws -> ReturnType - -

-
-
public func ~> <P0,P1,P2,P3,ReturnType>(
-  manager: DynamicStubbingManager<ReturnType>,
-  implementation: @escaping (P0,P1,P2,P3) throws -> ReturnType
-)  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerDynamic​Stubbing​Manager<Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementation@escaping (P0,P1,P2,P3) throws -> Return​Type

A closure implementation stub to evaluate.

-
-
-
-

- DynamicStubbingManager<ReturnType> ~> @escaping (P0,P1,P2,P3,P4) throws -> ReturnType - -

-
-
public func ~> <P0,P1,P2,P3,P4,ReturnType>(
-  manager: DynamicStubbingManager<ReturnType>,
-  implementation: @escaping (P0,P1,P2,P3,P4) throws -> ReturnType
-)  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerDynamic​Stubbing​Manager<Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementation@escaping (P0,P1,P2,P3,P4) throws -> Return​Type

A closure implementation stub to evaluate.

-
-
-
-

- DynamicStubbingManager<ReturnType> ~> @escaping (P0,P1,P2,P3,P4,P5) throws -> ReturnType - -

-
-
public func ~> <P0,P1,P2,P3,P4,P5,ReturnType>(
-  manager: DynamicStubbingManager<ReturnType>,
-  implementation: @escaping (P0,P1,P2,P3,P4,P5) throws -> ReturnType
-)  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerDynamic​Stubbing​Manager<Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementation@escaping (P0,P1,P2,P3,P4,P5) throws -> Return​Type

A closure implementation stub to evaluate.

-
-
-
-

- DynamicStubbingManager<ReturnType> ~> @escaping (P0,P1,P2,P3,P4,P5,P6) throws -> ReturnType - -

-
-
public func ~> <P0,P1,P2,P3,P4,P5,P6,ReturnType>(
-  manager: DynamicStubbingManager<ReturnType>,
-  implementation: @escaping (P0,P1,P2,P3,P4,P5,P6) throws -> ReturnType
-)  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerDynamic​Stubbing​Manager<Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementation@escaping (P0,P1,P2,P3,P4,P5,P6) throws -> Return​Type

A closure implementation stub to evaluate.

-
-
-
-

- DynamicStubbingManager<ReturnType> ~> @escaping (P0,P1,P2,P3,P4,P5,P6,P7) throws -> ReturnType - -

-
-
public func ~> <P0,P1,P2,P3,P4,P5,P6,P7,ReturnType>(
-  manager: DynamicStubbingManager<ReturnType>,
-  implementation: @escaping (P0,P1,P2,P3,P4,P5,P6,P7) throws -> ReturnType
-)  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerDynamic​Stubbing​Manager<Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementation@escaping (P0,P1,P2,P3,P4,P5,P6,P7) throws -> Return​Type

A closure implementation stub to evaluate.

-
-
-
-

- DynamicStubbingManager<ReturnType> ~> @escaping (P0,P1,P2,P3,P4,P5,P6,P7,P8) throws -> ReturnType - -

-
-
public func ~> <P0,P1,P2,P3,P4,P5,P6,P7,P8,ReturnType>(
-  manager: DynamicStubbingManager<ReturnType>,
-  implementation: @escaping (P0,P1,P2,P3,P4,P5,P6,P7,P8) throws -> ReturnType
-)  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerDynamic​Stubbing​Manager<Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementation@escaping (P0,P1,P2,P3,P4,P5,P6,P7,P8) throws -> Return​Type

A closure implementation stub to evaluate.

-
-
-
-

- DynamicStubbingManager<ReturnType> ~> @escaping (P0,P1,P2,P3,P4,P5,P6,P7,P8,P9) throws -> ReturnType - -

-
-
public func ~> <P0,P1,P2,P3,P4,P5,P6,P7,P8,P9,ReturnType>(
-  manager: DynamicStubbingManager<ReturnType>,
-  implementation: @escaping (P0,P1,P2,P3,P4,P5,P6,P7,P8,P9) throws -> ReturnType
-)  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerDynamic​Stubbing​Manager<Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementation@escaping (P0,P1,P2,P3,P4,P5,P6,P7,P8,P9) throws -> Return​Type

A closure implementation stub to evaluate.

-
-
-
-

- StaticStubbingManager<DeclarationType, InvocationType, ReturnType> ~> @escaping @autoclosure () -> ReturnType - -

-
-
public func ~> <DeclarationType: Declaration, InvocationType, ReturnType>(
-  manager: StaticStubbingManager<DeclarationType, InvocationType, ReturnType>,
-  implementation: @escaping @autoclosure () -> ReturnType
-)  
-
-
-

Stub a mocked method or property by returning a single value.

- -
-
-

Stubbing allows you to define custom behavior for mocks to perform.

- -
given(bird.doMethod()) ~> someValue
-given(bird.property) ~> someValue
-
-

Match exact or wildcard argument values when stubbing methods with parameters. Stubs added -later have a higher precedence, so add stubs with specific matchers last.

- -
given(bird.canChirp(volume: any())) ~> true     // Any volume
-given(bird.canChirp(volume: notNil())) ~> true  // Any non-nil volume
-given(bird.canChirp(volume: 10)) ~> true        // Volume = 10
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerStatic​Stubbing​Manager<Declaration​Type, Invocation​Type, Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementation@escaping @autoclosure () -> Return​Type

A stubbed value to return.

-
-
-
-

- StaticStubbingManager<DeclarationType, InvocationType, ReturnType> ~> InvocationType - -

-
-
public func ~> <DeclarationType: Declaration, InvocationType, ReturnType>(
-  manager: StaticStubbingManager<DeclarationType, InvocationType, ReturnType>,
-  implementation: InvocationType
-)  
-
-
-

Stub a mocked method or property with a closure implementation.

- -
-
-

Use a closure to implement stubs that contain logic, interact with arguments, or throw errors.

- -
given(bird.canChirp(volume: any())) ~> { volume in
-  return volume < 42
-}
-
-

Stubs are type safe and work with inout and closure parameter types.

- -
protocol Bird {
-  func send(_ message: inout String)
-  func fly(callback: (Result) -> Void)
-}
-
-// Inout parameter type
-var message = "Hello!"
-bird.send(&message)
-print(message)   // Prints "HELLO!"
-
-// Closure parameter type
-given(bird.fly(callback: any())).will { callback in
-  callback(.success)
-}
-bird.fly(callback: { result in
-  print(result)  // Prints Result.success
-})
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerStatic​Stubbing​Manager<Declaration​Type, Invocation​Type, Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
implementationInvocation​Type

A closure implementation stub to evaluate.

-
-
-
-

- StubbingManager<DeclarationType, InvocationType, ReturnType> ~> ImplementationProvider<DeclarationType, InvocationType, ReturnType> - -

-
-
public func ~> <DeclarationType: Declaration, InvocationType, ReturnType>(
-  manager: StubbingManager<DeclarationType, InvocationType, ReturnType>,
-  provider: ImplementationProvider<DeclarationType, InvocationType, ReturnType>
-)  
-
-
-

Stub a mocked method or property with an implementation provider.

- -
-
-

There are several preset implementation providers such as lastSetValue, which can be used -with property getters to automatically save and return values.

- -
given(bird.name) ~> lastSetValue(initial: "")
-print(bird.name)  // Prints ""
-bird.name = "Ryan"
-print(bird.name)  // Prints "Ryan"
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerStubbing​Manager<Declaration​Type, Invocation​Type, Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
providerImplementation​Provider<Declaration​Type, Invocation​Type, Return​Type>

An implementation provider that creates closure implementation stubs.

-
-
-
-

- StubbingManager<DeclarationType, InvocationType, ReturnType> ~> ForwardingContext - -

-
-
public func ~> <DeclarationType: Declaration, InvocationType, ReturnType>(
-  manager: StubbingManager<DeclarationType, InvocationType, ReturnType>,
-  forwardingContext: ForwardingContext
-)  
-
-
-

Stub a mocked method or property by forwarding invocations to a target.

- -
-
-

Use the stubbing operator to bind a specific mocked declaration to a forwarding context.

- -
class Crow {
-  let name: String
-  init(name: String) { self.name = name }
-}
-
-given(bird.name) ~> forward(to: Crow(name: "Ryan"))
-print(bird.name)  // Prints "Ryan"
-
-
-

Parameters

- - - - - - - - - - - - - - - - - - - - - -
managerStubbing​Manager<Declaration​Type, Invocation​Type, Return​Type>

A stubbing manager containing declaration and argument metadata for stubbing.

-
forwarding​ContextForwarding​Context

A context that should receive forwarded invocations.

-
-
-
-
-
- -
-

- Generated on using swift-doc 1.0.0-rc.1. -

-
- - diff --git a/docs/Mockingbird.docc/Info.plist b/docs/Mockingbird.docc/Info.plist new file mode 100644 index 00000000..64a7eb2e --- /dev/null +++ b/docs/Mockingbird.docc/Info.plist @@ -0,0 +1,14 @@ + + + + + CFBundleIdentifier + co.bird.mockingbird + CFBundleDisplayName + Mockingbird + CFBundleName + Mockingbird + CFBundleVersion + 0.18.0 + + diff --git a/docs/images/mockingbird-hero-image.png b/docs/images/mockingbird-hero-image.png deleted file mode 100644 index a37aab0e0af6a0661333f2eb051e1ccac2041893..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57444 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 z 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 z diff --git a/docs/latest/index.html b/docs/latest/index.html deleted file mode 100644 index 35bc5dda..00000000 --- a/docs/latest/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/docs/swift-doc b/docs/swift-doc deleted file mode 160000 index 28fee5b2..00000000 --- a/docs/swift-doc +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 28fee5b287dc5518b36ed6d4822e7b0353254eee From dfe02e107b5f173eac19d644c521c5b74b779beb Mon Sep 17 00:00:00 2001 From: Andrew Chang Date: Tue, 4 Jan 2022 13:38:13 -1000 Subject: [PATCH 04/20] Add initial DocC integration (wip) --- .gitignore | 3 + Mockingbird.xcodeproj/project.pbxproj | 19 ++- .../MockingbirdAutomation/Interop/DocC.swift | 37 +++++ .../Interop/SwiftPackage.swift | 17 ++ .../Commands/Build.swift | 1 + .../Commands/BuildDocumentation.swift | 50 ++++++ .../Commands/TestExampleProject.swift | 150 +++++++++--------- 7 files changed, 199 insertions(+), 78 deletions(-) create mode 100644 Sources/MockingbirdAutomation/Interop/DocC.swift create mode 100644 Sources/MockingbirdAutomationCli/Commands/BuildDocumentation.swift diff --git a/.gitignore b/.gitignore index d7ddcc90..21096017 100644 --- a/.gitignore +++ b/.gitignore @@ -49,5 +49,8 @@ Packages/ .swiftpm/ /Package.resolved +## DocC +.docc-build + ## macOS .DS_Store diff --git a/Mockingbird.xcodeproj/project.pbxproj b/Mockingbird.xcodeproj/project.pbxproj index 9ad08e61..288a8a3a 100644 --- a/Mockingbird.xcodeproj/project.pbxproj +++ b/Mockingbird.xcodeproj/project.pbxproj @@ -177,6 +177,8 @@ 28D08CD327747A4B00AE7C39 /* ObjectiveCParameterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28D08CD1277479B600AE7C39 /* ObjectiveCParameterTests.swift */; }; 28D08CD62775338100AE7C39 /* OptionGroupArgumentEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28D08CD52775338100AE7C39 /* OptionGroupArgumentEncoding.swift */; }; 28DAD96E251BDD66001A0B3F /* Project.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28DAD96D251BDD66001A0B3F /* Project.swift */; }; + 28DBC3DF277ED20800A6C96F /* BuildDocumentation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28DBC3DE277ED20800A6C96F /* BuildDocumentation.swift */; }; + 28DBC3F0277EDAFC00A6C96F /* DocC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28DBC3EE277EDAF600A6C96F /* DocC.swift */; }; 28DDDFC126B8571D002556C7 /* DynamicCast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28DDDFC026B8571D002556C7 /* DynamicCast.swift */; }; 28E2A58E277E8F43002975B3 /* ArgumentParser in Frameworks */ = {isa = PBXBuildFile; productRef = 28E2A56C277E8F43002975B3 /* ArgumentParser */; }; 28E2A58F277E8F43002975B3 /* ZIPFoundation in Frameworks */ = {isa = PBXBuildFile; productRef = 28E2A56A277E8F43002975B3 /* ZIPFoundation */; }; @@ -722,6 +724,8 @@ 28D08CD1277479B600AE7C39 /* ObjectiveCParameterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ObjectiveCParameterTests.swift; sourceTree = ""; }; 28D08CD52775338100AE7C39 /* OptionGroupArgumentEncoding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OptionGroupArgumentEncoding.swift; sourceTree = ""; }; 28DAD96D251BDD66001A0B3F /* Project.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Project.swift; sourceTree = ""; }; + 28DBC3DE277ED20800A6C96F /* BuildDocumentation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BuildDocumentation.swift; sourceTree = ""; }; + 28DBC3EE277EDAF600A6C96F /* DocC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DocC.swift; sourceTree = ""; }; 28DDDFC026B8571D002556C7 /* DynamicCast.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DynamicCast.swift; sourceTree = ""; }; 28E2A530277E8BE1002975B3 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; 28E2A594277E8F43002975B3 /* MockingbirdAutomationCli */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = MockingbirdAutomationCli; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -1196,6 +1200,7 @@ 285C8E12277AD56F00DE525A /* Carthage.swift */, 285C8E14277AD6C700DE525A /* CocoaPods.swift */, 285C8E87277C30B700DE525A /* Codesign.swift */, + 28DBC3EE277EDAF600A6C96F /* DocC.swift */, 285C8E8D277C677A00DE525A /* InstallNameTool.swift */, 285C8E8F277C71F800DE525A /* PlistBuddy.swift */, 285C8D842779482400DE525A /* Simulator.swift */, @@ -1396,6 +1401,7 @@ children = ( 285C8E28277B45A100DE525A /* Build.swift */, 285CEA8B278523C70005C91F /* BuildCli.swift */, + 28DBC3DE277ED20800A6C96F /* BuildDocumentation.swift */, 285CEA8C278523C70005C91F /* BuildFramework.swift */, 285C8E93277D315F00DE525A /* Configure.swift */, 285C8E96277D554000DE525A /* Test.swift */, @@ -2181,7 +2187,7 @@ buildRules = ( ); dependencies = ( - 288872FE2785327C001B92CF /* PBXTargetDependency */, + 28DBC3E5277ED39C00A6C96F /* PBXTargetDependency */, ); name = MockingbirdAutomation; packageProductDependencies = ( @@ -2201,9 +2207,8 @@ buildRules = ( ); dependencies = ( - 2896E3E8278530A700C2C574 /* PBXTargetDependency */, - 28887300278532A7001B92CF /* PBXTargetDependency */, - 28E2A568277E8F43002975B3 /* PBXTargetDependency */, + 28DBC3E1277ED38A00A6C96F /* PBXTargetDependency */, + 28DBC3E3277ED39300A6C96F /* PBXTargetDependency */, ); name = MockingbirdAutomationCli; packageProductDependencies = ( @@ -2225,6 +2230,7 @@ buildRules = ( ); dependencies = ( + 2855B8ED278568DF00E2ECD7 /* PBXTargetDependency */, OBJ_849 /* PBXTargetDependency */, ); name = MockingbirdCli; @@ -2247,6 +2253,7 @@ buildRules = ( ); dependencies = ( + 28DBC3E9277ED3B000A6C96F /* PBXTargetDependency */, ); name = MockingbirdFramework; productName = MockingbirdFramework; @@ -2263,6 +2270,7 @@ buildRules = ( ); dependencies = ( + 28DBC3EB277ED3B400A6C96F /* PBXTargetDependency */, ); name = MockingbirdGenerator; packageProductDependencies = ( @@ -2307,6 +2315,7 @@ OBJ_1103 /* PBXTargetDependency */, OBJ_1104 /* PBXTargetDependency */, OBJ_1116 /* PBXTargetDependency */, + 28DBC3ED277ED3BA00A6C96F /* PBXTargetDependency */, ); name = MockingbirdTests; productName = MockingbirdTests; @@ -2458,6 +2467,7 @@ 286DE64C277EB78C0047B0F3 /* Carthage.swift in Sources */, 286DE64D277EB78C0047B0F3 /* CocoaPods.swift in Sources */, 286DE64E277EB78C0047B0F3 /* Codesign.swift in Sources */, + 28DBC3F0277EDAFC00A6C96F /* DocC.swift in Sources */, 286DE64F277EB78C0047B0F3 /* InstallNameTool.swift in Sources */, 286DE650277EB78C0047B0F3 /* PlistBuddy.swift in Sources */, 286DE651277EB78C0047B0F3 /* Simulator.swift in Sources */, @@ -2479,6 +2489,7 @@ 28E2A597277E8F56002975B3 /* Build.swift in Sources */, 28E2A598277E8F58002975B3 /* Configure.swift in Sources */, 28E2A599277E8F59002975B3 /* Test.swift in Sources */, + 28DBC3DF277ED20800A6C96F /* BuildDocumentation.swift in Sources */, 285CEA8E278523C70005C91F /* BuildFramework.swift in Sources */, 28E2A59A277E8F5D002975B3 /* TestExampleProject.swift in Sources */, ); diff --git a/Sources/MockingbirdAutomation/Interop/DocC.swift b/Sources/MockingbirdAutomation/Interop/DocC.swift new file mode 100644 index 00000000..97a03c7e --- /dev/null +++ b/Sources/MockingbirdAutomation/Interop/DocC.swift @@ -0,0 +1,37 @@ +import Foundation +import PathKit + +public enum DocC { + static func getEnvironment( + _ baseEnvironment: [String: String] = ProcessInfo.processInfo.environment, + renderer: Path? + ) -> [String: String] { + var environment = baseEnvironment + if let renderer = renderer { + environment["DOCC_HTML_DIR"] = renderer.string + } + return environment + } + + public static func preview(bundle: Path, + symbolGraph: Path, + renderer: Path? = nil) throws { + try Subprocess("xcrun", [ + "docc", + "preview", bundle.string, + "--additional-symbol-graph-dir", symbolGraph.string, + ], environment: getEnvironment(renderer: renderer)).run() + } + + public static func convert(bundle: Path, + symbolGraph: Path, + renderer: Path? = nil, + output: Path) throws { + try Subprocess("xcrun", [ + "docc", + "convert", bundle.string, + "--additional-symbol-graph-dir", symbolGraph.string, + "--output-dir", output.string, + ], environment: getEnvironment(renderer: renderer)).run() + } +} diff --git a/Sources/MockingbirdAutomation/Interop/SwiftPackage.swift b/Sources/MockingbirdAutomation/Interop/SwiftPackage.swift index d9a022c2..4f773297 100644 --- a/Sources/MockingbirdAutomation/Interop/SwiftPackage.swift +++ b/Sources/MockingbirdAutomation/Interop/SwiftPackage.swift @@ -81,4 +81,21 @@ public enum SwiftPackage { workingDirectory: package.parent()).runWithStringOutput() return Path(binPath.trimmingCharacters(in: .whitespacesAndNewlines)) + "mockingbird" } + + public static func emitSymbolGraph( + target: BuildTarget, + environment: [String: String] = ProcessInfo.processInfo.environment, + packageConfiguration: PackageConfiguration? = nil, + output: Path, + package: Path + ) throws { + let environment = packageConfiguration?.getEnvironment(environment) ?? environment + try Subprocess("xcrun", [ + "swift", + "build", + "--\(target.optionName)", target.name, + "-Xswiftc", "-emit-symbol-graph", + "-Xswiftc", "-emit-symbol-graph-dir", "-Xswiftc", output.string, + ], environment: environment, workingDirectory: package.parent()).run() + } } diff --git a/Sources/MockingbirdAutomationCli/Commands/Build.swift b/Sources/MockingbirdAutomationCli/Commands/Build.swift index e546f3d7..57e55438 100644 --- a/Sources/MockingbirdAutomationCli/Commands/Build.swift +++ b/Sources/MockingbirdAutomationCli/Commands/Build.swift @@ -10,6 +10,7 @@ struct Build: ParsableCommand { subcommands: [ BuildCli.self, BuildFramework.self, + BuildDocumentation.self, ]) struct Options: ParsableArguments { diff --git a/Sources/MockingbirdAutomationCli/Commands/BuildDocumentation.swift b/Sources/MockingbirdAutomationCli/Commands/BuildDocumentation.swift new file mode 100644 index 00000000..1addd9f0 --- /dev/null +++ b/Sources/MockingbirdAutomationCli/Commands/BuildDocumentation.swift @@ -0,0 +1,50 @@ +import ArgumentParser +import Foundation +import MockingbirdAutomation +import PathKit + +extension Build { + struct BuildDocumentation: ParsableCommand { + static var configuration = CommandConfiguration( + commandName: "docs", + abstract: "Build a documentation archive using DocC.") + + @Option(help: "Path to the documentation bundle directory.") + var bundle: String = "./Sources/Mockingbird.docc" + + @Option(help: "Path to a documentation renderer.") + var renderer: String = "./Sources/Mockingbird.docc/Renderer" + + @OptionGroup() + var globalOptions: Options + + func run() throws { + let symbolGraphs = Path("./.build/symbol-graphs") + try symbolGraphs.mkpath() + try SwiftPackage.emitSymbolGraph(target: .target(name: "Mockingbird"), + packageConfiguration: .libraries, + output: symbolGraphs, + package: Path("./Package.swift")) + + let filteredSymbolGraphs = Path("./.build/mockingbird-symbol-graphs") + try? filteredSymbolGraphs.delete() + try filteredSymbolGraphs.mkpath() + + let mockingbirdSymbolGraphs = symbolGraphs.glob("Mockingbird@*.symbols.json") + + [symbolGraphs + "Mockingbird.symbols.json"] + try mockingbirdSymbolGraphs.forEach({ try $0.copy(filteredSymbolGraphs + $0.lastComponent) }) + + let bundlePath = Path(bundle) + if let location = globalOptions.archiveLocation { + try DocC.convert(bundle: bundlePath, + symbolGraph: filteredSymbolGraphs, + renderer: Path(renderer), + output: Path(location)) + } else { + try DocC.preview(bundle: bundlePath, + symbolGraph: filteredSymbolGraphs, + renderer: Path(renderer)) + } + } + } +} diff --git a/Sources/MockingbirdAutomationCli/Commands/TestExampleProject.swift b/Sources/MockingbirdAutomationCli/Commands/TestExampleProject.swift index b572d46b..2a601448 100755 --- a/Sources/MockingbirdAutomationCli/Commands/TestExampleProject.swift +++ b/Sources/MockingbirdAutomationCli/Commands/TestExampleProject.swift @@ -4,90 +4,92 @@ import PathKit import MockingbirdAutomation import Foundation -struct TestExampleProject: ParsableCommand { - static var configuration = CommandConfiguration( - commandName: "example", - abstract: "Run an end-to-end example project test.", - subcommands: [ - TestCocoaPods.self, - TestCarthage.self, - TestSpmProject.self, - TestSpmPackage.self, - ]) - - enum ExampleProjectType: String, Codable, ExpressibleByArgument { - case cocoapods = "cocoapods" - case carthage = "carthage" - case spmProject = "spm-project" - case spmPackage = "spm-package" - } - - struct TestCocoaPods: ParsableCommand { +extension Test { + struct TestExampleProject: ParsableCommand { static var configuration = CommandConfiguration( - commandName: "cocoapods", - abstract: "Test the CocoaPods example project.") - func run() throws { - try Simulator.performInSimulator { uuid in - guard let uuid = uuid else { - logError("Unable to create simulator") - return + commandName: "example", + abstract: "Run an end-to-end example project test.", + subcommands: [ + TestCocoaPods.self, + TestCarthage.self, + TestSpmProject.self, + TestSpmPackage.self, + ]) + + enum ExampleProjectType: String, Codable, ExpressibleByArgument { + case cocoapods = "cocoapods" + case carthage = "carthage" + case spmProject = "spm-project" + case spmPackage = "spm-package" + } + + struct TestCocoaPods: ParsableCommand { + static var configuration = CommandConfiguration( + commandName: "cocoapods", + abstract: "Test the CocoaPods example project.") + func run() throws { + try Simulator.performInSimulator { uuid in + guard let uuid = uuid else { + logError("Unable to create simulator") + return + } + let workspacePath = Path("Examples/CocoaPodsExample/CocoaPodsExample.xcworkspace") + try CocoaPods.install(workspace: workspacePath) + try XcodeBuild.test(target: .scheme(name: "CocoaPodsExample"), + project: .workspace(path: workspacePath), + destination: .iOSSimulator(deviceUUID: uuid)) } - let workspacePath = Path("Examples/CocoaPodsExample/CocoaPodsExample.xcworkspace") - try CocoaPods.install(workspace: workspacePath) - try XcodeBuild.test(target: .scheme(name: "CocoaPodsExample"), - project: .workspace(path: workspacePath), - destination: .iOSSimulator(deviceUUID: uuid)) } } - } - - struct TestCarthage: ParsableCommand { - static var configuration = CommandConfiguration( - commandName: "carthage", - abstract: "Test the Carthage example project.") - func run() throws { - try Simulator.performInSimulator { uuid in - guard let uuid = uuid else { - logError("Unable to create simulator") - return + + struct TestCarthage: ParsableCommand { + static var configuration = CommandConfiguration( + commandName: "carthage", + abstract: "Test the Carthage example project.") + func run() throws { + try Simulator.performInSimulator { uuid in + guard let uuid = uuid else { + logError("Unable to create simulator") + return + } + let projectPath = Path("Examples/CarthageExample/CarthageExample.xcodeproj") + try Carthage.update(platform: .iOS, project: projectPath) + try XcodeBuild.test(target: .scheme(name: "CarthageExample"), + project: .project(path: projectPath), + destination: .iOSSimulator(deviceUUID: uuid)) } - let projectPath = Path("Examples/CarthageExample/CarthageExample.xcodeproj") - try Carthage.update(platform: .iOS, project: projectPath) - try XcodeBuild.test(target: .scheme(name: "CarthageExample"), - project: .project(path: projectPath), - destination: .iOSSimulator(deviceUUID: uuid)) } } - } - - struct TestSpmProject: ParsableCommand { - static var configuration = CommandConfiguration( - commandName: "spm-project", - abstract: "Test the SwiftPM example project.") - func run() throws { - try Simulator.performInSimulator { uuid in - guard let uuid = uuid else { - logError("Unable to create simulator") - return + + struct TestSpmProject: ParsableCommand { + static var configuration = CommandConfiguration( + commandName: "spm-project", + abstract: "Test the SwiftPM example project.") + func run() throws { + try Simulator.performInSimulator { uuid in + guard let uuid = uuid else { + logError("Unable to create simulator") + return + } + let projectPath = Path("Examples/SPMProjectExample/SPMProjectExample.xcodeproj") + try XcodeBuild.resolvePackageDependencies(project: .project(path: projectPath)) + try XcodeBuild.test(target: .scheme(name: "SPMProjectExample"), + project: .project(path: projectPath), + destination: .iOSSimulator(deviceUUID: uuid)) } - let projectPath = Path("Examples/SPMProjectExample/SPMProjectExample.xcodeproj") - try XcodeBuild.resolvePackageDependencies(project: .project(path: projectPath)) - try XcodeBuild.test(target: .scheme(name: "SPMProjectExample"), - project: .project(path: projectPath), - destination: .iOSSimulator(deviceUUID: uuid)) } } - } - - struct TestSpmPackage: ParsableCommand { - static var configuration = CommandConfiguration( - commandName: "spm-package", - abstract: "Test the SwiftPM example package.") - func run() throws { - let packagePath = Path("Examples/SPMPackageExample/Package.swift") - try SwiftPackage.update(package: packagePath) - try Subprocess("./gen-mocks.sh", workingDirectory: packagePath.parent()).run() - try SwiftPackage.test(package: packagePath) + + struct TestSpmPackage: ParsableCommand { + static var configuration = CommandConfiguration( + commandName: "spm-package", + abstract: "Test the SwiftPM example package.") + func run() throws { + let packagePath = Path("Examples/SPMPackageExample/Package.swift") + try SwiftPackage.update(package: packagePath) + try Subprocess("./gen-mocks.sh", workingDirectory: packagePath.parent()).run() + try SwiftPackage.test(package: packagePath) + } } } } From a237c391ef5f7a6acb94bf98a1cf73d0dbb87c6c Mon Sep 17 00:00:00 2001 From: Andrew Chang Date: Tue, 4 Jan 2022 11:28:40 -1000 Subject: [PATCH 05/20] Add swift-docc-render dist --- .../css/documentation-topic.de084985.css | 9 +++ ...opic~topic~tutorials-overview.cb5e3789.css | 9 +++ docs/swift-docc-render/css/index.a111dc80.css | 9 +++ docs/swift-docc-render/css/topic.fe88ced3.css | 9 +++ .../css/tutorials-overview.8754eb09.css | 9 +++ docs/swift-docc-render/favicon.ico | Bin 0 -> 15406 bytes docs/swift-docc-render/favicon.svg | 11 ++++ .../img/added-icon.d6f7e47d.svg | 11 ++++ .../img/deprecated-icon.015b4f17.svg | 11 ++++ .../img/modified-icon.f496e73d.svg | 11 ++++ docs/swift-docc-render/index-template.html | 11 ++++ docs/swift-docc-render/index.html | 11 ++++ .../js/chunk-2d0d3105.cd72cc8e.js | 10 +++ .../js/chunk-vendors.00bf82af.js | 21 +++++++ .../js/documentation-topic.b1a26a74.js | 10 +++ ...topic~topic~tutorials-overview.c5a22800.js | 10 +++ .../js/highlight-js-bash.1b52852f.js | 10 +++ .../js/highlight-js-c.d1db3f17.js | 10 +++ .../js/highlight-js-cpp.eaddddbe.js | 10 +++ .../js/highlight-js-css.75eab1fe.js | 10 +++ .../highlight-js-custom-markdown.7cffc4b3.js | 10 +++ .../js/highlight-js-custom-swift.886dc05e.js | 10 +++ .../js/highlight-js-diff.62d66733.js | 10 +++ .../js/highlight-js-http.163e45b6.js | 10 +++ .../js/highlight-js-java.8326d9d8.js | 10 +++ .../js/highlight-js-javascript.acb8a8eb.js | 10 +++ .../js/highlight-js-json.471128d2.js | 10 +++ .../js/highlight-js-llvm.6100b125.js | 10 +++ .../js/highlight-js-markdown.90077643.js | 10 +++ .../js/highlight-js-objectivec.bcdf5156.js | 10 +++ .../js/highlight-js-perl.757d7b6f.js | 10 +++ .../js/highlight-js-php.cc8d6c27.js | 10 +++ .../js/highlight-js-python.c214ed92.js | 10 +++ .../js/highlight-js-ruby.f889d392.js | 10 +++ .../js/highlight-js-scss.62ee18da.js | 10 +++ .../js/highlight-js-shell.dd7f411f.js | 10 +++ .../js/highlight-js-swift.84f3e88c.js | 10 +++ .../js/highlight-js-xml.9c3688c7.js | 10 +++ docs/swift-docc-render/js/index.891036dc.js | 9 +++ docs/swift-docc-render/js/topic.c4c8f983.js | 20 ++++++ .../js/tutorials-overview.0dfedc70.js | 10 +++ docs/swift-docc-render/theme-settings.json | 59 ++++++++++++++++++ 42 files changed, 480 insertions(+) create mode 100644 docs/swift-docc-render/css/documentation-topic.de084985.css create mode 100644 docs/swift-docc-render/css/documentation-topic~topic~tutorials-overview.cb5e3789.css create mode 100644 docs/swift-docc-render/css/index.a111dc80.css create mode 100644 docs/swift-docc-render/css/topic.fe88ced3.css create mode 100644 docs/swift-docc-render/css/tutorials-overview.8754eb09.css create mode 100644 docs/swift-docc-render/favicon.ico create mode 100644 docs/swift-docc-render/favicon.svg create mode 100644 docs/swift-docc-render/img/added-icon.d6f7e47d.svg create mode 100644 docs/swift-docc-render/img/deprecated-icon.015b4f17.svg create mode 100644 docs/swift-docc-render/img/modified-icon.f496e73d.svg create mode 100644 docs/swift-docc-render/index-template.html create mode 100644 docs/swift-docc-render/index.html create mode 100644 docs/swift-docc-render/js/chunk-2d0d3105.cd72cc8e.js create mode 100644 docs/swift-docc-render/js/chunk-vendors.00bf82af.js create mode 100644 docs/swift-docc-render/js/documentation-topic.b1a26a74.js create mode 100644 docs/swift-docc-render/js/documentation-topic~topic~tutorials-overview.c5a22800.js create mode 100644 docs/swift-docc-render/js/highlight-js-bash.1b52852f.js create mode 100644 docs/swift-docc-render/js/highlight-js-c.d1db3f17.js create mode 100644 docs/swift-docc-render/js/highlight-js-cpp.eaddddbe.js create mode 100644 docs/swift-docc-render/js/highlight-js-css.75eab1fe.js create mode 100644 docs/swift-docc-render/js/highlight-js-custom-markdown.7cffc4b3.js create mode 100644 docs/swift-docc-render/js/highlight-js-custom-swift.886dc05e.js create mode 100644 docs/swift-docc-render/js/highlight-js-diff.62d66733.js create mode 100644 docs/swift-docc-render/js/highlight-js-http.163e45b6.js create mode 100644 docs/swift-docc-render/js/highlight-js-java.8326d9d8.js create mode 100644 docs/swift-docc-render/js/highlight-js-javascript.acb8a8eb.js create mode 100644 docs/swift-docc-render/js/highlight-js-json.471128d2.js create mode 100644 docs/swift-docc-render/js/highlight-js-llvm.6100b125.js create mode 100644 docs/swift-docc-render/js/highlight-js-markdown.90077643.js create mode 100644 docs/swift-docc-render/js/highlight-js-objectivec.bcdf5156.js create mode 100644 docs/swift-docc-render/js/highlight-js-perl.757d7b6f.js create mode 100644 docs/swift-docc-render/js/highlight-js-php.cc8d6c27.js create mode 100644 docs/swift-docc-render/js/highlight-js-python.c214ed92.js create mode 100644 docs/swift-docc-render/js/highlight-js-ruby.f889d392.js create mode 100644 docs/swift-docc-render/js/highlight-js-scss.62ee18da.js create mode 100644 docs/swift-docc-render/js/highlight-js-shell.dd7f411f.js create mode 100644 docs/swift-docc-render/js/highlight-js-swift.84f3e88c.js create mode 100644 docs/swift-docc-render/js/highlight-js-xml.9c3688c7.js create mode 100644 docs/swift-docc-render/js/index.891036dc.js create mode 100644 docs/swift-docc-render/js/topic.c4c8f983.js create mode 100644 docs/swift-docc-render/js/tutorials-overview.0dfedc70.js create mode 100644 docs/swift-docc-render/theme-settings.json diff --git a/docs/swift-docc-render/css/documentation-topic.de084985.css b/docs/swift-docc-render/css/documentation-topic.de084985.css new file mode 100644 index 00000000..2271f561 --- /dev/null +++ b/docs/swift-docc-render/css/documentation-topic.de084985.css @@ -0,0 +1,9 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */.badge[data-v-2bfc9463]{--badge-color:var(--color-badge-default);--badge-dark-color:var(--color-badge-dark-default);font-size:.70588rem;line-height:1.33333;font-weight:400;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;display:inline-block;padding:2px 10px;white-space:nowrap;background:none;border-radius:3px;margin-left:10px;border:1px solid var(--badge-color);color:var(--badge-color)}.theme-dark .badge[data-v-2bfc9463]{--badge-color:var(--badge-dark-color)}.badge-deprecated[data-v-2bfc9463]{--badge-color:var(--color-badge-deprecated);--badge-dark-color:var(--color-badge-dark-deprecated)}.badge-beta[data-v-2bfc9463]{--badge-color:var(--color-badge-beta);--badge-dark-color:var(--color-badge-dark-beta)}.hierarchy-collapsed-items[data-v-45c48d1a]{position:relative;display:inline-flex;align-items:center;margin-left:.58824rem}.hierarchy-collapsed-items .hierarchy-item-icon[data-v-45c48d1a]{width:9px;height:15px;margin-right:.58824rem}.nav--in-breakpoint-range .hierarchy-collapsed-items[data-v-45c48d1a]{display:none}.hierarchy-collapsed-items .toggle[data-v-45c48d1a]{background:var(--color-nav-hierarchy-collapse-background);border-color:var(--color-figure-gray-secondary);border-radius:4px;border-style:solid;border-width:0;font-weight:600;height:1.11765rem;text-align:center;width:2.11765rem;display:flex;align-items:center;justify-content:center}.theme-dark .hierarchy-collapsed-items .toggle[data-v-45c48d1a]{background:var(--color-nav-dark-hierarchy-collapse-background)}.hierarchy-collapsed-items .toggle.focused[data-v-45c48d1a],.hierarchy-collapsed-items .toggle[data-v-45c48d1a]:active,.hierarchy-collapsed-items .toggle[data-v-45c48d1a]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none}.indicator[data-v-45c48d1a]{width:1em;height:1em;display:flex;align-items:center}.indicator .toggle-icon[data-v-45c48d1a]{width:100%}.dropdown[data-v-45c48d1a]{background:var(--color-nav-hierarchy-collapse-background);border-color:var(--color-nav-hierarchy-collapse-borders);border-radius:4px;border-style:solid;box-shadow:0 1px 4px -1px var(--color-figure-gray-secondary);border-width:0;padding:0 .5rem;position:absolute;z-index:42;top:calc(100% + .41176rem)}.theme-dark .dropdown[data-v-45c48d1a]{background:var(--color-nav-dark-hierarchy-collapse-background);border-color:var(--color-nav-dark-hierarchy-collapse-borders)}.dropdown.collapsed[data-v-45c48d1a]{opacity:0;transform:translate3d(0,-.41176rem,0);transition:opacity .25s ease,transform .25s ease,visibility 0s linear .25s;visibility:hidden}.dropdown[data-v-45c48d1a]:not(.collapsed){opacity:1;transform:none;transition:opacity .25s ease,transform .25s ease,visibility 0s linear 0s;visibility:visible}.nav--in-breakpoint-range .dropdown[data-v-45c48d1a]:not(.collapsed){display:none}.dropdown[data-v-45c48d1a]:before{border-bottom-color:var(--color-nav-hierarchy-collapse-background);border-bottom-style:solid;border-bottom-width:.5rem;border-left-color:transparent;border-left-style:solid;border-left-width:.5rem;border-right-color:transparent;border-right-style:solid;border-right-width:.5rem;content:"";left:1.67647rem;position:absolute;top:-.44118rem}.theme-dark .dropdown[data-v-45c48d1a]:before{border-bottom-color:var(--color-nav-dark-hierarchy-collapse-background)}.dropdown-item[data-v-45c48d1a]{border-top-color:var(--color-nav-hierarchy-collapse-borders);border-top-style:solid;border-top-width:1px}.theme-dark .dropdown-item[data-v-45c48d1a]{border-top-color:var(--color-nav-dark-hierarchy-collapse-borders)}.dropdown-item[data-v-45c48d1a]:first-child{border-top:none}.nav-menu-link[data-v-45c48d1a]{max-width:57.64706rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;padding:.75rem 1rem}.nav-menu-item[data-v-f44c239a]{margin-left:1.41176rem;list-style:none;min-width:0}.nav--in-breakpoint-range .nav-menu-item[data-v-f44c239a]{margin-left:0;width:100%;height:2.47059rem}.nav--in-breakpoint-range .nav-menu-item[data-v-f44c239a]:first-child .nav-menu-link{border-top:0}.nav--in-breakpoint-range .nav-menu-item--animated[data-v-f44c239a]{opacity:0;transform:none;transition:.5s ease;transition-property:transform,opacity}.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.hierarchy-item[data-v-57182fdb] .hierarchy-item-icon{width:9px;height:15px;margin-right:.58824rem}.nav--in-breakpoint-range .hierarchy-item[data-v-57182fdb] .hierarchy-item-icon{display:none}@media only screen and (min-width:1024px){.hierarchy-item[data-v-57182fdb]{display:flex;align-items:center;margin-left:.58824rem}}.nav--in-breakpoint-range .hierarchy-item[data-v-57182fdb]{border-top:1px solid var(--color-nav-hierarchy-item-borders);display:flex;align-items:center}.theme-dark.nav--in-breakpoint-range .hierarchy-item[data-v-57182fdb]{border-top-color:var(--color-nav-dark-hierarchy-item-borders)}.nav--in-breakpoint-range .hierarchy-item[data-v-57182fdb]:first-of-type{border-top:none}.hierarchy-item.collapsed[data-v-57182fdb]{display:none}.nav--in-breakpoint-range .hierarchy-item.collapsed[data-v-57182fdb]{display:inline-block}.item[data-v-57182fdb]{display:inline-block;vertical-align:middle}.nav--in-breakpoint-range .item[data-v-57182fdb]{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:100%;line-height:2.47059rem}@media only screen and (min-width:1024px){.hierarchy-item:first-child:last-child .item[data-v-57182fdb],.hierarchy-item:first-child:last-child~.hierarchy-item .item[data-v-57182fdb]{max-width:27rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-badge .hierarchy-item:first-child:last-child .item[data-v-57182fdb],.has-badge .hierarchy-item:first-child:last-child~.hierarchy-item .item[data-v-57182fdb]{max-width:21.6rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hierarchy-item:first-child:nth-last-child(2) .item[data-v-57182fdb],.hierarchy-item:first-child:nth-last-child(2)~.hierarchy-item .item[data-v-57182fdb]{max-width:18rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-badge .hierarchy-item:first-child:nth-last-child(2) .item[data-v-57182fdb],.has-badge .hierarchy-item:first-child:nth-last-child(2)~.hierarchy-item .item[data-v-57182fdb]{max-width:14.4rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hierarchy-item:first-child:nth-last-child(3) .item[data-v-57182fdb],.hierarchy-item:first-child:nth-last-child(3)~.hierarchy-item .item[data-v-57182fdb]{max-width:9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-badge .hierarchy-item:first-child:nth-last-child(3) .item[data-v-57182fdb],.has-badge .hierarchy-item:first-child:nth-last-child(3)~.hierarchy-item .item[data-v-57182fdb]{max-width:7.2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hierarchy-collapsed-items~.hierarchy-item .item[data-v-57182fdb]{max-width:10.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-badge .hierarchy-collapsed-items~.hierarchy-item .item[data-v-57182fdb]{max-width:8.64rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.hierarchy[data-v-20e91056]{justify-content:flex-start;min-width:0}[data-v-324c15b2] .nav-menu{font-size:.88235rem;line-height:1.26667;font-weight:400;letter-spacing:-.014em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1023px){[data-v-324c15b2] .nav-menu{font-size:.82353rem;line-height:1.5;font-weight:400;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (min-width:1024px){[data-v-324c15b2] .nav-menu{padding-top:0}}.documentation-nav[data-v-324c15b2] .nav-title{font-size:.88235rem;line-height:1.26667;font-weight:400;letter-spacing:-.014em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1023px){.documentation-nav[data-v-324c15b2] .nav-title{font-size:.82353rem;line-height:1.5;font-weight:400;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:767px){.documentation-nav[data-v-324c15b2] .nav-title{padding-top:0}}.documentation-nav[data-v-324c15b2] .nav-title .nav-title-link.inactive{height:auto;color:var(--color-figure-gray-secondary-alt)}.theme-dark.documentation-nav .nav-title .nav-title-link.inactive[data-v-324c15b2]{color:#b0b0b0}.betainfo[data-v-4edf30f4]{font-size:.94118rem;padding:3rem 0;background-color:var(--color-fill-secondary)}.betainfo-container[data-v-4edf30f4]{margin-left:auto;margin-right:auto;width:980px}@media only screen and (max-width:1068px){.betainfo-container[data-v-4edf30f4]{width:692px}}@media only screen and (max-width:735px){.betainfo-container[data-v-4edf30f4]{width:87.5%}}.betainfo-label[data-v-4edf30f4]{font-weight:600;font-size:.94118rem}.betainfo-content[data-v-4edf30f4] p{margin-bottom:10px}.contenttable+.betainfo[data-v-4edf30f4]{background-color:var(--color-fill)}.summary-section[data-v-6185a550]{margin:0 0 1.5rem}.summary-section[data-v-6185a550]:last-of-type{margin-bottom:0}.title[data-v-b903be56]{color:var(--colors-text,var(--color-text));font-size:1.11765rem;line-height:1.21053;font-weight:400;letter-spacing:.012em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:.82353rem;margin-bottom:.5rem;text-rendering:optimizeLegibility}.language[data-v-0836085b]{font-size:14px}.language-option[data-v-0836085b]{display:inline}@media only screen and (max-width:735px){.language-option[data-v-0836085b]{display:block;margin-bottom:.25rem}}.language-option.active[data-v-0836085b],.language-option.router-link-exact-active[data-v-0836085b]{color:var(--colors-secondary-label,var(--color-secondary-label))}@media only screen and (min-width:736px){.language-option.swift[data-v-0836085b]{border-right:1px solid var(--color-fill-gray-tertiary);margin-right:10px;padding-right:10px}}[data-v-002affcc] .code-listing{background:var(--background,var(--color-code-background));color:var(--text,var(--color-code-plain));border-color:var(--colors-grid,var(--color-grid));border-width:1px;border-style:solid}[data-v-002affcc]+.code-listing,[data-v-002affcc] .code-listing+*{margin-top:1.6em}[data-v-002affcc] .code-listing pre{padding:8px 14px;padding-right:0}[data-v-002affcc] .code-listing pre>code{font-size:.88235rem;line-height:1.66667;font-weight:400;letter-spacing:-.027em;font-family:Menlo,monospace}[data-v-002affcc] *+aside,[data-v-002affcc] *+figure,[data-v-002affcc]+.endpoint-example,[data-v-002affcc] .endpoint-example+*,[data-v-002affcc] aside+*,[data-v-002affcc] figure+*{margin-top:1.6em}[data-v-002affcc] img{display:block;margin:1.6em auto;max-width:100%}[data-v-002affcc] ol,[data-v-002affcc] ul{margin-top:.8em;margin-left:2rem}[data-v-002affcc] ol li:not(:first-child),[data-v-002affcc] ul li:not(:first-child){margin-top:.8em}@media only screen and (max-width:735px){[data-v-002affcc] ol,[data-v-002affcc] ul{margin-left:1.25rem}}[data-v-002affcc]+dl,[data-v-002affcc] dl+*,[data-v-002affcc] dt:not(:first-child){margin-top:.8em}[data-v-002affcc] dd{margin-left:2em}.abstract[data-v-702ec04e]{font-size:1.23529rem;line-height:1.38095;font-weight:400;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:735px){.abstract[data-v-702ec04e]{font-size:1.11765rem;line-height:1.42105;font-weight:400;letter-spacing:.012em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}[data-v-702ec04e] p:last-child{margin-bottom:0}.contenttable[data-v-1a780186]{background:var(--color-content-table-content-color);padding:3rem 0}.container[data-v-1a780186]{margin-left:auto;margin-right:auto;width:980px}@media only screen and (max-width:1068px){.container[data-v-1a780186]{width:692px}}@media only screen and (max-width:735px){.container[data-v-1a780186]{width:87.5%}}.title[data-v-1a780186]{font-size:1.88235rem;line-height:1.125;font-weight:400;letter-spacing:.013em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){.title[data-v-1a780186]{font-size:1.64706rem;line-height:1.14286;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){.title[data-v-1a780186]{font-size:1.41176rem;line-height:1.16667;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.contenttable-section[data-v-bedf02be]{border-top-color:var(--color-grid);border-top-style:solid;border-top-width:1px;align-items:baseline;display:flex;margin:2rem 0;padding-top:2rem}.contenttable-section[data-v-bedf02be]:last-child{margin-bottom:0}.section-content[data-v-bedf02be]{padding-left:1rem}[data-v-bedf02be] .title{font-size:1.41176rem;line-height:1.16667;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){[data-v-bedf02be] .title{font-size:1.23529rem;line-height:1.19048;font-weight:400;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){.contenttable-section[data-v-bedf02be]{align-items:unset;border-top:none;display:inherit;margin:0}.section-content[data-v-bedf02be],.section-title[data-v-bedf02be]{padding:0}[data-v-bedf02be] .title{border-bottom-color:var(--color-grid);border-bottom-style:solid;border-bottom-width:1px;margin:0 0 2rem 0;padding-bottom:.5rem}}.topic-icon-wrapper[data-v-4d1e7968]{display:flex;align-items:center;justify-content:center;height:1.47059rem;flex:0 0 1.294rem;width:1.294rem;margin-right:.5em}.topic-icon[data-v-4d1e7968]{height:.88235rem;transform:scale(1);-webkit-transform:scale(1);overflow:visible}.topic-icon.curly-brackets-icon[data-v-4d1e7968]{height:1rem}.token-method[data-v-5caf1b5b]{font-weight:700}.token-keyword[data-v-5caf1b5b]{color:var(--syntax-keyword,var(--color-syntax-keywords))}.token-number[data-v-5caf1b5b]{color:var(--syntax-number,var(--color-syntax-numbers))}.token-string[data-v-5caf1b5b]{color:var(--syntax-string,var(--color-syntax-strings))}.token-attribute[data-v-5caf1b5b]{color:var(--syntax-attribute,var(--color-syntax-keywords))}.token-internalParam[data-v-5caf1b5b]{color:var(--color-syntax-param-internal-name)}.type-identifier-link[data-v-5caf1b5b]{color:var(--syntax-type,var(--color-syntax-other-type-names))}.token-removed[data-v-5caf1b5b]{background-color:var(--color-highlight-red)}.token-added[data-v-5caf1b5b]{background-color:var(--color-highlight-green)}.decorator[data-v-06ec7395],.label[data-v-06ec7395]{color:var(--colors-secondary-label,var(--color-secondary-label))}.label[data-v-06ec7395]{font-size:1rem;line-height:1.47059;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.empty-token[data-v-06ec7395]{font-size:0}.empty-token[data-v-06ec7395]:after{content:"\00a0";font-size:1rem}.conditional-constraints[data-v-1548fd90] code{color:var(--colors-secondary-label,var(--color-secondary-label))}.abstract[data-v-1e5f16e7],.link-block[data-v-1e5f16e7] .badge{margin-left:calc(.5em + 1.294rem)}.link-block .badge+.badge[data-v-1e5f16e7]{margin-left:1rem}.link-block[data-v-1e5f16e7],.link[data-v-1e5f16e7]{box-sizing:inherit}.link-block.changed[data-v-1e5f16e7],.link.changed[data-v-1e5f16e7]{padding-left:.70588rem;padding-right:1.88235rem;padding-top:5px;padding-bottom:5px;display:inline-flex;margin-left:-.76471rem;width:calc(100% + 13px)}.link-block.changed.changed[data-v-1e5f16e7],.link.changed.changed[data-v-1e5f16e7]{padding-left:12px}@media only screen and (max-width:735px){.link-block.changed[data-v-1e5f16e7],.link.changed[data-v-1e5f16e7]{padding-left:0;padding-right:0}.link-block.changed.changed[data-v-1e5f16e7],.link.changed.changed[data-v-1e5f16e7]{padding-left:12px;padding-right:1.88235rem}}@media only screen and (max-width:735px){.link-block.changed[data-v-1e5f16e7],.link.changed[data-v-1e5f16e7]{padding-left:0;padding-right:0}}@media only screen and (max-width:735px){.link-block.changed[data-v-1e5f16e7]:not(.changed),.link.changed[data-v-1e5f16e7]:not(.changed){margin-left:0;width:100%}.link-block.changed.changed[data-v-1e5f16e7],.link.changed.changed[data-v-1e5f16e7]{margin-left:-.70588rem;width:calc(100% + 24px)}}.link[data-v-1e5f16e7]{display:flex}.link-block .badge[data-v-1e5f16e7]{margin-top:.5rem}.link-block.has-inline-element[data-v-1e5f16e7]{display:flex;align-items:flex-start;flex-flow:row wrap}.link-block.has-inline-element .badge[data-v-1e5f16e7]{margin-left:1rem;margin-top:0}.link-block .has-adjacent-elements[data-v-1e5f16e7]{padding-top:5px;padding-bottom:5px;display:inline-flex}.abstract .topic-required[data-v-1e5f16e7]:not(:first-child){margin-top:4px}.topic-required[data-v-1e5f16e7]{font-size:.8em}.deprecated[data-v-1e5f16e7]{text-decoration:line-through}.conditional-constraints[data-v-1e5f16e7]{font-size:.82353rem;margin-top:4px}.section-content>.content[data-v-3e48ad3a],.topic[data-v-3e48ad3a]:not(:last-child){margin-bottom:1.5rem}.description[data-v-3b0e7cbb]:not(:empty){margin-bottom:2rem}.nodocumentation[data-v-3b0e7cbb]{font-size:1.23529rem;line-height:1.38095;font-weight:400;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--colors-secondary-label,var(--color-secondary-label));margin-bottom:0}@media only screen and (max-width:735px){.nodocumentation[data-v-3b0e7cbb]{font-size:1.11765rem;line-height:1.42105;font-weight:400;letter-spacing:.012em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}[data-v-3b0e7cbb] .content+*{margin-top:.8em}.summary-list[data-v-731de2f2]{font-size:.82353rem;list-style:none;margin:0}.summary-list-item[data-v-1648b0ac]{margin-bottom:.25rem;padding-left:0}.summary-list-item[data-v-1648b0ac]:last-child{margin-bottom:0}.name[data-v-4616e162]:after{content:", "}.name[data-v-4616e162]:last-of-type:after{content:""}.icon-holder[data-v-7e43087c]{display:inline;white-space:nowrap}.icon-holder .link-text[data-v-7e43087c]{vertical-align:middle}.icon-holder .link-icon[data-v-7e43087c]{height:1em;vertical-align:text-bottom}.datalist dd{padding-left:2rem}.datalist dt{font-weight:600;padding-left:1rem;padding-top:1.64706rem}.datalist dt:first-of-type{padding-top:0}.source[data-v-bb800958]{background:var(--background,var(--color-code-background));border-color:var(--color-grid);color:var(--text,var(--color-code-plain));border-radius:4px;border-style:solid;border-width:1px;padding:8px 14px;speak:literal-punctuation;line-height:25px}.source.has-multiple-lines[data-v-bb800958]{border-radius:4px}.source.indented[data-v-bb800958]{padding-left:2.76447em;text-indent:-1.88235em;white-space:normal}.source>code[data-v-bb800958]{font-size:.88235rem;line-height:1.66667;font-weight:400;letter-spacing:-.027em;font-family:Menlo,monospace;display:block}.platforms[data-v-1dc256a6]{font-size:.82353rem;line-height:1.42857;font-weight:400;letter-spacing:-.016em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;margin-bottom:.45rem;margin-top:1.6em}.changed .platforms[data-v-1dc256a6]{padding-left:.588rem}.platforms[data-v-1dc256a6]:first-of-type{margin-top:1rem}.source[data-v-1dc256a6]{margin:14px 0}.platforms+.source[data-v-1dc256a6]{margin:0}.changed .source[data-v-1dc256a6]{background:none;border:none;margin-top:0;margin-bottom:0;margin-right:1.88235rem;padding-right:0}.declaration-diff-version[data-v-676d8556]{padding-left:.588rem;padding-right:1.88235rem;font-size:1rem;line-height:1.52941;font-weight:600;letter-spacing:-.021em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--color-figure-gray-secondary);margin:0}.declaration-diff-current[data-v-676d8556],.declaration-diff-previous[data-v-676d8556]{padding-top:5px}.declaration-diff-previous[data-v-676d8556]{background-color:var(--color-changes-modified-previous-background);border-radius:0 0 4px 4px;position:relative}.conditional-constraints[data-v-e39c4ee4]{margin:1.17647rem 0 3rem 0}.type[data-v-791bac44]:first-letter{text-transform:capitalize}.detail-type[data-v-61ef551b]{font-weight:600;padding-left:1rem;padding-top:1.64706rem}.detail-type[data-v-61ef551b]:first-child{padding-top:0}@media only screen and (max-width:735px){.detail-type[data-v-61ef551b]{padding-left:0}}.detail-content[data-v-61ef551b]{padding-left:2rem}@media only screen and (max-width:735px){.detail-content[data-v-61ef551b]{padding-left:0}}.param-name[data-v-7bb7c035]{font-weight:600;padding-left:1rem;padding-top:1.64706rem}.param-name[data-v-7bb7c035]:first-child{padding-top:0}@media only screen and (max-width:735px){.param-name[data-v-7bb7c035]{padding-left:0}}.param-content[data-v-7bb7c035]{padding-left:2rem}@media only screen and (max-width:735px){.param-content[data-v-7bb7c035]{padding-left:0}}.param-content[data-v-7bb7c035] dt{font-weight:600}.param-content[data-v-7bb7c035] dd{margin-left:1em}.parameters-table[data-v-1455266b] .change-added,.parameters-table[data-v-1455266b] .change-removed{display:inline-block}.parameters-table[data-v-1455266b] .change-removed,.parameters-table[data-v-1455266b] .token-removed{text-decoration:line-through}.param[data-v-1455266b]{font-size:.88235rem;box-sizing:border-box}.param.changed[data-v-1455266b]{display:flex;flex-flow:row wrap;width:100%;padding-left:.70588rem;padding-right:1.88235rem;padding-top:5px;padding-bottom:5px;display:inline-flex}.param.changed.changed[data-v-1455266b]{padding-left:12px}@media only screen and (max-width:735px){.param.changed[data-v-1455266b]{padding-left:0;padding-right:0}.param.changed.changed[data-v-1455266b]{padding-left:12px;padding-right:1.88235rem}}@media only screen and (max-width:735px){.param.changed[data-v-1455266b]{padding-left:0;padding-right:0}}@media only screen and (max-width:735px){.param.changed[data-v-1455266b]:not(.changed){margin-left:0;width:100%}.param.changed.changed[data-v-1455266b]{margin-left:-.70588rem;width:calc(100% + 24px)}}.param.changed+.param.changed[data-v-1455266b]{margin-top:.82353rem}.changed .param-content[data-v-1455266b],.changed .param-symbol[data-v-1455266b]{padding-top:5px;padding-bottom:5px}@media only screen and (max-width:735px){.changed .param-content[data-v-1455266b]{padding-top:0}.changed .param-symbol[data-v-1455266b]{padding-bottom:0}}.param-symbol[data-v-1455266b]{text-align:right}@media only screen and (max-width:735px){.param-symbol[data-v-1455266b]{text-align:left}}.param-symbol[data-v-1455266b] .type-identifier-link{color:var(--color-link)}.param+.param[data-v-1455266b]{margin-top:1.64706rem}.param+.param[data-v-1455266b]:first-child{margin-top:0}.param-content[data-v-1455266b]{padding-left:1rem;padding-right:1.88235rem}@media only screen and (max-width:735px){.param-content[data-v-1455266b]{padding-left:0;padding-right:0}}.property-metadata[data-v-8590589e]{color:var(--color-figure-gray-secondary)}.property-required{font-weight:700}.property-metadata[data-v-0a648a1e]{color:var(--color-figure-gray-secondary)}.property-name[data-v-387d76c0]{font-weight:700}.property-name.deprecated[data-v-387d76c0]{text-decoration:line-through}.property-deprecated[data-v-387d76c0]{margin-left:0}.content[data-v-387d76c0],.content[data-v-387d76c0] p:first-child{display:inline}.response-mimetype[data-v-2faa6020]{color:var(--color-figure-gray-secondary)}.part-name[data-v-458971c5]{font-weight:700}.content[data-v-458971c5],.content[data-v-458971c5] p:first-child{display:inline}.param-name[data-v-74e7f790]{font-weight:700}.param-name.deprecated[data-v-74e7f790]{text-decoration:line-through}.param-deprecated[data-v-74e7f790]{margin-left:0}.content[data-v-74e7f790],.content[data-v-74e7f790] p:first-child{display:inline}.response-name[data-v-57796e8c],.response-reason[data-v-57796e8c]{font-weight:700}@media only screen and (max-width:735px){.response-reason[data-v-57796e8c]{display:none}}.response-name>code>.reason[data-v-57796e8c]{display:none}@media only screen and (max-width:735px){.response-name>code>.reason[data-v-57796e8c]{display:initial}}[data-v-011bef72] h2{font-size:1.88235rem;line-height:1.125;font-weight:400;letter-spacing:.013em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){[data-v-011bef72] h2{font-size:1.64706rem;line-height:1.14286;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){[data-v-011bef72] h2{font-size:1.41176rem;line-height:1.16667;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.primary-content[data-v-011bef72]:before{border-top-color:var(--colors-grid,var(--color-grid));border-top-style:solid;border-top-width:1px;content:"";display:block}.primary-content[data-v-011bef72]>*{margin-bottom:3rem;margin-top:3rem}.primary-content[data-v-011bef72]>:first-child{margin-top:2rem}.relationships-list[data-v-e4fe9834]{list-style:none}.relationships-list.column[data-v-e4fe9834]{margin:0}.relationships-list.inline[data-v-e4fe9834]{-moz-columns:1;columns:1;display:flex;flex-direction:row;flex-wrap:wrap;margin:0}.relationships-list.inline li[data-v-e4fe9834]:not(:last-child):after{content:",\00a0"}.relationships-list.changed[data-v-e4fe9834]{padding-left:.70588rem;padding-right:1.88235rem;padding-top:5px;padding-bottom:5px;display:inline-flex;margin-left:-.76471rem;width:calc(100% + 13px)}.relationships-list.changed.changed[data-v-e4fe9834]{padding-left:12px}@media only screen and (max-width:735px){.relationships-list.changed[data-v-e4fe9834]{padding-left:0;padding-right:0}.relationships-list.changed.changed[data-v-e4fe9834]{padding-left:12px;padding-right:1.88235rem}}@media only screen and (max-width:735px){.relationships-list.changed[data-v-e4fe9834]{padding-left:0;padding-right:0}}@media only screen and (max-width:735px){.relationships-list.changed[data-v-e4fe9834]:not(.changed){margin-left:0;width:100%}.relationships-list.changed.changed[data-v-e4fe9834]{margin-left:-.70588rem;width:calc(100% + 24px)}}.relationships-list.changed[data-v-e4fe9834]:after{margin-top:7px}.relationships-list.changed.column[data-v-e4fe9834]{display:block}.relationships-item[data-v-e4fe9834],.relationships-list[data-v-e4fe9834]{box-sizing:inherit}.conditional-constraints[data-v-e4fe9834]{font-size:.82353rem;margin:.17647rem 0 .58824rem 1.17647rem}.availability[data-v-0c59731a],.platform-list[data-v-0c59731a],.platform[data-v-0c59731a]{box-sizing:inherit}.platform[data-v-0c59731a]{padding-right:2rem;box-sizing:border-box;padding-left:.70588rem;padding-right:1.88235rem;padding-left:0;margin-bottom:.25rem;padding-top:5px;padding-bottom:5px}.platform[data-v-0c59731a]:after{width:1rem;height:1rem;margin-top:6px}.platform.changed[data-v-0c59731a]{padding-left:12px}@media only screen and (max-width:735px){.platform[data-v-0c59731a]{padding-left:0;padding-right:0}.platform.changed[data-v-0c59731a]{padding-left:12px;padding-right:1.88235rem}}.platform[data-v-0c59731a]:last-child{margin-bottom:0}.platform-badge[data-v-0c59731a]{margin-left:.47059rem}.platform.changed[data-v-0c59731a]{margin-left:-.76471rem;width:calc(100% + 13px)}.platform.changed[data-v-0c59731a]:after{width:1rem;height:1rem;margin-top:6px}@media only screen and (max-width:735px){.platform.changed[data-v-0c59731a]:not(.changed){margin-left:0;width:100%}.platform.changed.changed[data-v-0c59731a]{margin-left:-.70588rem;width:calc(100% + 24px)}}.summary[data-v-19bd58b6]{color:var(--colors-secondary-label,var(--color-secondary-label));font-size:.94118rem;margin-bottom:3rem;padding:5px 0 0 4em}@media only screen and (max-width:1068px){.summary[data-v-19bd58b6]{padding-left:2em}}@media only screen and (max-width:735px){.summary[data-v-19bd58b6]{padding-left:0;margin-bottom:2.35294rem;display:grid;grid-gap:.94118rem;grid-template-columns:repeat(auto-fill,minmax(128px,1fr))}}.topictitle[data-v-e1f00c5e]{margin-left:auto;margin-right:auto;width:980px;margin-top:2rem}@media only screen and (max-width:1068px){.topictitle[data-v-e1f00c5e]{width:692px}}@media only screen and (max-width:735px){.topictitle[data-v-e1f00c5e]{width:87.5%}}.eyebrow[data-v-e1f00c5e]{font-size:1.23529rem;line-height:1.19048;font-weight:400;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--colors-secondary-label,var(--color-secondary-label));display:block;margin-bottom:1.17647rem}@media only screen and (max-width:735px){.eyebrow[data-v-e1f00c5e]{font-size:1.11765rem;line-height:1.21053;font-weight:400;letter-spacing:.012em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.title[data-v-e1f00c5e]{font-size:2.35294rem;line-height:1.1;font-weight:400;letter-spacing:0;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){.title[data-v-e1f00c5e]{font-size:1.88235rem;line-height:1.125;font-weight:400;letter-spacing:.013em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){.title[data-v-e1f00c5e]{font-size:1.64706rem;line-height:1.14286;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.doc-topic[data-v-134e8272]{background:var(--colors-text-background,var(--color-text-background))}#main[data-v-134e8272]{outline-style:none}.container[data-v-134e8272]{margin-left:auto;margin-right:auto;width:980px;outline-style:none;margin-top:1.5rem}@media only screen and (max-width:1068px){.container[data-v-134e8272]{width:692px}}@media only screen and (max-width:735px){.container[data-v-134e8272]{width:87.5%}}.content-grid[data-v-134e8272]{display:grid;grid-template-columns:75% 25%;grid-template-rows:auto minmax(0,1fr)}@media only screen and (max-width:735px){.content-grid[data-v-134e8272]{display:block}}.content-grid[data-v-134e8272]:after,.content-grid[data-v-134e8272]:before{display:none}.content-grid.full-width[data-v-134e8272]{grid-template-columns:100%}.description[data-v-134e8272]{grid-column:1}.summary[data-v-134e8272]{grid-column:2;grid-row:1/-1}.primary-content[data-v-134e8272]{grid-column:1}.button-cta[data-v-134e8272]{margin-top:2em}[data-v-134e8272] h3{font-size:1.64706rem;line-height:1.14286;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){[data-v-134e8272] h3{font-size:1.41176rem;line-height:1.16667;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){[data-v-134e8272] h3{font-size:1.23529rem;line-height:1.19048;font-weight:400;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}[data-v-134e8272] h4{font-size:1.41176rem;line-height:1.16667;font-weight:600;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){[data-v-134e8272] h4{font-size:1.23529rem;line-height:1.19048;font-weight:600;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}[data-v-134e8272] h5{font-size:1.29412rem;line-height:1.18182;font-weight:600;letter-spacing:.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){[data-v-134e8272] h5{font-size:1.17647rem;line-height:1.2;font-weight:600;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){[data-v-134e8272] h5{font-size:1.05882rem;line-height:1.44444;font-weight:600;letter-spacing:.012em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}[data-v-134e8272] h6{font-size:1rem;line-height:1.47059;font-weight:600;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif} \ No newline at end of file diff --git a/docs/swift-docc-render/css/documentation-topic~topic~tutorials-overview.cb5e3789.css b/docs/swift-docc-render/css/documentation-topic~topic~tutorials-overview.cb5e3789.css new file mode 100644 index 00000000..0475096b --- /dev/null +++ b/docs/swift-docc-render/css/documentation-topic~topic~tutorials-overview.cb5e3789.css @@ -0,0 +1,9 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */.svg-icon[data-v-0137d411]{fill:var(--colors-svg-icon-fill-light,var(--color-svg-icon));transform:scale(1);-webkit-transform:scale(1);overflow:visible}.theme-dark .svg-icon[data-v-0137d411]{fill:var(--colors-svg-icon-fill-dark,var(--color-svg-icon))}.svg-icon.icon-inline[data-v-0137d411]{display:inline-block;vertical-align:middle;fill:currentColor}.svg-icon.icon-inline[data-v-0137d411] .svg-icon-stroke{stroke:currentColor}[data-v-0137d411] .svg-icon-stroke{stroke:var(--colors-svg-icon-fill-light,var(--color-svg-icon))}.theme-dark[data-v-0137d411] .svg-icon-stroke{stroke:var(--colors-svg-icon-fill-dark,var(--color-svg-icon))}.label[data-v-5117d474]{font-size:.70588rem;line-height:1.33333;font-weight:600;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.label+[data-v-5117d474]{margin-top:.4em}.deprecated .label[data-v-5117d474]{color:var(--color-aside-deprecated)}.experiment .label[data-v-5117d474]{color:var(--color-aside-experiment)}.important .label[data-v-5117d474]{color:var(--color-aside-important)}.note .label[data-v-5117d474]{color:var(--color-aside-note)}.tip .label[data-v-5117d474]{color:var(--color-aside-tip)}.warning .label[data-v-5117d474]{color:var(--color-aside-warning)}.doc-topic aside[data-v-5117d474]{border-radius:4px;padding:.94118rem;border:0 solid;border-left-width:6px}.doc-topic aside.deprecated[data-v-5117d474]{background-color:var(--color-aside-deprecated-background);border-color:var(--color-aside-deprecated-border);box-shadow:0 0 0 0 var(--color-aside-deprecated-border) inset,0 0 0 0 var(--color-aside-deprecated-border)}.doc-topic aside.experiment[data-v-5117d474]{background-color:var(--color-aside-experiment-background);border-color:var(--color-aside-experiment-border);box-shadow:0 0 0 0 var(--color-aside-experiment-border) inset,0 0 0 0 var(--color-aside-experiment-border)}.doc-topic aside.important[data-v-5117d474]{background-color:var(--color-aside-important-background);border-color:var(--color-aside-important-border);box-shadow:0 0 0 0 var(--color-aside-important-border) inset,0 0 0 0 var(--color-aside-important-border)}.doc-topic aside.note[data-v-5117d474]{background-color:var(--color-aside-note-background);border-color:var(--color-aside-note-border);box-shadow:0 0 0 0 var(--color-aside-note-border) inset,0 0 0 0 var(--color-aside-note-border)}.doc-topic aside.tip[data-v-5117d474]{background-color:var(--color-aside-tip-background);border-color:var(--color-aside-tip-border);box-shadow:0 0 0 0 var(--color-aside-tip-border) inset,0 0 0 0 var(--color-aside-tip-border)}.doc-topic aside.warning[data-v-5117d474]{background-color:var(--color-aside-warning-background);border-color:var(--color-aside-warning-border);box-shadow:0 0 0 0 var(--color-aside-warning-border) inset,0 0 0 0 var(--color-aside-warning-border)}.doc-topic aside .label[data-v-5117d474]{font-size:1rem;line-height:1.52941;font-weight:600;letter-spacing:-.021em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}code[data-v-05f4a5b7]{speak-punctuation:code}.nav-menu-items[data-v-aa06bfc4]{display:flex;justify-content:flex-end}.nav--in-breakpoint-range .nav-menu-items[data-v-aa06bfc4]{display:block;opacity:0;padding:1rem 1.88235rem 1.64706rem 1.88235rem;transform:translate3d(0,-50px,0);transition:transform 1s cubic-bezier(.07,1.06,.27,.95) .5s,opacity .7s cubic-bezier(.07,1.06,.27,.95) .2s}.nav--is-open.nav--in-breakpoint-range .nav-menu-items[data-v-aa06bfc4]{opacity:1;transform:translateZ(0);transition-delay:.2s,.4s}.nav--in-breakpoint-range .nav-menu-items[data-v-aa06bfc4]:not(:only-child):not(:last-child){padding-bottom:0}.nav--in-breakpoint-range .nav-menu-items[data-v-aa06bfc4]:not(:only-child):last-child{padding-top:0}.button-cta[data-v-494ad9c8]{border-radius:var(--style-button-borderRadius,4px);background:var(--colors-button-light-background,var(--color-button-background));color:var(--colors-button-text,var(--color-button-text));cursor:pointer;min-width:1.76471rem;padding:.23529rem .88235rem;text-align:center;white-space:nowrap;display:inline-block;font-size:1rem;line-height:1.47059;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.button-cta[data-v-494ad9c8]:active{background:var(--colors-button-light-backgroundActive,var(--color-button-background-active));outline:none}.button-cta[data-v-494ad9c8]:hover:not([disabled]){background:var(--colors-button-light-backgroundHover,var(--color-button-background-hover));text-decoration:none}.button-cta[data-v-494ad9c8]:disabled{opacity:.32;cursor:default}.fromkeyboard .button-cta[data-v-494ad9c8]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none}.button-cta.is-dark[data-v-494ad9c8]{background:var(--colors-button-dark-background,#06f)}.button-cta.is-dark[data-v-494ad9c8]:active{background:var(--colors-button-dark-backgroundActive,var(--color-button-background-active))}.button-cta.is-dark[data-v-494ad9c8]:hover:not([disabled]){background:var(--colors-button-dark-backgroundHover,var(--color-button-background-hover))}.file-icon[data-v-7c381064]{position:relative;align-items:flex-end;height:24px;margin:0 .5rem 0 1rem}.filename[data-v-c8c40662]{color:var(--text,var(--colors-secondary-label,var(--color-secondary-label)));font-size:.94118rem;line-height:1.1875;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;margin-top:1rem}@media only screen and (max-width:735px){.filename[data-v-c8c40662]{font-size:.82353rem;line-height:1.42857;font-weight:400;letter-spacing:-.016em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;margin-top:0}}.filename>a[data-v-c8c40662],.filename>span[data-v-c8c40662]{display:flex;align-items:center;line-height:normal}a[data-v-c8c40662]{color:var(--url,var(--color-link))}.code-line-container[data-v-193a0b82]{display:flex}.code-number[data-v-193a0b82]{padding:0 1rem 0 8px;text-align:right;min-width:2em;color:#666;-webkit-user-select:none;-moz-user-select:none;user-select:none}.code-number[data-v-193a0b82]:before{content:attr(data-line-number)}.highlighted[data-v-193a0b82]{background:var(--line-highlight,var(--color-code-line-highlight));border-left:4px solid var(--color-code-line-highlight-border)}.highlighted .code-number[data-v-193a0b82]{padding-left:4px}pre[data-v-193a0b82]{padding:14px 0;display:flex;overflow:auto;-webkit-overflow-scrolling:touch;white-space:pre;word-wrap:normal;height:100%}@media only screen and (max-width:735px){pre[data-v-193a0b82]{padding-top:.82353rem}}code[data-v-193a0b82]{display:flex;flex-direction:column;white-space:pre;word-wrap:normal;flex-grow:9999}.code-line-container[data-v-193a0b82]{flex-shrink:0;padding-right:14px}.code-listing[data-v-193a0b82],.container-general[data-v-193a0b82]{display:flex}.code-listing[data-v-193a0b82]{flex-direction:column;min-height:100%;border-radius:4px;overflow:auto}.code-listing.single-line[data-v-193a0b82]{border-radius:4px}.container-general[data-v-193a0b82],pre[data-v-193a0b82]{flex-grow:1}code[data-v-369467b5]{width:100%}.container-general[data-v-369467b5]{display:flex;flex-flow:row wrap}.container-general .code-line[data-v-369467b5]{flex:1 0 auto}.code-line-container[data-v-369467b5]{align-items:center;display:flex;border-left:4px solid transparent;counter-increment:linenumbers;padding-right:14px}.code-number[data-v-369467b5]{font-size:.70588rem;line-height:1.5;font-weight:400;letter-spacing:0;font-family:Menlo,monospace;padding:0 1rem 0 8px;text-align:right;min-width:2.01em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.code-number[data-v-369467b5]:before{content:counter(linenumbers)}.code-line[data-v-369467b5]{display:flex}pre[data-v-369467b5]{padding:14px 0;display:flex;flex-flow:row wrap;overflow:auto;-webkit-overflow-scrolling:touch;white-space:pre;word-wrap:normal}@media only screen and (max-width:735px){pre[data-v-369467b5]{padding-top:.82353rem}}.collapsible-code-listing[data-v-369467b5]{background:var(--background,var(--color-code-background));border-color:var(--colors-grid,var(--color-grid));color:var(--text,var(--color-code-plain));border-radius:4px;border-style:solid;border-width:1px;counter-reset:linenumbers;font-size:15px}.collapsible-code-listing.single-line[data-v-369467b5]{border-radius:4px}.collapsible[data-v-369467b5]{background:var(--color-code-collapsible-background);color:var(--color-code-collapsible-text)}.collapsed[data-v-369467b5]:before{content:"⋯";display:inline-block;font-family:monospace;font-weight:700;height:100%;line-height:1;text-align:right;width:2.3rem}.collapsed .code-line-container[data-v-369467b5]{height:0;visibility:hidden}.row[data-v-be73599c]{box-sizing:border-box;display:flex;flex-flow:row wrap}.col[data-v-2ee3ad8b]{box-sizing:border-box;flex:none}.large-1[data-v-2ee3ad8b]{flex-basis:8.33333%;max-width:8.33333%}.large-2[data-v-2ee3ad8b]{flex-basis:16.66667%;max-width:16.66667%}.large-3[data-v-2ee3ad8b]{flex-basis:25%;max-width:25%}.large-4[data-v-2ee3ad8b]{flex-basis:33.33333%;max-width:33.33333%}.large-5[data-v-2ee3ad8b]{flex-basis:41.66667%;max-width:41.66667%}.large-6[data-v-2ee3ad8b]{flex-basis:50%;max-width:50%}.large-7[data-v-2ee3ad8b]{flex-basis:58.33333%;max-width:58.33333%}.large-8[data-v-2ee3ad8b]{flex-basis:66.66667%;max-width:66.66667%}.large-9[data-v-2ee3ad8b]{flex-basis:75%;max-width:75%}.large-10[data-v-2ee3ad8b]{flex-basis:83.33333%;max-width:83.33333%}.large-11[data-v-2ee3ad8b]{flex-basis:91.66667%;max-width:91.66667%}.large-12[data-v-2ee3ad8b]{flex-basis:100%;max-width:100%}.large-centered[data-v-2ee3ad8b]{margin-left:auto;margin-right:auto}.large-uncentered[data-v-2ee3ad8b]{margin-left:0;margin-right:0}@media only screen and (max-width:1068px){.medium-1[data-v-2ee3ad8b]{flex-basis:8.33333%;max-width:8.33333%}.medium-2[data-v-2ee3ad8b]{flex-basis:16.66667%;max-width:16.66667%}.medium-3[data-v-2ee3ad8b]{flex-basis:25%;max-width:25%}.medium-4[data-v-2ee3ad8b]{flex-basis:33.33333%;max-width:33.33333%}.medium-5[data-v-2ee3ad8b]{flex-basis:41.66667%;max-width:41.66667%}.medium-6[data-v-2ee3ad8b]{flex-basis:50%;max-width:50%}.medium-7[data-v-2ee3ad8b]{flex-basis:58.33333%;max-width:58.33333%}.medium-8[data-v-2ee3ad8b]{flex-basis:66.66667%;max-width:66.66667%}.medium-9[data-v-2ee3ad8b]{flex-basis:75%;max-width:75%}.medium-10[data-v-2ee3ad8b]{flex-basis:83.33333%;max-width:83.33333%}.medium-11[data-v-2ee3ad8b]{flex-basis:91.66667%;max-width:91.66667%}.medium-12[data-v-2ee3ad8b]{flex-basis:100%;max-width:100%}.medium-centered[data-v-2ee3ad8b]{margin-left:auto;margin-right:auto}.medium-uncentered[data-v-2ee3ad8b]{margin-left:0;margin-right:0}}@media only screen and (max-width:735px){.small-1[data-v-2ee3ad8b]{flex-basis:8.33333%;max-width:8.33333%}.small-2[data-v-2ee3ad8b]{flex-basis:16.66667%;max-width:16.66667%}.small-3[data-v-2ee3ad8b]{flex-basis:25%;max-width:25%}.small-4[data-v-2ee3ad8b]{flex-basis:33.33333%;max-width:33.33333%}.small-5[data-v-2ee3ad8b]{flex-basis:41.66667%;max-width:41.66667%}.small-6[data-v-2ee3ad8b]{flex-basis:50%;max-width:50%}.small-7[data-v-2ee3ad8b]{flex-basis:58.33333%;max-width:58.33333%}.small-8[data-v-2ee3ad8b]{flex-basis:66.66667%;max-width:66.66667%}.small-9[data-v-2ee3ad8b]{flex-basis:75%;max-width:75%}.small-10[data-v-2ee3ad8b]{flex-basis:83.33333%;max-width:83.33333%}.small-11[data-v-2ee3ad8b]{flex-basis:91.66667%;max-width:91.66667%}.small-12[data-v-2ee3ad8b]{flex-basis:100%;max-width:100%}.small-centered[data-v-2ee3ad8b]{margin-left:auto;margin-right:auto}.small-uncentered[data-v-2ee3ad8b]{margin-left:0;margin-right:0}}.tabnav[data-v-42371214]{margin:.88235rem 0 1.47059rem 0}.tabnav-items[data-v-42371214]{display:inline-block;margin:0;text-align:center}.tabnav-item[data-v-723a9588]{border-bottom:1px solid;border-color:var(--colors-tabnav-item-border-color,var(--color-tabnav-item-border-color));display:inline-block;list-style:none;padding-left:1.76471rem;margin:0;outline:none}.tabnav-item[data-v-723a9588]:first-child{padding-left:0}.tabnav-item[data-v-723a9588]:nth-child(n+1){margin:0}.tabnav-link[data-v-723a9588]{color:var(--colors-secondary-label,var(--color-secondary-label));font-size:1rem;line-height:1;font-weight:400;letter-spacing:-.021em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:9px 0 11px;margin-top:2px;margin-bottom:4px;text-align:left;text-decoration:none;display:block;position:relative;z-index:0}.tabnav-link[data-v-723a9588]:hover{text-decoration:none}.tabnav-link[data-v-723a9588]:focus{outline-offset:-1px}.tabnav-link[data-v-723a9588]:after{content:"";position:absolute;bottom:-5px;left:0;width:100%;border:1px solid transparent}.tabnav-link.active[data-v-723a9588]{color:var(--colors-text,var(--color-text));cursor:default;z-index:10}.tabnav-link.active[data-v-723a9588]:after{border-bottom-color:var(--colors-text,var(--color-text))}.controls[data-v-6197ce3f]{margin-top:5px;font-size:14px;display:flex;justify-content:flex-end}.controls a[data-v-6197ce3f]{color:var(--colors-text,var(--color-text));display:flex;align-items:center}.controls .control-icon[data-v-6197ce3f]{width:1.05em;margin-right:.3em}[data-v-7be42fb4] figcaption+*{margin-top:1rem}.caption[data-v-0bcb8b58]{font-size:.82353rem;line-height:1.5;font-weight:400;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}[data-v-0bcb8b58] p{display:inline-block}[data-v-3a939631] img{max-width:100%}*+.table-wrapper,.table-wrapper+*{margin-top:1.6em}.table-wrapper[data-v-358dcd5e]{overflow:auto;-webkit-overflow-scrolling:touch}[data-v-358dcd5e] th{font-weight:600}[data-v-358dcd5e] td,[data-v-358dcd5e] th{border-color:var(--color-fill-gray-tertiary);border-style:solid;border-width:1px 0;padding:.58824rem}s[data-v-eb91ce54]:after,s[data-v-eb91ce54]:before{position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0}s[data-v-eb91ce54]:before{content:" [start of stricken text] "}s[data-v-eb91ce54]:after{content:" [end of stricken text] "}.nav[data-v-489e6297]{position:sticky;top:0;width:100%;height:3.05882rem;z-index:9997;color:var(--color-nav-color)}@media only screen and (max-width:767px){.nav[data-v-489e6297]{min-width:320px;height:2.82353rem}}.theme-dark.nav[data-v-489e6297]{background:none;color:var(--color-nav-dark-color)}.nav__wrapper[data-v-489e6297]{position:absolute;top:0;left:0;width:100%;height:auto;min-height:100%;z-index:1}.nav__background[data-v-489e6297]{position:absolute;left:0;top:0;width:100%;height:100%;z-index:1;transition:background-color .5s ease-in}.nav__background[data-v-489e6297]:after{background-color:var(--color-nav-keyline)}.nav--solid-background .nav__background[data-v-489e6297]{background-color:var(--color-nav-solid-background);-webkit-backdrop-filter:none;backdrop-filter:none}.nav--is-open.nav--solid-background .nav__background[data-v-489e6297],.nav--is-sticking.nav--solid-background .nav__background[data-v-489e6297]{background-color:var(--color-nav-solid-background)}.nav--is-open.theme-dark.nav--solid-background .nav__background[data-v-489e6297],.nav--is-sticking.theme-dark.nav--solid-background .nav__background[data-v-489e6297],.theme-dark.nav--solid-background .nav__background[data-v-489e6297]{background-color:var(--color-nav-dark-solid-background)}.nav--in-breakpoint-range .nav__background[data-v-489e6297]{min-height:2.82353rem;transition:background-color .5s ease .7s}.nav--is-sticking .nav__background[data-v-489e6297]{background-color:var(--color-nav-expanded);max-height:none;transition:background-color .5s ease;transition-property:background-color,-webkit-backdrop-filter;transition-property:background-color,backdrop-filter;transition-property:background-color,backdrop-filter,-webkit-backdrop-filter}.nav--is-sticking .nav__background[data-v-489e6297]:after{background-color:var(--color-nav-sticking-expanded-keyline)}@supports ((-webkit-backdrop-filter:initial) or (backdrop-filter:initial)){.nav--is-sticking .nav__background[data-v-489e6297]{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:var(--color-nav-uiblur-stuck)}}.theme-dark.nav--is-sticking .nav__background[data-v-489e6297]{background-color:var(--color-nav-dark-stuck)}@supports ((-webkit-backdrop-filter:initial) or (backdrop-filter:initial)){.theme-dark.nav--is-sticking .nav__background[data-v-489e6297]{background-color:var(--color-nav-dark-uiblur-stuck)}}.nav--is-open .nav__background[data-v-489e6297]{background-color:var(--color-nav-expanded);max-height:none;transition:background-color .5s ease;transition-property:background-color,-webkit-backdrop-filter;transition-property:background-color,backdrop-filter;transition-property:background-color,backdrop-filter,-webkit-backdrop-filter}.nav--is-open .nav__background[data-v-489e6297]:after{background-color:var(--color-nav-sticking-expanded-keyline)}@supports ((-webkit-backdrop-filter:initial) or (backdrop-filter:initial)){.nav--is-open .nav__background[data-v-489e6297]{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:var(--color-nav-uiblur-expanded)}}.theme-dark.nav--is-open .nav__background[data-v-489e6297]{background-color:var(--color-nav-dark-expanded)}@supports ((-webkit-backdrop-filter:initial) or (backdrop-filter:initial)){.theme-dark.nav--is-open .nav__background[data-v-489e6297]{background-color:var(--color-nav-dark-uiblur-expanded)}}.theme-dark .nav__background[data-v-489e6297]:after{background-color:var(--color-nav-dark-keyline)}.nav--is-open.theme-dark .nav__background[data-v-489e6297]:after,.nav--is-sticking.theme-dark .nav__background[data-v-489e6297]:after{background-color:var(--color-nav-dark-sticking-expanded-keyline)}.nav__background[data-v-489e6297]:after{content:"";display:block;position:absolute;top:100%;left:50%;transform:translateX(-50%);width:980px;height:1px;z-index:1}@media only screen and (max-width:1023px){.nav__background[data-v-489e6297]:after{width:100%}}.nav--noborder .nav__background[data-v-489e6297]:after{display:none}.nav--is-sticking.nav--noborder .nav__background[data-v-489e6297]:after{display:block}.nav--fullwidth-border .nav__background[data-v-489e6297]:after,.nav--is-open .nav__background[data-v-489e6297]:after,.nav--is-sticking .nav__background[data-v-489e6297]:after,.nav--solid-background .nav__background[data-v-489e6297]:after{width:100%}.nav-overlay[data-v-489e6297]{position:fixed;left:0;right:0;top:0;display:block;opacity:0}.nav--is-open .nav-overlay[data-v-489e6297]{background-color:rgba(51,51,51,.4);transition:opacity .7s cubic-bezier(.07,1.06,.27,.95) .2s;bottom:0;opacity:1}.nav-wrapper[data-v-489e6297]{position:absolute;top:0;left:0;width:100%;height:auto;min-height:100%;z-index:1}.nav-content[data-v-489e6297]{display:flex;padding:0 1.29412rem;max-width:980px;margin:0 auto;position:relative;z-index:2;justify-content:space-between}@supports (padding:calc(max(0px))){.nav-content[data-v-489e6297]{padding-left:calc(max(1.29412rem, env(safe-area-inset-left)));padding-right:calc(max(1.29412rem, env(safe-area-inset-right)))}}@media only screen and (max-width:767px){.nav-content[data-v-489e6297]{padding:0 0 0 .94118rem}}.nav--in-breakpoint-range .nav-content[data-v-489e6297]{display:grid;grid-template-columns:1fr auto;grid-auto-rows:minmax(-webkit-min-content,-webkit-max-content);grid-auto-rows:minmax(min-content,max-content);grid-template-areas:"title actions" "menu menu"}.nav-menu[data-v-489e6297]{font-size:.70588rem;line-height:1;font-weight:400;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;flex:1 1 auto;display:flex;padding-top:10px;min-width:0}@media only screen and (max-width:767px){.nav-menu[data-v-489e6297]{font-size:.82353rem;line-height:1;font-weight:400;letter-spacing:-.02em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.nav--in-breakpoint-range .nav-menu[data-v-489e6297]{font-size:.82353rem;line-height:1;font-weight:400;letter-spacing:-.02em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding-top:0;grid-area:menu}.nav-menu-tray[data-v-489e6297]{width:100%;max-width:100%;align-items:center;display:flex;justify-content:space-between}.nav--in-breakpoint-range .nav-menu-tray[data-v-489e6297]{display:block;overflow:hidden;pointer-events:none;visibility:hidden;max-height:0;transition:max-height .4s ease-in 0s,visibility 0s linear 1s}.nav--is-open.nav--in-breakpoint-range .nav-menu-tray[data-v-489e6297]{max-height:calc(100vh - 5.64706rem);overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:auto;visibility:visible;transition-delay:.2s,0s}.nav--is-opening.nav--is-open.nav--in-breakpoint-range .nav-menu-tray[data-v-489e6297]{overflow-y:hidden}.nav--is-sticking.nav--is-open.nav--in-breakpoint-range .nav-menu-tray[data-v-489e6297]{max-height:calc(100vh - 2.82353rem)}.nav-actions[data-v-489e6297]{display:flex;align-items:center;max-height:2.82353rem;padding-right:.94118rem}.nav--in-breakpoint-range .nav-actions[data-v-489e6297]{grid-area:actions;justify-content:flex-end}.nav-title[data-v-489e6297]{height:3.05882rem;font-size:1.11765rem;line-height:1.42105;font-weight:400;letter-spacing:.012em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;cursor:default;display:flex;align-items:center;white-space:nowrap;box-sizing:border-box}@media only screen and (max-width:767px){.nav-title[data-v-489e6297]{padding-top:0;height:2.82353rem;width:90%}}.nav--in-breakpoint-range .nav-title[data-v-489e6297]{grid-area:title}.nav-title[data-v-489e6297] span{height:100%;line-height:normal}.nav-title a[data-v-489e6297]{display:inline-block;letter-spacing:inherit;line-height:normal;margin:0;text-decoration:none;white-space:nowrap}.nav-title a[data-v-489e6297]:hover{text-decoration:none}@media only screen and (max-width:767px){.nav-title a[data-v-489e6297]{display:flex}}.nav-title[data-v-489e6297],.nav-title a[data-v-489e6297]{color:var(--color-figure-gray);transition:color .5s ease-in}.nav--is-open.theme-dark .nav-title[data-v-489e6297],.nav--is-open.theme-dark .nav-title a[data-v-489e6297],.nav--is-sticking.theme-dark .nav-title[data-v-489e6297],.nav--is-sticking.theme-dark .nav-title a[data-v-489e6297],.theme-dark .nav-title[data-v-489e6297],.theme-dark .nav-title a[data-v-489e6297]{color:var(--color-nav-dark-link-color)}.nav-ax-toggle[data-v-489e6297]{display:none;position:absolute;top:0;left:0;width:1px;height:1px;z-index:10}.nav-ax-toggle[data-v-489e6297]:focus{outline-offset:-6px;width:100%;height:100%}.nav--in-breakpoint-range .nav-ax-toggle[data-v-489e6297]{display:block}.nav-menucta[data-v-489e6297]{cursor:pointer;display:none;align-items:center;overflow:hidden;width:1.17647rem;-webkit-tap-highlight-color:transparent;height:2.82353rem}.nav--in-breakpoint-range .nav-menucta[data-v-489e6297]{display:flex}.nav-menucta-chevron[data-v-489e6297]{display:block;position:relative;width:100%;height:.70588rem;transition:transform .3s linear;margin-top:2px}.nav-menucta-chevron[data-v-489e6297]:after,.nav-menucta-chevron[data-v-489e6297]:before{content:"";display:block;position:absolute;top:.58824rem;width:.70588rem;height:.05882rem;transition:transform .3s linear;background:var(--color-figure-gray)}.nav-menucta-chevron[data-v-489e6297]:before{right:50%;border-radius:.5px 0 0 .5px}.nav-menucta-chevron[data-v-489e6297]:after{left:50%;border-radius:0 .5px .5px 0}.nav-menucta-chevron[data-v-489e6297]:before{transform-origin:100% 100%;transform:rotate(40deg) scaleY(1.5)}.nav-menucta-chevron[data-v-489e6297]:after{transform-origin:0 100%;transform:rotate(-40deg) scaleY(1.5)}.nav--is-open .nav-menucta-chevron[data-v-489e6297]{transform:scaleY(-1)}.theme-dark .nav-menucta-chevron[data-v-489e6297]:after,.theme-dark .nav-menucta-chevron[data-v-489e6297]:before{background:var(--color-nav-dark-link-color)}[data-v-489e6297] .nav-menu-link{color:var(--color-nav-link-color)}[data-v-489e6297] .nav-menu-link:hover{color:var(--color-nav-link-color-hover);text-decoration:none}.theme-dark[data-v-489e6297] .nav-menu-link{color:var(--color-nav-dark-link-color)}.theme-dark[data-v-489e6297] .nav-menu-link:hover{color:var(--color-nav-dark-link-color-hover)}[data-v-489e6297] .nav-menu-link.current{color:var(--color-nav-current-link);cursor:default}[data-v-489e6297] .nav-menu-link.current:hover{color:var(--color-nav-current-link)}.theme-dark[data-v-489e6297] .nav-menu-link.current,.theme-dark[data-v-489e6297] .nav-menu-link.current:hover{color:var(--color-nav-dark-current-link)} \ No newline at end of file diff --git a/docs/swift-docc-render/css/index.a111dc80.css b/docs/swift-docc-render/css/index.a111dc80.css new file mode 100644 index 00000000..47cf2051 --- /dev/null +++ b/docs/swift-docc-render/css/index.a111dc80.css @@ -0,0 +1,9 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */.color-scheme-toggle[data-v-4472ec1e]{--toggle-color-fill:var(--color-button-background);--toggle-color-text:var(--color-fill-blue);font-size:.70588rem;line-height:1.33333;font-weight:400;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;border:1px solid var(--toggle-color-fill);border-radius:var(--toggle-border-radius-outer,4px);display:inline-flex;padding:1px}@media screen{[data-color-scheme=dark] .color-scheme-toggle[data-v-4472ec1e]{--toggle-color-text:var(--color-figure-blue)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .color-scheme-toggle[data-v-4472ec1e]{--toggle-color-text:var(--color-figure-blue)}}input[data-v-4472ec1e]{position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.text[data-v-4472ec1e]{border:1px solid transparent;border-radius:var(--toggle-border-radius-inner,2px);color:var(--toggle-color-text);display:inline-block;text-align:center;padding:1px 6px;min-width:42px;box-sizing:border-box}.text[data-v-4472ec1e]:hover{cursor:pointer}input:checked+.text[data-v-4472ec1e]{--toggle-color-text:var(--color-button-text);background:var(--toggle-color-fill);border-color:var(--toggle-color-fill)}.footer[data-v-67c823d8]{border-top:1px solid var(--color-grid)}.row[data-v-67c823d8]{margin-left:auto;margin-right:auto;width:980px;display:flex;flex-direction:row-reverse;padding:20px 0}@media only screen and (max-width:1068px){.row[data-v-67c823d8]{width:692px}}@media only screen and (max-width:735px){.row[data-v-67c823d8]{width:87.5%}}.InitialLoadingPlaceholder[data-v-47e4ace8]{background:var(--colors-loading-placeholder-background,var(--color-loading-placeholder-background));height:100vh;width:100%}html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;background-color:var(--colors-text-background,var(--color-text-background));height:100%}abbr,blockquote,body,button,dd,dl,dt,fieldset,figure,form,h1,h2,h3,h4,h5,h6,hgroup,input,legend,li,ol,p,pre,ul{margin:0;padding:0}address,caption,code,figcaption,pre,th{font-size:1em;font-weight:400;font-style:normal}fieldset,iframe,img{border:0}caption,th{text-align:left}table{border-collapse:collapse;border-spacing:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}button{background:none;border:0;box-sizing:content-box;color:inherit;cursor:pointer;font:inherit;line-height:inherit;overflow:visible;vertical-align:inherit}button:disabled{cursor:default}:focus{outline:4px solid var(--color-focus-color);outline-offset:1px}::-moz-focus-inner{border:0;padding:0}@media print{#content,#main,body{color:#000}a,a:link,a:visited{color:#000;text-decoration:none}.hide,.noprint{display:none}}body{height:100%;min-width:320px}html{font:var(--typography-html-font,17px "Helvetica Neue","Helvetica","Arial",sans-serif);quotes:"“" "”"}body{font-size:1rem;line-height:1.47059;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;background-color:var(--color-fill);color:var(--colors-text,var(--color-text));font-style:normal;word-wrap:break-word}body,button,input,select,textarea{font-synthesis:none;-moz-font-feature-settings:"kern";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;direction:ltr;text-align:left}h1,h2,h3,h4,h5,h6{color:var(--colors-header-text,var(--color-header-text))}h1+*,h2+*,h3+*,h4+*,h5+*,h6+*{margin-top:.8em}h1+h1,h1+h2,h1+h3,h1+h4,h1+h5,h1+h6,h2+h1,h2+h2,h2+h3,h2+h4,h2+h5,h2+h6,h3+h1,h3+h2,h3+h3,h3+h4,h3+h5,h3+h6,h4+h1,h4+h2,h4+h3,h4+h4,h4+h5,h4+h6,h5+h1,h5+h2,h5+h3,h5+h4,h5+h5,h5+h6,h6+h1,h6+h2,h6+h3,h6+h4,h6+h5,h6+h6{margin-top:.4em}ol+h1,ol+h2,ol+h3,ol+h4,ol+h5,ol+h6,p+h1,p+h2,p+h3,p+h4,p+h5,p+h6,ul+h1,ul+h2,ul+h3,ul+h4,ul+h5,ul+h6{margin-top:1.6em}ol+*,p+*,ul+*{margin-top:.8em}ol,ul{margin-left:1.17647em}ol ol,ol ul,ul ol,ul ul{margin-top:0;margin-bottom:0}nav ol,nav ul{margin:0;list-style:none}li li{font-size:1em}a{color:var(--colors-link,var(--color-link))}a:link,a:visited{text-decoration:none}a:hover{text-decoration:underline}a:active{text-decoration:none}p+a{display:inline-block}b,strong{font-weight:600}cite,dfn,em,i{font-style:italic}sup{font-size:.6em;vertical-align:top;position:relative;bottom:-.2em}h1 sup,h2 sup,h3 sup{font-size:.4em}sup a{vertical-align:inherit;color:inherit}sup a:hover{color:var(--figure-blue);text-decoration:none}sub{line-height:1}abbr{border:0}pre{overflow:auto;-webkit-overflow-scrolling:auto;white-space:pre;word-wrap:normal}code{font-family:Menlo,monospace;font-weight:inherit;letter-spacing:0}.syntax-comment{color:var(--syntax-comment,var(--color-syntax-comments))}.syntax-quote{color:var(--syntax-quote,var(--color-syntax-comments))}.syntax-keyword{color:var(--syntax-keyword,var(--color-syntax-keywords))}.syntax-literal{color:var(--syntax-literal,var(--color-syntax-keywords))}.syntax-selector-tag{color:var(--syntax-selector-tag,var(--color-syntax-keywords))}.syntax-string{color:var(--syntax-string,var(--color-syntax-strings))}.syntax-bullet{color:var(--syntax-bullet,var(--color-syntax-characters))}.syntax-meta{color:var(--syntax-meta,var(--color-syntax-characters))}.syntax-number{color:var(--syntax-number,var(--color-syntax-characters))}.syntax-symbol{color:var(--syntax-symbol,var(--color-syntax-characters))}.syntax-tag{color:var(--syntax-tag,var(--color-syntax-characters))}.syntax-attr{color:var(--syntax-attr,var(--color-syntax-other-type-names))}.syntax-built_in{color:var(--syntax-built_in,var(--color-syntax-other-type-names))}.syntax-builtin-name{color:var(--syntax-builtin-name,var(--color-syntax-other-type-names))}.syntax-class{color:var(--syntax-class,var(--color-syntax-other-type-names))}.syntax-function{color:var(--syntax-function,var(--color-syntax-other-type-names))}.syntax-params{color:var(--syntax-params,var(--color-syntax-other-type-names))}.syntax-section{color:var(--syntax-section,var(--color-syntax-other-type-names))}.syntax-title{color:var(--syntax-title,var(--color-syntax-other-type-names))}.syntax-type{color:var(--syntax-type,var(--color-syntax-other-type-names))}.syntax-attribute{color:var(--syntax-attribute,var(--color-syntax-plain-text))}.syntax-identifier{color:var(--syntax-identifier,var(--color-syntax-plain-text))}.syntax-subst{color:var(--syntax-subst,var(--color-syntax-plain-text))}.syntax-doctag,.syntax-strong{font-weight:700}.syntax-emphasis,.syntax-link{font-style:italic}[data-syntax=swift] .syntax-meta{color:var(--syntax-meta,var(--color-syntax-keywords))}[data-syntax=swift] .syntax-class,[data-syntax=swift] .syntax-keyword+.syntax-params,[data-syntax=swift] .syntax-params+.syntax-params{color:unset}[data-syntax=json] .syntax-attr{color:var(--syntax-attr,var(--color-syntax-strings))}#skip-nav{position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0}#skip-nav:active,#skip-nav:focus{position:relative;float:left;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;color:var(--color-figure-blue);font-size:1em;padding:0 10px;z-index:100000;top:0;left:0;height:44px;line-height:44px;-webkit-clip-path:unset;clip-path:unset}.nav--in-breakpoint-range #skip-nav{display:none}.visuallyhidden{position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0}.changed{border:1px solid var(--color-changes-modified);border-radius:4px;position:relative}.changed.has-multiple-lines,.has-multiple-lines .changed{border-radius:4px}.changed:after{right:0;background-image:url(../img/modified-icon.f496e73d.svg);background-repeat:no-repeat;bottom:0;content:" ";margin:auto;margin-right:7px;position:absolute;top:0;width:1.17647rem;height:1.17647rem;margin-top:.41176rem;z-index:2}@media screen{[data-color-scheme=dark] .changed:after{background-image:url(../img/modified-icon.f496e73d.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .changed:after{background-image:url(../img/modified-icon.f496e73d.svg)}}.changed-added{border-color:var(--color-changes-added)}.changed-added:after{background-image:url(../img/added-icon.d6f7e47d.svg)}@media screen{[data-color-scheme=dark] .changed-added:after{background-image:url(../img/added-icon.d6f7e47d.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .changed-added:after{background-image:url(../img/added-icon.d6f7e47d.svg)}}.changed-deprecated{border-color:var(--color-changes-deprecated)}.changed-deprecated:after{background-image:url(../img/deprecated-icon.015b4f17.svg)}@media screen{[data-color-scheme=dark] .changed-deprecated:after{background-image:url(../img/deprecated-icon.015b4f17.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .changed-deprecated:after{background-image:url(../img/deprecated-icon.015b4f17.svg)}}.changed.link-block:after,.changed.relationships-item:after,.link-block .changed:after{margin-top:7px}.change-added,.change-removed{padding:2px 0}.change-removed{background-color:var(--color-highlight-red)}.change-added{background-color:var(--color-highlight-green)}body{color-scheme:light dark}body[data-color-scheme=light]{color-scheme:light}body[data-color-scheme=dark]{color-scheme:dark}body{--color-fill:#fff;--color-fill-secondary:#f7f7f7;--color-fill-tertiary:#f0f0f0;--color-fill-quaternary:#282828;--color-fill-blue:#00f;--color-fill-gray:#ccc;--color-fill-gray-secondary:#f5f5f5;--color-fill-gray-tertiary:#f0f0f0;--color-fill-green-secondary:#f0fff0;--color-fill-orange-secondary:#fffaf6;--color-fill-red-secondary:#fff0f5;--color-figure-blue:#36f;--color-figure-gray:#000;--color-figure-gray-secondary:#666;--color-figure-gray-secondary-alt:#666;--color-figure-gray-tertiary:#666;--color-figure-green:green;--color-figure-light-gray:#666;--color-figure-orange:#c30;--color-figure-red:red;--color-tutorials-teal:#000;--color-article-background:var(--color-fill-tertiary);--color-article-body-background:var(--color-fill);--color-aside-deprecated:var(--color-figure-gray);--color-aside-deprecated-background:var(--color-fill-orange-secondary);--color-aside-deprecated-border:var(--color-figure-orange);--color-aside-experiment:var(--color-figure-gray);--color-aside-experiment-background:var(--color-fill-gray-secondary);--color-aside-experiment-border:var(--color-figure-light-gray);--color-aside-important:var(--color-figure-gray);--color-aside-important-background:var(--color-fill-gray-secondary);--color-aside-important-border:var(--color-figure-light-gray);--color-aside-note:var(--color-figure-gray);--color-aside-note-background:var(--color-fill-gray-secondary);--color-aside-note-border:var(--color-figure-light-gray);--color-aside-tip:var(--color-figure-gray);--color-aside-tip-background:var(--color-fill-gray-secondary);--color-aside-tip-border:var(--color-figure-light-gray);--color-aside-warning:var(--color-figure-gray);--color-aside-warning-background:var(--color-fill-red-secondary);--color-aside-warning-border:var(--color-figure-red);--color-badge-default:var(--color-figure-light-gray);--color-badge-beta:var(--color-figure-gray-tertiary);--color-badge-deprecated:var(--color-figure-orange);--color-badge-dark-default:#b0b0b0;--color-badge-dark-beta:#b0b0b0;--color-badge-dark-deprecated:#f60;--color-button-background:var(--color-fill-blue);--color-button-background-active:#36f;--color-button-background-hover:var(--color-figure-blue);--color-button-text:#fff;--color-call-to-action-background:var(--color-fill-secondary);--color-changes-added:var(--color-figure-light-gray);--color-changes-added-hover:var(--color-figure-light-gray);--color-changes-deprecated:var(--color-figure-light-gray);--color-changes-deprecated-hover:var(--color-figure-light-gray);--color-changes-modified:var(--color-figure-light-gray);--color-changes-modified-hover:var(--color-figure-light-gray);--color-changes-modified-previous-background:var(--color-fill-gray-secondary);--color-code-background:var(--color-fill-secondary);--color-code-collapsible-background:var(--color-fill-tertiary);--color-code-collapsible-text:var(--color-figure-gray-secondary-alt);--color-code-line-highlight:rgba(51,102,255,0.08);--color-code-line-highlight-border:var(--color-figure-blue);--color-code-plain:var(--color-figure-gray);--color-content-table-content-color:var(--color-fill-secondary);--color-dropdown-background:hsla(0,0%,100%,0.8);--color-dropdown-border:#ccc;--color-dropdown-option-text:#666;--color-dropdown-text:#000;--color-dropdown-dark-background:hsla(0,0%,100%,0.1);--color-dropdown-dark-border:hsla(0,0%,94.1%,0.2);--color-dropdown-dark-option-text:#ccc;--color-dropdown-dark-text:#fff;--color-eyebrow:var(--color-figure-gray-secondary);--color-focus-border-color:var(--color-fill-blue);--color-focus-color:rgba(0,125,250,0.6);--color-form-error:var(--color-figure-red);--color-form-error-background:var(--color-fill-red-secondary);--color-form-valid:var(--color-figure-green);--color-form-valid-background:var(--color-fill-green-secondary);--color-generic-modal-background:var(--color-fill);--color-grid:var(--color-fill-gray);--color-header-text:var(--color-figure-gray);--color-hero-eyebrow:#ccc;--color-link:var(--color-figure-blue);--color-loading-placeholder-background:var(--color-fill);--color-nav-color:#666;--color-nav-current-link:rgba(0,0,0,0.6);--color-nav-expanded:#fff;--color-nav-hierarchy-collapse-background:#f0f0f0;--color-nav-hierarchy-collapse-borders:#ccc;--color-nav-hierarchy-item-borders:#ccc;--color-nav-keyline:rgba(0,0,0,0.2);--color-nav-link-color:#000;--color-nav-link-color-hover:#36f;--color-nav-outlines:#ccc;--color-nav-rule:hsla(0,0%,94.1%,0.5);--color-nav-solid-background:#fff;--color-nav-sticking-expanded-keyline:rgba(0,0,0,0.1);--color-nav-stuck:hsla(0,0%,100%,0.9);--color-nav-uiblur-expanded:hsla(0,0%,100%,0.9);--color-nav-uiblur-stuck:hsla(0,0%,100%,0.7);--color-nav-root-subhead:var(--color-tutorials-teal);--color-nav-dark-border-top-color:hsla(0,0%,100%,0.4);--color-nav-dark-color:#b0b0b0;--color-nav-dark-current-link:hsla(0,0%,100%,0.6);--color-nav-dark-expanded:#2a2a2a;--color-nav-dark-hierarchy-collapse-background:#424242;--color-nav-dark-hierarchy-collapse-borders:#666;--color-nav-dark-hierarchy-item-borders:#424242;--color-nav-dark-keyline:rgba(66,66,66,0.95);--color-nav-dark-link-color:#fff;--color-nav-dark-link-color-hover:#09f;--color-nav-dark-outlines:#575757;--color-nav-dark-rule:#575757;--color-nav-dark-solid-background:#000;--color-nav-dark-sticking-expanded-keyline:rgba(66,66,66,0.7);--color-nav-dark-stuck:rgba(42,42,42,0.9);--color-nav-dark-uiblur-expanded:rgba(42,42,42,0.9);--color-nav-dark-uiblur-stuck:rgba(42,42,42,0.7);--color-nav-dark-root-subhead:#fff;--color-runtime-preview-background:var(--color-fill-tertiary);--color-runtime-preview-disabled-text:hsla(0,0%,40%,0.6);--color-runtime-preview-text:var(--color-figure-gray-secondary);--color-secondary-label:var(--color-figure-gray-secondary);--color-step-background:var(--color-fill-secondary);--color-step-caption:var(--color-figure-gray-secondary);--color-step-focused:var(--color-figure-light-gray);--color-step-text:var(--color-figure-gray-secondary);--color-svg-icon:#666;--color-syntax-attributes:#947100;--color-syntax-characters:#272ad8;--color-syntax-comments:#707f8c;--color-syntax-documentation-markup:#506375;--color-syntax-documentation-markup-keywords:#506375;--color-syntax-heading:#ba2da2;--color-syntax-keywords:#ad3da4;--color-syntax-marks:#000;--color-syntax-numbers:#272ad8;--color-syntax-other-class-names:#703daa;--color-syntax-other-constants:#4b21b0;--color-syntax-other-declarations:#047cb0;--color-syntax-other-function-and-method-names:#4b21b0;--color-syntax-other-instance-variables-and-globals:#703daa;--color-syntax-other-preprocessor-macros:#78492a;--color-syntax-other-type-names:#703daa;--color-syntax-param-internal-name:#404040;--color-syntax-plain-text:#000;--color-syntax-preprocessor-statements:#78492a;--color-syntax-project-class-names:#3e8087;--color-syntax-project-constants:#2d6469;--color-syntax-project-function-and-method-names:#2d6469;--color-syntax-project-instance-variables-and-globals:#3e8087;--color-syntax-project-preprocessor-macros:#78492a;--color-syntax-project-type-names:#3e8087;--color-syntax-strings:#d12f1b;--color-syntax-type-declarations:#03638c;--color-syntax-urls:#1337ff;--color-tabnav-item-border-color:var(--color-fill-gray);--color-text:var(--color-figure-gray);--color-text-background:var(--color-fill);--color-tutorial-assessments-background:var(--color-fill-secondary);--color-tutorial-background:var(--color-fill);--color-tutorial-navbar-dropdown-background:var(--color-fill);--color-tutorial-navbar-dropdown-border:var(--color-fill-gray);--color-tutorial-quiz-border-active:var(--color-figure-blue);--color-tutorials-overview-background:#161616;--color-tutorials-overview-content:#fff;--color-tutorials-overview-content-alt:#fff;--color-tutorials-overview-eyebrow:#ccc;--color-tutorials-overview-icon:#b0b0b0;--color-tutorials-overview-link:#09f;--color-tutorials-overview-navigation-link:#ccc;--color-tutorials-overview-navigation-link-active:#fff;--color-tutorials-overview-navigation-link-hover:#fff;--color-tutorial-hero-text:#fff;--color-tutorial-hero-background:#000}@media screen{body[data-color-scheme=dark]{--color-fill:#000;--color-fill-secondary:#161616;--color-fill-tertiary:#2a2a2a;--color-fill-blue:#06f;--color-fill-gray:#575757;--color-fill-gray-secondary:#222;--color-fill-gray-tertiary:#424242;--color-fill-green-secondary:#030;--color-fill-orange-secondary:#472400;--color-fill-red-secondary:#300;--color-figure-blue:#09f;--color-figure-gray:#fff;--color-figure-gray-secondary:#ccc;--color-figure-gray-secondary-alt:#b0b0b0;--color-figure-gray-tertiary:#b0b0b0;--color-figure-green:#090;--color-figure-light-gray:#b0b0b0;--color-figure-orange:#f60;--color-figure-red:#f33;--color-tutorials-teal:#fff;--color-article-body-background:#111;--color-button-background-active:#06f;--color-code-line-highlight:rgba(0,153,255,0.08);--color-dropdown-background:var(--color-dropdown-dark-background);--color-dropdown-border:var(--color-dropdown-dark-border);--color-dropdown-option-text:var(--color-dropdown-dark-option-text);--color-dropdown-text:var(--color-dropdown-dark-text);--color-nav-color:var(--color-nav-dark-color);--color-nav-current-link:var(--color-nav-dark-current-link);--color-nav-expanded:var(--color-nav-dark-expanded);--color-nav-hierarchy-collapse-background:var(--color-nav-dark-hierarchy-collapse-background);--color-nav-hierarchy-collapse-borders:var(--color-nav-dark-hierarchy-collapse-borders);--color-nav-hierarchy-item-borders:var(--color-nav-dark-hierarchy-item-borders);--color-nav-keyline:var(--color-nav-dark-keyline);--color-nav-link-color:var(--color-nav-dark-link-color);--color-nav-link-color-hover:var(--color-nav-dark-link-color-hover);--color-nav-outlines:var(--color-nav-dark-outlines);--color-nav-rule:var(--color-nav-dark-rule);--color-nav-solid-background:var(--color-nav-dark-solid-background);--color-nav-sticking-expanded-keyline:var(--color-nav-dark-sticking-expanded-keyline);--color-nav-stuck:var(--color-nav-dark-stuck);--color-nav-uiblur-expanded:var(--color-nav-dark-uiblur-expanded);--color-nav-uiblur-stuck:var(--color-nav-dark-uiblur-stuck);--color-runtime-preview-disabled-text:hsla(0,0%,80%,0.6);--color-syntax-attributes:#cc9768;--color-syntax-characters:#d9c97c;--color-syntax-comments:#7f8c98;--color-syntax-documentation-markup:#7f8c98;--color-syntax-documentation-markup-keywords:#a3b1bf;--color-syntax-keywords:#ff7ab2;--color-syntax-marks:#fff;--color-syntax-numbers:#d9c97c;--color-syntax-other-class-names:#dabaff;--color-syntax-other-constants:#a7ebdd;--color-syntax-other-declarations:#4eb0cc;--color-syntax-other-function-and-method-names:#b281eb;--color-syntax-other-instance-variables-and-globals:#b281eb;--color-syntax-other-preprocessor-macros:#ffa14f;--color-syntax-other-type-names:#dabaff;--color-syntax-param-internal-name:#bfbfbf;--color-syntax-plain-text:#fff;--color-syntax-preprocessor-statements:#ffa14f;--color-syntax-project-class-names:#acf2e4;--color-syntax-project-constants:#78c2b3;--color-syntax-project-function-and-method-names:#78c2b3;--color-syntax-project-instance-variables-and-globals:#78c2b3;--color-syntax-project-preprocessor-macros:#ffa14f;--color-syntax-project-type-names:#acf2e4;--color-syntax-strings:#ff8170;--color-syntax-type-declarations:#6bdfff;--color-syntax-urls:#69f;--color-tutorial-background:var(--color-fill-tertiary)}}@media screen and (prefers-color-scheme:dark){body[data-color-scheme=auto]{--color-fill:#000;--color-fill-secondary:#161616;--color-fill-tertiary:#2a2a2a;--color-fill-blue:#06f;--color-fill-gray:#575757;--color-fill-gray-secondary:#222;--color-fill-gray-tertiary:#424242;--color-fill-green-secondary:#030;--color-fill-orange-secondary:#472400;--color-fill-red-secondary:#300;--color-figure-blue:#09f;--color-figure-gray:#fff;--color-figure-gray-secondary:#ccc;--color-figure-gray-secondary-alt:#b0b0b0;--color-figure-gray-tertiary:#b0b0b0;--color-figure-green:#090;--color-figure-light-gray:#b0b0b0;--color-figure-orange:#f60;--color-figure-red:#f33;--color-tutorials-teal:#fff;--color-article-body-background:#111;--color-button-background-active:#06f;--color-code-line-highlight:rgba(0,153,255,0.08);--color-dropdown-background:var(--color-dropdown-dark-background);--color-dropdown-border:var(--color-dropdown-dark-border);--color-dropdown-option-text:var(--color-dropdown-dark-option-text);--color-dropdown-text:var(--color-dropdown-dark-text);--color-nav-color:var(--color-nav-dark-color);--color-nav-current-link:var(--color-nav-dark-current-link);--color-nav-expanded:var(--color-nav-dark-expanded);--color-nav-hierarchy-collapse-background:var(--color-nav-dark-hierarchy-collapse-background);--color-nav-hierarchy-collapse-borders:var(--color-nav-dark-hierarchy-collapse-borders);--color-nav-hierarchy-item-borders:var(--color-nav-dark-hierarchy-item-borders);--color-nav-keyline:var(--color-nav-dark-keyline);--color-nav-link-color:var(--color-nav-dark-link-color);--color-nav-link-color-hover:var(--color-nav-dark-link-color-hover);--color-nav-outlines:var(--color-nav-dark-outlines);--color-nav-rule:var(--color-nav-dark-rule);--color-nav-solid-background:var(--color-nav-dark-solid-background);--color-nav-sticking-expanded-keyline:var(--color-nav-dark-sticking-expanded-keyline);--color-nav-stuck:var(--color-nav-dark-stuck);--color-nav-uiblur-expanded:var(--color-nav-dark-uiblur-expanded);--color-nav-uiblur-stuck:var(--color-nav-dark-uiblur-stuck);--color-runtime-preview-disabled-text:hsla(0,0%,80%,0.6);--color-syntax-attributes:#cc9768;--color-syntax-characters:#d9c97c;--color-syntax-comments:#7f8c98;--color-syntax-documentation-markup:#7f8c98;--color-syntax-documentation-markup-keywords:#a3b1bf;--color-syntax-keywords:#ff7ab2;--color-syntax-marks:#fff;--color-syntax-numbers:#d9c97c;--color-syntax-other-class-names:#dabaff;--color-syntax-other-constants:#a7ebdd;--color-syntax-other-declarations:#4eb0cc;--color-syntax-other-function-and-method-names:#b281eb;--color-syntax-other-instance-variables-and-globals:#b281eb;--color-syntax-other-preprocessor-macros:#ffa14f;--color-syntax-other-type-names:#dabaff;--color-syntax-param-internal-name:#bfbfbf;--color-syntax-plain-text:#fff;--color-syntax-preprocessor-statements:#ffa14f;--color-syntax-project-class-names:#acf2e4;--color-syntax-project-constants:#78c2b3;--color-syntax-project-function-and-method-names:#78c2b3;--color-syntax-project-instance-variables-and-globals:#78c2b3;--color-syntax-project-preprocessor-macros:#ffa14f;--color-syntax-project-type-names:#acf2e4;--color-syntax-strings:#ff8170;--color-syntax-type-declarations:#6bdfff;--color-syntax-urls:#69f;--color-tutorial-background:var(--color-fill-tertiary)}}#main{outline-style:none}[data-v-bf0cd418] :focus:not(input):not(textarea):not(select){outline:none}.fromkeyboard[data-v-bf0cd418] :focus:not(input):not(textarea):not(select){outline:4px solid var(--color-focus-color);outline-offset:1px}#app[data-v-bf0cd418]{display:grid;grid-template-rows:auto 1fr auto;min-height:100%}#app[data-v-bf0cd418]>*{min-width:0}#app.hascustomheader[data-v-bf0cd418]{grid-template-rows:auto auto 1fr auto}.container[data-v-790053de]{margin-left:auto;margin-right:auto;width:980px;outline-style:none;margin-top:92px;margin-bottom:140px}@media only screen and (max-width:1068px){.container[data-v-790053de]{width:692px}}@media only screen and (max-width:735px){.container[data-v-790053de]{width:87.5%}}.error-content[data-v-790053de]{box-sizing:border-box;width:502px;margin-left:auto;margin-right:auto;margin-bottom:54px}@media only screen and (max-width:1068px){.error-content[data-v-790053de]{width:420px;margin-bottom:45px}}@media only screen and (max-width:735px){.error-content[data-v-790053de]{max-width:330px;width:auto;margin-bottom:35px}}.title[data-v-790053de]{text-align:center;font-size:2.82353rem;line-height:1.08333;font-weight:400;letter-spacing:-.003em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){.title[data-v-790053de]{font-size:2.35294rem;line-height:1.1;font-weight:400;letter-spacing:0;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){.title[data-v-790053de]{font-size:1.88235rem;line-height:1.125;font-weight:400;letter-spacing:.013em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}} \ No newline at end of file diff --git a/docs/swift-docc-render/css/topic.fe88ced3.css b/docs/swift-docc-render/css/topic.fe88ced3.css new file mode 100644 index 00000000..79b896db --- /dev/null +++ b/docs/swift-docc-render/css/topic.fe88ced3.css @@ -0,0 +1,9 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */.nav-title-content[data-v-60ea3af8]{max-width:100%}.title[data-v-60ea3af8]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:inline-block;vertical-align:top;max-width:296px}@media only screen and (max-width:1023px){.title[data-v-60ea3af8]{max-width:205px}}@media only screen and (max-width:767px){.title[data-v-60ea3af8]{flex-basis:fill;display:initial;vertical-align:initial;max-width:none}}.subhead[data-v-60ea3af8]{color:var(--color-nav-root-subhead)}.theme-dark .subhead[data-v-60ea3af8]{color:var(--color-nav-dark-root-subhead)}.nav-menu-item[data-v-f44c239a]{margin-left:1.41176rem;list-style:none;min-width:0}.nav--in-breakpoint-range .nav-menu-item[data-v-f44c239a]{margin-left:0;width:100%;height:2.47059rem}.nav--in-breakpoint-range .nav-menu-item[data-v-f44c239a]:first-child .nav-menu-link{border-top:0}.nav--in-breakpoint-range .nav-menu-item--animated[data-v-f44c239a]{opacity:0;transform:none;transition:.5s ease;transition-property:transform,opacity}.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.mobile-dropdown[data-v-3d58f504]{box-sizing:border-box}.nav--in-breakpoint-range .mobile-dropdown[data-v-3d58f504]{padding-left:.23529rem;padding-right:.23529rem}.mobile-dropdown ul[data-v-3d58f504]{list-style:none}.mobile-dropdown .option[data-v-3d58f504]{cursor:pointer;font-size:.70588rem;padding:.5rem 0;display:block;text-decoration:none;color:inherit}.mobile-dropdown .option[data-v-3d58f504]:focus{outline-offset:0}.mobile-dropdown .option.depth1[data-v-3d58f504]{padding-left:.47059rem}.active[data-v-3d58f504],.tutorial.router-link-active[data-v-3d58f504]{font-weight:600}.active[data-v-3d58f504]:focus,.tutorial.router-link-active[data-v-3d58f504]:focus{outline:none}.chapter-list[data-v-3d58f504]:not(:first-child){margin-top:1rem}.chapter-name[data-v-3d58f504],.tutorial[data-v-3d58f504]{padding:.5rem 0;font-size:1rem;line-height:1.47059;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.section-list[data-v-3d58f504],.tutorial-list[data-v-3d58f504]{padding:0 .58824rem}.chapter-list:last-child .tutorial-list[data-v-3d58f504]:last-child{padding-bottom:10em}.chapter-list[data-v-3d58f504]{display:inline-block}.form-element[data-v-998803d8]{position:relative}.form-dropdown[data-v-998803d8]{font-size:1rem;line-height:1.23529;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;display:block;box-sizing:border-box;width:100%;height:3.3em;color:var(--color-dropdown-text);padding:1.11765rem 2.35294rem 0 .94118rem;text-align:left;border:1px solid var(--color-dropdown-border);border-radius:4px;background-clip:padding-box;margin-bottom:.82353rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;min-height:32px}.form-dropdown[data-v-998803d8]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.form-dropdown.no-eyebrow[data-v-998803d8]{padding-top:0}.form-dropdown[data-v-998803d8]:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--color-dropdown-text)}.form-dropdown[data-v-998803d8]::-ms-expand{opacity:0}.form-dropdown~.form-icon[data-v-998803d8]{position:absolute;display:block;pointer-events:none;fill:var(--color-figure-gray-tertiary);right:14px;width:13px;height:auto;top:50%;transform:translateY(-50%)}.is-open .form-dropdown~.form-icon[data-v-998803d8]{transform:translateY(-50%) scale(-1)}@media only screen and (max-width:735px){.form-dropdown~.form-icon[data-v-998803d8]{right:14px}}.form-dropdown~.form-label[data-v-998803d8]{font-size:.70588rem;line-height:1.75;font-weight:400;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;position:absolute;top:.47059rem;left:17px;color:var(--color-figure-gray-secondary);pointer-events:none;padding:0;z-index:1}.form-dropdown[data-v-998803d8] option{color:var(--color-dropdown-text)}.form-dropdown-selectnone[data-v-998803d8]{color:transparent}.form-dropdown-selectnone~.form-label[data-v-998803d8]{font-size:1rem;line-height:1.23529;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;top:19px;left:17px;color:var(--color-figure-gray-tertiary)}.form-dropdown-selectnone[data-v-998803d8]:-moz-focusring{text-shadow:none}.form-dropdown-selectnone[data-v-998803d8]::-ms-value{display:none}.theme-dark .form-dropdown[data-v-998803d8]{color:var(--color-dropdown-dark-text);background-color:var(--color-dropdown-dark-background);border-color:var(--color-dropdown-dark-border)}.theme-dark .form-dropdown~.form-label[data-v-998803d8]{color:#ccc}.theme-dark .form-dropdown[data-v-998803d8]:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--color-dropdown-dark-text)}.theme-dark .form-dropdown.form-dropdown-selectnone[data-v-998803d8]{color:transparent}.theme-dark .form-dropdown.form-dropdown-selectnone[data-v-998803d8]:-moz-focusring{text-shadow:none}.theme-dark .form-dropdown-selectnone~.form-label[data-v-998803d8]{color:#b0b0b0}.dropdown-small[data-v-12dd746a]{height:30px;display:flex;align-items:center;position:relative;background:var(--color-fill)}.dropdown-small .form-dropdown-toggle[data-v-12dd746a]{line-height:1.5;font-size:12px;padding-top:0;padding-bottom:0;padding-left:20px;min-height:unset;height:30px;display:flex;align-items:center}.dropdown-small .form-dropdown-toggle[data-v-12dd746a]:focus{box-shadow:none;border-color:var(--color-dropdown-border)}.fromkeyboard .dropdown-small .form-dropdown-toggle[data-v-12dd746a]:focus{box-shadow:0 0 0 2px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.form-dropdown-toggle[data-v-12dd746a]{margin:0}.is-open .form-dropdown-toggle[data-v-12dd746a]{border-radius:4px 4px 0 0;border-bottom:none;padding-bottom:1px}.fromkeyboard .is-open .form-dropdown-toggle[data-v-12dd746a]{box-shadow:1px -1px 0 1px var(--color-focus-color),-1px -1px 0 1px var(--color-focus-color);border-color:var(--color-focus-border-color)}.form-dropdown-title[data-v-12dd746a]{margin:0;padding:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dropdown-custom[data-v-12dd746a]{border-radius:4px}.dropdown-custom.is-open[data-v-12dd746a]{border-radius:4px 4px 0 0}.dropdown-custom[data-v-12dd746a] .form-dropdown-content{background:var(--color-fill);position:absolute;right:0;left:0;top:100%;border-bottom-left-radius:4px;border-bottom-right-radius:4px;border:1px solid var(--color-dropdown-border);border-top:none;display:none;overflow-y:auto}.dropdown-custom[data-v-12dd746a] .form-dropdown-content.is-open{display:block}.fromkeyboard .dropdown-custom[data-v-12dd746a] .form-dropdown-content.is-open{box-shadow:1px 1px 0 1px var(--color-focus-color),-1px 1px 0 1px var(--color-focus-color);border-color:var(--color-focus-border-color);border-top-color:transparent}.nav .dropdown-custom[data-v-12dd746a] .form-dropdown-content{max-height:calc(100vh - 116px - 3.05882rem)}.nav--is-sticking.nav .dropdown-custom[data-v-12dd746a] .form-dropdown-content{max-height:calc(100vh - 3.05882rem - 72px)}.dropdown-custom[data-v-12dd746a] .options{list-style:none;margin:0;padding:0 0 20px}.dropdown-custom[data-v-12dd746a] .option{cursor:pointer;padding:5px 20px;font-size:12px;line-height:20px;outline:none}.dropdown-custom[data-v-12dd746a] .option:hover{background-color:var(--color-fill-tertiary)}.dropdown-custom[data-v-12dd746a] .option.option-active{font-weight:600}.fromkeyboard .dropdown-custom[data-v-12dd746a] .option:hover{background-color:transparent}.fromkeyboard .dropdown-custom[data-v-12dd746a] .option:focus{background-color:var(--color-fill-tertiary);outline:none}.tutorial-dropdown[data-v-4a151342]{grid-column:3}.section-tracker[data-v-4a151342]{font-size:.70588rem;line-height:1.33333;font-weight:400;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--color-figure-gray-secondary);margin-left:15px}.tutorial-dropdown[data-v-78dc103f]{grid-column:1/2}.tutorial-dropdown .options[data-v-78dc103f]{padding-top:1rem;padding-bottom:0}.tutorial-dropdown .option[data-v-78dc103f]{padding:5px 20px 5px 30px}.chapter-list[data-v-78dc103f]{padding-bottom:20px}.chapter-name[data-v-78dc103f]{margin:0 20px 5px 20px;line-height:normal;color:var(--color-figure-gray-secondary)}.chevron-icon[data-v-7138b5bf]{padding:0;color:var(--color-nav-outlines);grid-column:2;height:20px;width:20px;margin:0 4px}@media only screen and (min-width:768px){.nav[data-v-7138b5bf] .nav-content{display:grid;grid-template-columns:auto auto 3fr;align-items:center}.nav[data-v-7138b5bf] .nav-menu-tray{width:auto}.nav[data-v-7138b5bf] .nav-menu{padding:0;grid-column:3/5}.nav[data-v-7138b5bf] .nav-menu-item{margin:0}}.dropdown-container[data-v-7138b5bf]{height:3.05882rem;display:grid;grid-template-columns:minmax(230px,285px) auto minmax(230px,1fr);align-items:center}@media only screen and (max-width:1023px){.dropdown-container[data-v-7138b5bf]{grid-template-columns:minmax(173px,216px) auto minmax(173px,1fr)}}.separator[data-v-7138b5bf]{height:20px;border-right:1px solid;border-color:var(--color-nav-outlines);margin:0 20px;grid-column:2}.mobile-dropdown-container[data-v-7138b5bf],.nav--in-breakpoint-range.nav .dropdown-container[data-v-7138b5bf],.nav--in-breakpoint-range.nav .separator[data-v-7138b5bf]{display:none}.nav--in-breakpoint-range.nav .mobile-dropdown-container[data-v-7138b5bf]{display:block}.nav[data-v-7138b5bf] .nav-title{grid-column:1;width:90%;padding-top:0}.primary-dropdown[data-v-7138b5bf],.secondary-dropdown[data-v-7138b5bf]{background:var(--color-tutorial-navbar-dropdown-background);border-color:var(--color-tutorial-navbar-dropdown-border)}.primary-dropdown[data-v-7138b5bf] .form-dropdown,.primary-dropdown[data-v-7138b5bf] .form-dropdown:focus,.secondary-dropdown[data-v-7138b5bf] .form-dropdown,.secondary-dropdown[data-v-7138b5bf] .form-dropdown:focus{border-color:var(--color-tutorial-navbar-dropdown-border)}.primary-dropdown[data-v-7138b5bf] .options,.secondary-dropdown[data-v-7138b5bf] .options{background:var(--color-tutorial-navbar-dropdown-background);border-color:var(--color-tutorial-navbar-dropdown-border)}.replay-button[data-v-7335dbb2]{display:flex;align-items:center;justify-content:center;cursor:pointer;visibility:hidden;margin-top:.5rem;-webkit-tap-highlight-color:transparent}.replay-button.visible[data-v-7335dbb2]{visibility:visible}.replay-button svg.replay-icon[data-v-7335dbb2]{height:12px;width:12px;margin-left:.3em}[data-v-1b5cc854] img,[data-v-1b5cc854] video{display:block;margin-left:auto;margin-right:auto;-o-object-fit:contain;object-fit:contain;max-width:100%}[data-v-3cfe1c35] .code-listing+*,[data-v-3cfe1c35] aside+*,[data-v-3cfe1c35] h2+*,[data-v-3cfe1c35] h3+*,[data-v-3cfe1c35] ol+*,[data-v-3cfe1c35] p+*,[data-v-3cfe1c35] ul+*{margin-top:20px}[data-v-3cfe1c35] ol ol,[data-v-3cfe1c35] ol ul,[data-v-3cfe1c35] ul ol,[data-v-3cfe1c35] ul ul{margin-top:0}[data-v-3cfe1c35] h2{font-size:1.88235rem;line-height:1.25;font-weight:400;letter-spacing:.004em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){[data-v-3cfe1c35] h2{font-size:1.64706rem;line-height:1.28571;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){[data-v-3cfe1c35] h2{font-size:1.41176rem;line-height:1.33333;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}[data-v-3cfe1c35] h3{font-size:1.41176rem;line-height:1.16667;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){[data-v-3cfe1c35] h3{font-size:1.23529rem;line-height:1.19048;font-weight:400;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}[data-v-3cfe1c35] .code-listing{background:var(--color-code-background);border-color:var(--colors-grid,var(--color-grid));border-style:solid;border-width:1px}[data-v-3cfe1c35] .code-listing pre{font-size:.70588rem;line-height:1.83333;font-weight:400;letter-spacing:-.01em;font-family:Menlo,monospace;padding:20px 0}.columns[data-v-30edf911]{display:grid;grid-template-rows:repeat(2,auto)}.columns.cols-2[data-v-30edf911]{gap:20px 8.33333%;grid-template-columns:repeat(2,1fr)}.columns.cols-3[data-v-30edf911]{gap:20px 4.16667%;grid-template-columns:repeat(3,1fr)}.asset[data-v-30edf911]{align-self:end;grid-row:1}.content[data-v-30edf911]{grid-row:2}@media only screen and (max-width:735px){.columns.cols-2[data-v-30edf911],.columns.cols-3[data-v-30edf911]{grid-template-columns:unset}.asset[data-v-30edf911],.content[data-v-30edf911]{grid-row:auto}}.content-and-media[data-v-3fa44f9e]{display:flex}.content-and-media.media-leading[data-v-3fa44f9e]{flex-direction:row-reverse}.content-and-media.media-trailing[data-v-3fa44f9e]{flex-direction:row}@media only screen and (min-width:736px){.content-and-media[data-v-3fa44f9e]{align-items:center;justify-content:center}}.content[data-v-3fa44f9e]{width:62.5%}.asset[data-v-3fa44f9e]{width:29.16667%}.media-leading .asset[data-v-3fa44f9e]{margin-right:8.33333%}.media-trailing .asset[data-v-3fa44f9e]{margin-left:8.33333%}@media only screen and (max-width:735px){.content-and-media.media-leading[data-v-3fa44f9e],.content-and-media.media-trailing[data-v-3fa44f9e]{flex-direction:column}.asset[data-v-3fa44f9e],.content[data-v-3fa44f9e]{width:100%}.media-leading .asset[data-v-3fa44f9e],.media-trailing .asset[data-v-3fa44f9e]{margin:20px 0 0 0}}.group[id][data-v-1f2be54b]{margin-top:20px;padding-top:20px}[data-v-1f2be54b] img,[data-v-1f2be54b] video{display:block;margin:0 auto;max-width:100%}.layout+[data-v-4d5a806e]{margin-top:40px}@media only screen and (max-width:735px){.layout[data-v-4d5a806e]:first-child>:not(.group[id]){margin-top:40px}}.body[data-v-6499e2f2]{background:var(--colors-text-background,var(--color-article-body-background));margin-left:auto;margin-right:auto;width:980px;border-radius:10px;transform:translateY(-120px)}@media only screen and (max-width:1068px){.body[data-v-6499e2f2]{width:692px}}@media only screen and (max-width:735px){.body[data-v-6499e2f2]{width:87.5%;border-radius:0;transform:none}}.body[data-v-6499e2f2]~*{margin-top:-40px}.body-content[data-v-6499e2f2]{padding:40px 8.33333% 80px 8.33333%}@media only screen and (max-width:735px){.body-content[data-v-6499e2f2]{padding:0 0 40px 0}}.call-to-action[data-v-2016b288]{padding:65px 0;background:var(--color-call-to-action-background)}.theme-dark .call-to-action[data-v-2016b288]{--color-call-to-action-background:#424242}.row[data-v-2016b288]{margin-left:auto;margin-right:auto;width:980px;display:flex;align-items:center}@media only screen and (max-width:1068px){.row[data-v-2016b288]{width:692px}}@media only screen and (max-width:735px){.row[data-v-2016b288]{width:87.5%}}[data-v-2016b288] img,[data-v-2016b288] video{max-height:560px}h2[data-v-2016b288]{font-size:1.88235rem;line-height:1.25;font-weight:400;letter-spacing:.004em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){h2[data-v-2016b288]{font-size:1.64706rem;line-height:1.28571;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){h2[data-v-2016b288]{font-size:1.41176rem;line-height:1.33333;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.label[data-v-2016b288]{display:block;font-size:1.23529rem;line-height:1.19048;font-weight:400;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;margin-bottom:.4em;color:var(--color-eyebrow)}@media only screen and (max-width:735px){.label[data-v-2016b288]{font-size:1.11765rem;line-height:1.21053;font-weight:400;letter-spacing:.012em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.content[data-v-2016b288]{margin-bottom:1.5rem}.right-column[data-v-2016b288]{margin-left:auto}@media only screen and (max-width:735px){.row[data-v-2016b288]{display:block}.col+.col[data-v-2016b288]{margin-top:40px}}@media only screen and (max-width:735px){.call-to-action[data-v-426a965c]{margin-top:0}}.headline[data-v-1898f592]{margin-bottom:.8em}.heading[data-v-1898f592]{font-size:2.82353rem;line-height:1.08333;font-weight:400;letter-spacing:-.003em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--color-header-text)}@media only screen and (max-width:1068px){.heading[data-v-1898f592]{font-size:2.35294rem;line-height:1.1;font-weight:400;letter-spacing:0;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){.heading[data-v-1898f592]{font-size:1.88235rem;line-height:1.125;font-weight:400;letter-spacing:.013em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.dark .heading[data-v-1898f592]{color:#fff}.eyebrow[data-v-1898f592]{font-size:1.41176rem;line-height:1.16667;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;display:block;margin-bottom:.4em;color:var(--color-eyebrow)}@media only screen and (max-width:1068px){.eyebrow[data-v-1898f592]{font-size:1.23529rem;line-height:1.19048;font-weight:400;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.generic-modal[data-v-0e383dfa]{position:fixed;top:0;left:0;right:0;bottom:0;margin:0;z-index:11000;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;background:none;overflow:auto}.modal-fullscreen[data-v-0e383dfa]{align-items:stretch}.modal-fullscreen .container[data-v-0e383dfa]{margin:0;flex:1;width:100%;height:100%;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.modal-standard[data-v-0e383dfa]{padding:20px}.modal-standard.modal-with-close .container[data-v-0e383dfa]{padding-top:80px}.modal-standard .container[data-v-0e383dfa]{padding:50px;border-radius:4px}@media screen{[data-color-scheme=dark] .modal-standard .container[data-v-0e383dfa]{background:#1d1d1f}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .modal-standard .container[data-v-0e383dfa]{background:#1d1d1f}}@media only screen and (max-width:735px){.modal-standard[data-v-0e383dfa]{padding:0;align-items:stretch}.modal-standard .container[data-v-0e383dfa]{margin:20px 0 0;padding:50px 30px;flex:1;width:100%;border-bottom-left-radius:0;border-bottom-right-radius:0}}.backdrop[data-v-0e383dfa]{overflow:auto;background:rgba(0,0,0,.4);-webkit-overflow-scrolling:touch;width:100%;height:100%;position:fixed}.container[data-v-0e383dfa]{margin-left:auto;margin-right:auto;width:980px;background:var(--colors-generic-modal-background,var(--color-generic-modal-background));z-index:1;position:relative;overflow:auto;max-width:100%}@media only screen and (max-width:1068px){.container[data-v-0e383dfa]{width:692px}}@media only screen and (max-width:735px){.container[data-v-0e383dfa]{width:87.5%}}.close[data-v-0e383dfa]{position:absolute;z-index:9999;top:22px;left:22px;width:30px;height:30px;color:#666;cursor:pointer;background:none;border:0;display:flex;align-items:center}.close .close-icon[data-v-0e383dfa]{fill:currentColor;width:100%;height:100%}.theme-dark .container[data-v-0e383dfa]{background:#000}.theme-dark .container .close[data-v-0e383dfa]{color:#b0b0b0}.theme-code .container[data-v-0e383dfa]{background-color:var(--background,var(--color-code-background))}.metadata[data-v-2fa6f125]{display:flex}.item[data-v-2fa6f125]{font-size:.70588rem;line-height:1.33333;font-weight:600;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;border-right:1px solid #fff;padding:0 27.5px}@media only screen and (max-width:735px){.item[data-v-2fa6f125]{font-size:.64706rem;line-height:1.63636;font-weight:600;letter-spacing:-.008em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:0 8px}}.item[data-v-2fa6f125]:first-of-type{padding-left:0}.item[data-v-2fa6f125]:last-of-type{border:none}@media only screen and (max-width:735px){.item[data-v-2fa6f125]:last-of-type{padding-right:0}}.content[data-v-2fa6f125]{color:#fff}.icon[data-v-2fa6f125]{font-size:2.82353rem;line-height:1.08333;font-weight:400;letter-spacing:-.003em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){.icon[data-v-2fa6f125]{font-size:2.35294rem;line-height:1.1;font-weight:400;letter-spacing:0;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){.icon[data-v-2fa6f125]{font-size:1.88235rem;line-height:1.125;font-weight:400;letter-spacing:.013em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.small-icon[data-v-2fa6f125]{width:1em;height:1em;margin-left:.2rem}.small-icon.xcode-icon[data-v-2fa6f125]{width:.8em;height:.8em}.content-link[data-v-2fa6f125]{display:flex;align-items:center}a[data-v-2fa6f125]{color:var(--colors-link,var(--color-tutorials-overview-link))}.duration[data-v-2fa6f125]{display:flex;align-items:baseline;font-size:2.35294rem;line-height:1;font-weight:400;letter-spacing:0;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;line-height:1.8rem}@media only screen and (max-width:735px){.duration[data-v-2fa6f125]{font-size:1.64706rem;line-height:1;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;line-height:1.3rem}}.minutes[data-v-2fa6f125]{display:inline-block;font-size:1.64706rem;line-height:1;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;line-height:1.3rem}@media only screen and (max-width:735px){.minutes[data-v-2fa6f125]{font-size:1rem;line-height:1.23529;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;line-height:.8rem}}.item-large-icon[data-v-2fa6f125]{height:2.3rem;max-width:100%}@media only screen and (max-width:735px){.item-large-icon[data-v-2fa6f125]{height:1.5rem;max-width:100%}}.bottom[data-v-2fa6f125]{margin-top:13px}@media only screen and (max-width:735px){.bottom[data-v-2fa6f125]{margin-top:8px}}.hero[data-v-cb87b2d0]{color:var(--color-tutorial-hero-text);position:relative}.bg[data-v-cb87b2d0],.hero[data-v-cb87b2d0]{background-color:var(--color-tutorial-hero-background)}.bg[data-v-cb87b2d0]{background-position:top;background-repeat:no-repeat;background-size:cover;content:"";height:100%;left:0;opacity:.3;position:absolute;top:0;width:100%}.row[data-v-cb87b2d0]{margin-left:auto;margin-right:auto;width:980px;padding:80px 0}@media only screen and (max-width:1068px){.row[data-v-cb87b2d0]{width:692px}}@media only screen and (max-width:735px){.row[data-v-cb87b2d0]{width:87.5%}}.col[data-v-cb87b2d0]{z-index:1}[data-v-cb87b2d0] .eyebrow{font-size:1.41176rem;line-height:1.16667;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--color-hero-eyebrow)}@media only screen and (max-width:1068px){[data-v-cb87b2d0] .eyebrow{font-size:1.23529rem;line-height:1.19048;font-weight:400;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.headline[data-v-cb87b2d0]{font-size:2.82353rem;line-height:1.08333;font-weight:400;letter-spacing:-.003em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;margin-bottom:2rem}@media only screen and (max-width:1068px){.headline[data-v-cb87b2d0]{font-size:2.35294rem;line-height:1.1;font-weight:400;letter-spacing:0;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){.headline[data-v-cb87b2d0]{font-size:1.88235rem;line-height:1.125;font-weight:400;letter-spacing:.013em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.intro[data-v-cb87b2d0]{font-size:1.23529rem;line-height:1.38095;font-weight:400;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:735px){.intro[data-v-cb87b2d0]{font-size:1.11765rem;line-height:1.42105;font-weight:400;letter-spacing:.012em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.content+p[data-v-cb87b2d0]{margin-top:.8em}@media only screen and (max-width:735px){.content+p[data-v-cb87b2d0]{margin-top:8px}}.call-to-action[data-v-cb87b2d0]{display:flex;align-items:center}.call-to-action .cta-icon[data-v-cb87b2d0]{margin-left:.4rem;width:1em;height:1em}.metadata[data-v-cb87b2d0]{margin-top:2rem}.video-asset[data-v-cb87b2d0]{display:grid;height:100vh;margin:0;place-items:center center}.video-asset[data-v-cb87b2d0] video{max-width:1280px;min-width:320px;width:100%}@media only screen and (max-width:735px){.headline[data-v-cb87b2d0]{margin-bottom:19px}}.tutorial-hero[data-v-35a9482f]{margin-bottom:80px}@media only screen and (max-width:735px){.tutorial-hero[data-v-35a9482f]{margin-bottom:0}}.title[data-v-8ec95972]{font-size:.70588rem;line-height:1.33333;letter-spacing:-.01em;color:var(--colors-secondary-label,var(--color-secondary-label))}.title[data-v-4d37a428],.title[data-v-8ec95972]{font-weight:400;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.title[data-v-4d37a428]{font-size:1.11765rem;line-height:1.21053;letter-spacing:.012em;color:var(--colors-header-text,var(--color-header-text));margin:25px 0}.question-content[data-v-4d37a428] code{font-size:.76471rem;line-height:1.84615;font-weight:400;letter-spacing:-.013em;font-family:Menlo,monospace}.choices[data-v-4d37a428]{display:flex;flex-direction:column;padding:0;list-style:none;margin:25px 0}.choice[data-v-4d37a428]{font-size:.82353rem;line-height:1.42857;font-weight:400;letter-spacing:-.016em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;flex:1;border-radius:4px;margin:8px 0;padding:1.5rem 40px;cursor:pointer;background:var(--colors-text-background,var(--color-text-background));display:flex;flex-direction:column;justify-content:center;border-width:1px;border-style:solid;border-color:var(--colors-grid,var(--color-grid));position:relative}.choice[data-v-4d37a428] img{max-height:23.52941rem}.choice[data-v-4d37a428]:first-of-type{margin-top:0}.choice[data-v-4d37a428] code{font-size:.76471rem;line-height:1.84615;font-weight:400;letter-spacing:-.013em;font-family:Menlo,monospace}.controls[data-v-4d37a428]{text-align:center;margin-bottom:40px}.controls .button-cta[data-v-4d37a428]{margin:.5rem;margin-top:0;padding:.3rem 3rem;min-width:8rem}input[type=radio][data-v-4d37a428]{position:absolute;width:100%;left:0;height:100%;opacity:0;z-index:-1}.active[data-v-4d37a428]{border-color:var(--color-tutorial-quiz-border-active);box-shadow:0 0 0 4px var(--color-focus-color);outline:none}.active [data-v-4d37a428]{color:var(--colors-text,var(--color-text))}.correct[data-v-4d37a428]{background:var(--color-form-valid-background);border-color:var(--color-form-valid)}.correct .choice-icon[data-v-4d37a428]{fill:var(--color-form-valid)}.incorrect[data-v-4d37a428]{background:var(--color-form-error-background);border-color:var(--color-form-error)}.incorrect .choice-icon[data-v-4d37a428]{fill:var(--color-form-error)}.correct[data-v-4d37a428],.incorrect[data-v-4d37a428]{position:relative}.correct .choice-icon[data-v-4d37a428],.incorrect .choice-icon[data-v-4d37a428]{position:absolute;top:11px;left:10px;font-size:20px;width:1.05em}.disabled[data-v-4d37a428]{pointer-events:none}.answer[data-v-4d37a428]{margin:.5rem 1.5rem .5rem 0;font-size:.70588rem;line-height:1.33333;font-weight:400;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.answer[data-v-4d37a428]:last-of-type{margin-bottom:0}[data-v-4d37a428] .question>.code-listing{padding:unset}[data-v-4d37a428] pre{padding:0}[data-v-4d37a428] img{display:block;margin-left:auto;margin-right:auto;max-width:100%}.title[data-v-c1de71de]{font-size:1.88235rem;line-height:1.25;font-weight:400;letter-spacing:.004em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--colors-header-text,var(--color-header-text))}@media only screen and (max-width:1068px){.title[data-v-c1de71de]{font-size:1.64706rem;line-height:1.28571;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){.title[data-v-c1de71de]{font-size:1.41176rem;line-height:1.33333;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.title p[data-v-c1de71de]{color:var(--colors-text,var(--color-text))}.assessments[data-v-c1de71de]{box-sizing:content-box;padding:0 1rem;background:var(--color-tutorial-assessments-background);margin-left:auto;margin-right:auto;width:980px;margin-bottom:80px}@media only screen and (max-width:1068px){.assessments[data-v-c1de71de]{width:692px}}@media only screen and (max-width:735px){.assessments[data-v-c1de71de]{width:87.5%}}.banner[data-v-c1de71de]{padding:40px 0;border-bottom:1px solid;margin-bottom:40px;border-color:var(--colors-grid,var(--color-grid));text-align:center}.success[data-v-c1de71de]{text-align:center;padding-bottom:40px;font-size:1.88235rem;line-height:1.25;font-weight:400;letter-spacing:.004em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--colors-text,var(--color-text))}@media only screen and (max-width:1068px){.success[data-v-c1de71de]{font-size:1.64706rem;line-height:1.28571;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){.success[data-v-c1de71de]{font-size:1.41176rem;line-height:1.33333;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.assessments-wrapper[data-v-c1de71de]{padding-top:80px}.assessments-wrapper[data-v-3c94366b]{padding-bottom:40px;padding-top:0}@media only screen and (max-width:735px){.assessments-wrapper[data-v-3c94366b]{padding-top:80px}}.article[data-v-5f5888a5]{background:var(--colors-article-background,var(--color-article-background))}@media only screen and (max-width:735px){.article[data-v-5f5888a5]{background:var(--colors-text-background,var(--color-article-body-background))}}.intro-container[data-v-54daa228]{margin-bottom:80px}.intro[data-v-54daa228]{display:flex;align-items:center}@media only screen and (max-width:735px){.intro[data-v-54daa228]{padding-bottom:0;flex-direction:column}}.intro.ide .media[data-v-54daa228] img{background-color:var(--colors-text-background,var(--color-text-background))}.col.left[data-v-54daa228]{padding-right:40px}@media only screen and (max-width:1068px){.col.left[data-v-54daa228]{padding-right:28px}}@media only screen and (max-width:735px){.col.left[data-v-54daa228]{margin-left:auto;margin-right:auto;width:980px;padding-right:0}}@media only screen and (max-width:735px) and (max-width:1068px){.col.left[data-v-54daa228]{width:692px}}@media only screen and (max-width:735px) and (max-width:735px){.col.left[data-v-54daa228]{width:87.5%}}.col.right[data-v-54daa228]{padding-left:40px}@media only screen and (max-width:1068px){.col.right[data-v-54daa228]{padding-left:28px}}@media only screen and (max-width:735px){.col.right[data-v-54daa228]{padding-left:0}}.content[data-v-54daa228]{font-size:1rem;line-height:1.47059;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.media[data-v-54daa228] img{width:auto;max-height:560px;min-height:18.82353rem;-o-object-fit:scale-down;object-fit:scale-down}@media only screen and (max-width:735px){.media[data-v-54daa228]{margin:0;margin-top:3rem}.media[data-v-54daa228] img,.media[data-v-54daa228] video{max-height:80vh}}.media[data-v-54daa228] .asset{padding:0 20px}.headline[data-v-54daa228]{color:var(--colors-header-text,var(--color-header-text))}[data-v-54daa228] .eyebrow{font-size:1.23529rem;line-height:1.19048;font-weight:400;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:735px){[data-v-54daa228] .eyebrow{font-size:1.11765rem;line-height:1.21053;font-weight:400;letter-spacing:.012em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}[data-v-54daa228] .eyebrow a{color:inherit}[data-v-54daa228] .heading{font-size:1.88235rem;line-height:1.25;font-weight:400;letter-spacing:.004em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){[data-v-54daa228] .heading{font-size:1.64706rem;line-height:1.28571;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){[data-v-54daa228] .heading{font-size:1.41176rem;line-height:1.33333;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.expanded-intro[data-v-54daa228]{margin-left:auto;margin-right:auto;width:980px;margin-top:40px}@media only screen and (max-width:1068px){.expanded-intro[data-v-54daa228]{width:692px}}@media only screen and (max-width:735px){.expanded-intro[data-v-54daa228]{width:87.5%}}[data-v-54daa228] .cols-2{gap:20px 16.66667%}[data-v-54daa228] .cols-3 .column{gap:20px 12.5%}.code-preview[data-v-1890a2ba]{position:sticky;overflow-y:auto;-webkit-overflow-scrolling:touch;background-color:var(--background,var(--color-step-background));height:calc(100vh - 3.05882rem)}.code-preview.ide[data-v-1890a2ba]{height:100vh}.code-preview[data-v-1890a2ba] .code-listing{color:var(--text,var(--color-code-plain))}.code-preview[data-v-1890a2ba] pre{font-size:.70588rem;line-height:1.83333;font-weight:400;letter-spacing:-.01em;font-family:Menlo,monospace}.header[data-v-1890a2ba]{font-size:.70588rem;line-height:1.33333;font-weight:400;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;position:relative;display:flex;justify-content:space-between;align-items:center;width:-webkit-fill-available;width:-moz-available;width:stretch;cursor:pointer;font-weight:600;padding:8px 12px;border-radius:4px 4px 0 0;z-index:1;background:var(--color-runtime-preview-background);color:var(--colors-runtime-preview-text,var(--color-runtime-preview-text))}.header[data-v-1890a2ba]:focus{outline-style:none}#app.fromkeyboard .header[data-v-1890a2ba]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.runtime-preview[data-v-1890a2ba]{--color-runtime-preview-shadow:rgba(0,0,0,0.4);position:absolute;top:0;right:0;background:var(--color-runtime-preview-background);border-radius:4px;margin:1rem;margin-left:0;transition:width .2s ease-in,height .2s ease-in}@media screen{[data-color-scheme=dark] .runtime-preview[data-v-1890a2ba]{--color-runtime-preview-shadow:hsla(0,0%,100%,0.4)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .runtime-preview[data-v-1890a2ba]{--color-runtime-preview-shadow:hsla(0,0%,100%,0.4)}}@supports not ((width:-webkit-fill-available) or (width:-moz-available) or (width:stretch)){.runtime-preview[data-v-1890a2ba]{display:flex;flex-direction:column}}.runtime-preview[data-v-1890a2ba]:before{box-shadow:0 0 3px 0 var(--color-runtime-preview-shadow);border-radius:4px;content:"";position:absolute;top:0;right:0;left:0;bottom:0}@media screen{[data-color-scheme=dark] .runtime-preview[data-v-1890a2ba]:before{mix-blend-mode:difference}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .runtime-preview[data-v-1890a2ba]:before{mix-blend-mode:difference}}.runtime-preview-ide[data-v-1890a2ba]{top:0}.runtime-preview-ide .runtime-preview-asset[data-v-1890a2ba] img{background-color:var(--color-runtime-preview-background)}.runtime-preview.collapsed[data-v-1890a2ba]{box-shadow:0 0 3px 0 var(--color-runtime-preview-shadow);width:102px;height:28px}.runtime-preview.collapsed .header[data-v-1890a2ba]{border-radius:4px}.runtime-preview.disabled[data-v-1890a2ba]{box-shadow:0 0 3px 0 transparent}.runtime-preview.disabled .header[data-v-1890a2ba]{color:var(--color-runtime-preview-disabled-text);cursor:auto}.runtime-preview-asset[data-v-1890a2ba]{border-radius:0 0 4px 4px}.runtime-preview-asset[data-v-1890a2ba] img{border-bottom-left-radius:4px;border-bottom-right-radius:4px}.preview-icon[data-v-1890a2ba]{height:.8em;width:.8em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.preview-show[data-v-1890a2ba]{transform:scale(-1)}[data-v-5ad4e037] pre{padding:10px 0}.toggle-preview[data-v-d0709828]{color:var(--color-runtime-preview-disabled-text);display:flex;align-items:center}a[data-v-d0709828]{color:var(--url,var(--color-link))}.toggle-text[data-v-d0709828]{display:flex;align-items:center}svg.toggle-icon[data-v-d0709828]{width:1em;height:1em;margin-left:.5em}.mobile-code-preview[data-v-b130569c]{background-color:var(--background,var(--color-step-background));padding:14px 0}@media only screen and (max-width:735px){.mobile-code-preview[data-v-b130569c]{display:flex;flex-direction:column}}.runtime-preview-modal-content[data-v-b130569c]{padding:45px 60px 0 60px;min-width:200px}.runtime-preview-modal-content[data-v-b130569c] img:not(.file-icon){border-radius:4px;box-shadow:0 0 3px rgba(0,0,0,.4);min-height:320px;max-height:80vh;width:auto;display:block;margin-bottom:1rem}.runtime-preview-modal-content .runtime-preview-label[data-v-b130569c]{font-size:.70588rem;line-height:1.33333;font-weight:400;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--color-runtime-preview-text);display:block;text-align:center;padding:.5em}[data-v-b130569c] .code-listing{color:var(--text,var(--color-code-plain))}[data-v-b130569c] .full-code-listing{padding-top:60px;min-height:calc(100vh - 60px)}[data-v-b130569c] pre{font-size:.70588rem;line-height:1.83333;font-weight:400;letter-spacing:-.01em;font-family:Menlo,monospace}.preview-toggle-container[data-v-b130569c]{align-self:flex-end;margin-right:20px}.step-container[data-v-4abdd121]{margin:0}.step-container[data-v-4abdd121]:not(:last-child){margin-bottom:100px}@media only screen and (max-width:735px){.step-container[data-v-4abdd121]:not(:last-child){margin-bottom:80px}}.step[data-v-4abdd121]{position:relative;border-radius:4px;padding:1rem 2rem;background-color:var(--color-step-background);overflow:hidden;-webkit-mask-image:-webkit-radial-gradient(#fff,#000)}.step[data-v-4abdd121]:before{content:"";position:absolute;top:0;left:0;border:1px solid var(--color-step-focused);background-color:var(--color-step-focused);height:calc(100% - 2px);width:4px;opacity:0;transition:opacity .15s ease-in}.step.focused[data-v-4abdd121],.step[data-v-4abdd121]:focus{outline:none}.step.focused[data-v-4abdd121]:before,.step[data-v-4abdd121]:focus:before{opacity:1}@media only screen and (max-width:735px){.step[data-v-4abdd121]{padding-left:2rem}.step[data-v-4abdd121]:before{opacity:1}}.step-label[data-v-4abdd121]{font-size:.70588rem;line-height:1.33333;font-weight:600;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--colors-text,var(--color-step-text));margin-bottom:.4em}.caption[data-v-4abdd121]{border-top:1px solid;border-color:var(--color-step-caption);padding:1rem 0 0 0;margin-top:1rem}.media-container[data-v-4abdd121]{display:none}@media only screen and (max-width:735px){.step[data-v-4abdd121]{margin:0 .58824rem 1.17647rem .58824rem}.step.focused[data-v-4abdd121],.step[data-v-4abdd121]:focus{outline:none}.media-container[data-v-4abdd121]{display:block;position:relative}.media-container[data-v-4abdd121] img,.media-container[data-v-4abdd121] video{max-height:80vh}[data-v-4abdd121] .asset{padding:0 20px}}.steps[data-v-25d30c2c]{position:relative;font-size:.82353rem;line-height:1.42857;font-weight:400;letter-spacing:-.016em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;display:flex;color:var(--colors-text,var(--color-text))}@media only screen and (max-width:735px){.steps[data-v-25d30c2c]{padding-top:80px}.steps[data-v-25d30c2c]:before{position:absolute;top:0;border-top:1px solid var(--color-fill-gray-tertiary);content:"";width:calc(100% - 2.35294rem);margin:0 1.17647rem}}.content-container[data-v-25d30c2c]{flex:none;margin-right:4.16667%;width:37.5%;margin-top:140px;margin-bottom:94vh}@media only screen and (max-width:735px){.content-container[data-v-25d30c2c]{margin-top:0;margin-bottom:0;height:100%;margin-left:0;margin-right:0;position:relative;width:100%}}.asset-container[data-v-25d30c2c]{flex:none;height:calc(100vh - 3.05882rem);background-color:var(--background,var(--color-step-background));max-width:921px;width:calc(50vw + 8.33333%);position:sticky;top:3.05882rem;transition:margin .1s ease-in-out}@media only screen and (max-width:767px){.asset-container[data-v-25d30c2c]{top:2.82353rem;height:calc(100vh - 2.82353rem)}}.asset-container[data-v-25d30c2c]:not(.for-step-code){overflow-y:auto;-webkit-overflow-scrolling:touch}.asset-container.ide[data-v-25d30c2c]{height:100vh;top:0}@media only screen and (min-width:736px){.asset-container[data-v-25d30c2c]{display:grid}.asset-container>[data-v-25d30c2c]{grid-row:1;grid-column:1;height:calc(100vh - 3.05882rem)}.asset-container.ide>[data-v-25d30c2c]{height:100vh}}.asset-container .step-asset[data-v-25d30c2c]{box-sizing:border-box;padding:0;padding-left:40px;min-height:320px;height:100%}.asset-container .step-asset[data-v-25d30c2c],.asset-container .step-asset[data-v-25d30c2c] picture{height:100%;display:flex;align-items:center}.asset-container .step-asset[data-v-25d30c2c] .video-replay-container{height:100%;display:flex;flex-direction:column;justify-content:center}.asset-container .step-asset[data-v-25d30c2c] img,.asset-container .step-asset[data-v-25d30c2c] video{width:auto;max-height:calc(100vh - 3.05882rem - 80px);max-width:531.6634px;margin:0}@media only screen and (max-width:1068px){.asset-container .step-asset[data-v-25d30c2c] img,.asset-container .step-asset[data-v-25d30c2c] video{max-width:363.66436px}}.asset-container .step-asset[data-v-25d30c2c] .video-replay-container,.asset-container .step-asset[data-v-25d30c2c] img{min-height:320px}.asset-container .step-asset[data-v-25d30c2c] .video-replay-container video{min-height:280px}@media only screen and (max-width:735px){.asset-container[data-v-25d30c2c]{display:none}}.asset-wrapper[data-v-25d30c2c]{width:63.2%;align-self:center;transition:transform .25s ease-out;will-change:transform}.asset-wrapper.ide .step-asset[data-v-25d30c2c] img{background-color:var(--background,var(--color-step-background))}[data-v-25d30c2c] .runtime-preview-asset{display:grid}[data-v-25d30c2c] .runtime-preview-asset>*{grid-row:1;grid-column:1}.interstitial[data-v-25d30c2c]{padding:0 2rem}.interstitial[data-v-25d30c2c]:not(:first-child){margin-top:5.88235rem}.interstitial[data-v-25d30c2c]:not(:last-child){margin-bottom:30px}@media only screen and (max-width:735px){.interstitial[data-v-25d30c2c]{margin-left:auto;margin-right:auto;width:980px;padding:0}}@media only screen and (max-width:735px) and (max-width:1068px){.interstitial[data-v-25d30c2c]{width:692px}}@media only screen and (max-width:735px) and (max-width:735px){.interstitial[data-v-25d30c2c]{width:87.5%}}@media only screen and (max-width:735px){.interstitial[data-v-25d30c2c]:not(:first-child){margin-top:0}}.fade-enter-active[data-v-25d30c2c],.fade-leave-active[data-v-25d30c2c]{transition:opacity .3s ease-in-out}.fade-enter[data-v-25d30c2c],.fade-leave-to[data-v-25d30c2c]{opacity:0}.section[data-v-6b3a0b3a]{padding-top:80px}.sections[data-v-79a75e9e]{margin-left:auto;margin-right:auto;width:980px}@media only screen and (max-width:1068px){.sections[data-v-79a75e9e]{width:692px}}@media only screen and (max-width:735px){.sections[data-v-79a75e9e]{width:87.5%;margin:0;width:100%}}.tutorial[data-v-6e17d3d0]{background-color:var(--colors-text-background,var(--color-tutorial-background))} \ No newline at end of file diff --git a/docs/swift-docc-render/css/tutorials-overview.8754eb09.css b/docs/swift-docc-render/css/tutorials-overview.8754eb09.css new file mode 100644 index 00000000..5691d1b0 --- /dev/null +++ b/docs/swift-docc-render/css/tutorials-overview.8754eb09.css @@ -0,0 +1,9 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */.replay-button[data-v-7335dbb2]{display:flex;align-items:center;justify-content:center;cursor:pointer;visibility:hidden;margin-top:.5rem;-webkit-tap-highlight-color:transparent}.replay-button.visible[data-v-7335dbb2]{visibility:visible}.replay-button svg.replay-icon[data-v-7335dbb2]{height:12px;width:12px;margin-left:.3em}[data-v-1b5cc854] img,[data-v-1b5cc854] video{display:block;margin-left:auto;margin-right:auto;-o-object-fit:contain;object-fit:contain;max-width:100%}.hero[data-v-fc7f508c]{margin-left:auto;margin-right:auto;width:980px;padding-bottom:4.70588rem;padding-top:4.70588rem}@media only screen and (max-width:1068px){.hero[data-v-fc7f508c]{width:692px}}@media only screen and (max-width:735px){.hero[data-v-fc7f508c]{width:87.5%}}.copy-container[data-v-fc7f508c]{margin:0 auto;text-align:center;width:720px}.title[data-v-fc7f508c]{font-size:2.82353rem;line-height:1.08333;font-weight:400;letter-spacing:-.003em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--color-tutorials-overview-content)}@media only screen and (max-width:1068px){.title[data-v-fc7f508c]{font-size:2.35294rem;line-height:1.1;font-weight:400;letter-spacing:0;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){.title[data-v-fc7f508c]{font-size:1.88235rem;line-height:1.125;font-weight:400;letter-spacing:.013em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.content[data-v-fc7f508c]{font-size:1.23529rem;line-height:1.38095;font-weight:400;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--color-tutorials-overview-content)}@media only screen and (max-width:735px){.content[data-v-fc7f508c]{font-size:1.11765rem;line-height:1.42105;font-weight:400;letter-spacing:.012em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.meta[data-v-fc7f508c]{color:var(--color-tutorials-overview-content-alt);align-items:center;display:flex;justify-content:center}.meta-content[data-v-fc7f508c]{font-size:.82353rem;line-height:1.42857;font-weight:400;letter-spacing:-.016em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.meta .timer-icon[data-v-fc7f508c]{margin-right:.35294rem;height:.94118rem;width:.94118rem;fill:var(--color-tutorials-overview-icon)}@media only screen and (max-width:735px){.meta .timer-icon[data-v-fc7f508c]{margin-right:.29412rem;height:.82353rem;width:.82353rem}}.meta .time[data-v-fc7f508c]{font-size:1.11765rem;line-height:1.21053;font-weight:600;letter-spacing:.012em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:735px){.meta .time[data-v-fc7f508c]{font-size:1rem;line-height:1.11765;font-weight:600;letter-spacing:.019em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.title+.content[data-v-fc7f508c]{margin-top:1.47059rem}.content+.meta[data-v-fc7f508c]{margin-top:1.17647rem}.button-cta[data-v-fc7f508c]{margin-top:1.76471rem}*+.asset[data-v-fc7f508c]{margin-top:4.11765rem}@media only screen and (max-width:1068px){.copy-container[data-v-fc7f508c]{width:636px}}@media only screen and (max-width:735px){.hero[data-v-fc7f508c]{padding-bottom:1.76471rem;padding-top:2.35294rem}.copy-container[data-v-fc7f508c]{width:100%}.title+.content[data-v-fc7f508c]{margin-top:.88235rem}.button-cta[data-v-fc7f508c]{margin-top:1.41176rem}*+.asset[data-v-fc7f508c]{margin-top:2.23529rem}}.image[data-v-14577284]{margin-bottom:10px}.name[data-v-14577284]{font-size:1.88235rem;line-height:1.125;font-weight:400;letter-spacing:.013em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:#f0f0f0;word-break:break-word}@media only screen and (max-width:1068px){.name[data-v-14577284]{font-size:1.64706rem;line-height:1.14286;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){.name[data-v-14577284]{font-size:1.41176rem;line-height:1.16667;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.content[data-v-14577284]{font-size:1rem;line-height:1.23529;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--color-tutorials-overview-content-alt);margin-top:10px}.volume-name[data-v-14577284]{padding:50px 60px;text-align:center;background:#161616;margin:2px 0}@media only screen and (max-width:735px){.volume-name[data-v-14577284]{padding:40px 20px}}.document-icon[data-v-56114692]{margin-left:-3px}.tile[data-v-86db603a]{background:#161616;padding:40px 30px;color:var(--color-tutorials-overview-content-alt)}.content[data-v-86db603a] a,a[data-v-86db603a]{color:var(--colors-link,var(--color-tutorials-overview-link))}.icon[data-v-86db603a]{display:block;height:1.47059rem;line-height:1.47059rem;margin-bottom:.58824rem;width:1.47059rem}.icon[data-v-86db603a] svg.svg-icon{width:100%;max-height:100%;fill:var(--color-tutorials-overview-icon)}.icon[data-v-86db603a] svg.svg-icon .svg-icon-stroke{stroke:var(--color-tutorials-overview-content-alt)}.title[data-v-86db603a]{font-size:1.23529rem;line-height:1.19048;font-weight:600;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;margin-bottom:.8em}.content[data-v-86db603a],.link[data-v-86db603a]{font-size:.82353rem;line-height:1.42857;font-weight:400;letter-spacing:-.016em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.content[data-v-86db603a]{color:var(--color-tutorials-overview-content-alt)}.link[data-v-86db603a]{display:block;margin-top:1.17647rem}.link .link-icon[data-v-86db603a]{margin-left:.2em;width:.6em;height:.6em}[data-v-86db603a] .content ul{list-style-type:none;margin-left:0;font-size:.82353rem;line-height:1.28571;font-weight:400;letter-spacing:-.016em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}[data-v-86db603a] .content ul li:before{content:"\200B";position:absolute}[data-v-86db603a] .content li+li{margin-top:8px}@media only screen and (max-width:735px){.tile[data-v-86db603a]{padding:1.76471rem 1.17647rem}}.tile-group[data-v-015f9f13]{display:grid;grid-column-gap:2px;grid-row-gap:2px}.tile-group.count-1[data-v-015f9f13]{grid-template-columns:1fr;text-align:center}.tile-group.count-1[data-v-015f9f13] .icon{margin-left:auto;margin-right:auto}.tile-group.count-2[data-v-015f9f13]{grid-template-columns:repeat(2,1fr)}.tile-group.count-3[data-v-015f9f13]{grid-template-columns:repeat(3,1fr)}.tile-group.count-4[data-v-015f9f13]{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(2,auto)}.tile-group.count-5[data-v-015f9f13]{grid-template-columns:repeat(6,1fr);grid-template-rows:repeat(2,auto)}.tile-group.count-5 .tile[data-v-015f9f13]{grid-column-end:span 2}.tile-group.count-5 .tile[data-v-015f9f13]:nth-of-type(-n+2){grid-column-end:span 3}.tile-group.count-6[data-v-015f9f13]{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(3,auto)}@media only screen and (min-width:768px) and (max-width:1068px){.tile-group.tile-group[data-v-015f9f13]{grid-template-columns:1fr;grid-template-rows:auto}}@media only screen and (max-width:735px){.tile-group.count-1[data-v-015f9f13],.tile-group.count-2[data-v-015f9f13],.tile-group.count-3[data-v-015f9f13],.tile-group.count-4[data-v-015f9f13],.tile-group.count-5[data-v-015f9f13],.tile-group.count-6[data-v-015f9f13]{grid-template-columns:1fr;grid-template-rows:auto}}.title[data-v-49ba6f62]{font-size:1.88235rem;line-height:1.125;font-weight:400;letter-spacing:.013em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:#f0f0f0}@media only screen and (max-width:1068px){.title[data-v-49ba6f62]{font-size:1.64706rem;line-height:1.14286;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){.title[data-v-49ba6f62]{font-size:1.41176rem;line-height:1.16667;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.content[data-v-49ba6f62]{font-size:1rem;line-height:1.23529;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:#b0b0b0;margin-top:10px}.tutorials-navigation-link[data-v-6bb99205]{color:var(--color-tutorials-overview-navigation-link);transition:color .3s linear}.tutorials-navigation-link[data-v-6bb99205]:hover{text-decoration:none;transition:none;color:var(--color-tutorials-overview-navigation-link-hover)}.tutorials-navigation-link.active[data-v-6bb99205]{color:var(--color-tutorials-overview-navigation-link-active)}.tutorials-navigation-list[data-v-6f2800d1]{list-style-type:none;margin:0}.tutorials-navigation-list li+li[data-v-6f2800d1]:not(.volume--named){margin-top:24px}.tutorials-navigation-list .volume--named+.volume--named[data-v-6f2800d1]{margin-top:12px}.expand-enter-active,.expand-leave-active{transition:height .3s ease-in-out;overflow:hidden}.expand-enter,.expand-leave-to{height:0}.toggle[data-v-6513d652]{color:#f0f0f0;line-height:21px;display:flex;align-items:center;width:100%;font-weight:600;padding:6px 6px 6px 0;border-bottom:1px solid #2a2a2a;text-decoration:none;box-sizing:border-box}@media only screen and (max-width:767px){.toggle[data-v-6513d652]{padding-right:6px;border-bottom-color:hsla(0,0%,100%,.1)}}.toggle .text[data-v-6513d652]{word-break:break-word}.toggle[data-v-6513d652]:hover{text-decoration:none}.toggle .toggle-icon[data-v-6513d652]{display:inline-block;transition:transform .2s ease-in;height:.4em;width:.4em;margin-left:auto;margin-right:.2em}.collapsed .toggle .toggle-icon[data-v-6513d652]{transform:rotate(45deg)}.collapsed .toggle[data-v-6513d652],.collapsed .toggle[data-v-6513d652]:hover{color:#b0b0b0}.tutorials-navigation-menu-content[data-v-6513d652]{opacity:1;transition:height .2s ease-in,opacity .2s ease-in}.collapsed .tutorials-navigation-menu-content[data-v-6513d652]{height:0;opacity:0}.tutorials-navigation-menu-content .tutorials-navigation-list[data-v-6513d652]{padding:24px 0 12px 0}.tutorials-navigation[data-v-0cbd8adb]{font-size:1rem;line-height:1.23529;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.topic-list[data-v-9a8371c6]{list-style-type:none;margin:50px 0 0 0;position:relative}.topic-list li[data-v-9a8371c6]:before{content:"\200B";position:absolute}.topic-list[data-v-9a8371c6]:before{content:"";border-left:1px solid var(--color-fill-quaternary);display:block;height:calc(100% - .88235rem);left:.88235rem;position:absolute;top:50%;transform:translateY(-50%);width:0}.topic[data-v-9a8371c6]{font-size:1rem;line-height:1.47059;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;display:flex;align-items:flex-start}@media only screen and (max-width:735px){.topic[data-v-9a8371c6]{font-size:.82353rem;line-height:1.28571;font-weight:400;letter-spacing:-.016em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.topic+.topic[data-v-9a8371c6]{margin-top:.58824rem}.topic .topic-icon[data-v-9a8371c6]{background-color:var(--color-fill-quaternary);border-radius:50%;flex-shrink:0;height:1.76471rem;width:1.76471rem;margin-right:1.17647rem;position:relative;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:.47059rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center}.topic .topic-icon svg[data-v-9a8371c6]{fill:var(--color-tutorials-overview-icon);max-width:100%;max-height:100%;width:100%}.container[data-v-9a8371c6]{align-items:baseline;display:flex;justify-content:space-between;width:100%;padding-top:.11765rem}.container[data-v-9a8371c6]:hover{text-decoration:none}.container:hover .link[data-v-9a8371c6]{text-decoration:underline}.timer-icon[data-v-9a8371c6]{margin-right:.29412rem;height:.70588rem;width:.70588rem;fill:var(--color-tutorials-overview-icon)}.time[data-v-9a8371c6]{font-size:.82353rem;line-height:1.28571;font-weight:400;letter-spacing:-.016em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--color-tutorials-overview-content-alt);align-items:center;display:inline-flex}.link[data-v-9a8371c6]{padding-right:.58824rem;color:var(--colors-link,var(--color-tutorials-overview-link))}@media only screen and (min-width:768px) and (max-width:1068px){.topic-list[data-v-9a8371c6]{margin-top:2.35294rem}}@media only screen and (max-width:735px){.topic-list[data-v-9a8371c6]{margin-top:1.76471rem}.topic[data-v-9a8371c6]{height:auto;align-items:flex-start}.topic+.topic[data-v-9a8371c6]{margin-top:1.17647rem}.topic .topic-icon[data-v-9a8371c6]{top:.29412rem;margin-right:.76471rem}.container[data-v-9a8371c6]{flex-wrap:wrap;padding-top:0}.link[data-v-9a8371c6],.time[data-v-9a8371c6]{flex-basis:100%}.time[data-v-9a8371c6]{margin-top:.29412rem}}.chapter[data-v-1d13969f]:focus{outline:none!important}.info[data-v-1d13969f]{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.name[data-v-1d13969f]{font-size:1.23529rem;line-height:1.19048;font-weight:600;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:#f0f0f0}.name-text[data-v-1d13969f]{word-break:break-word}.eyebrow[data-v-1d13969f]{font-size:1rem;line-height:1.23529;font-weight:400;letter-spacing:-.022em;color:var(--color-tutorials-overview-eyebrow);display:block;font-weight:600;margin-bottom:5px}.content[data-v-1d13969f],.eyebrow[data-v-1d13969f]{font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.content[data-v-1d13969f]{font-size:.82353rem;line-height:1.42857;font-weight:400;letter-spacing:-.016em;color:var(--color-tutorials-overview-content-alt)}.asset[data-v-1d13969f]{flex:0 0 190px}.intro[data-v-1d13969f]{flex:0 1 360px}@media only screen and (min-width:768px) and (max-width:1068px){.asset[data-v-1d13969f]{flex:0 0 130px}.intro[data-v-1d13969f]{flex:0 1 260px}}@media only screen and (max-width:767px){.intro[data-v-1d13969f]{flex:0 1 340px}}@media only screen and (max-width:735px){.info[data-v-1d13969f]{display:block;text-align:center}.asset[data-v-1d13969f]{margin:0 45px}.eyebrow[data-v-1d13969f]{margin-bottom:7px}.intro[data-v-1d13969f]{margin-top:40px}}.tile[data-v-2129f58c]{background:#161616;margin:2px 0;padding:50px 60px}.asset[data-v-2129f58c]{margin-bottom:10px}@media only screen and (min-width:768px) and (max-width:1068px){.tile[data-v-2129f58c]{padding:40px 30px}}@media only screen and (max-width:735px){.volume[data-v-2129f58c]{border-radius:0}.tile[data-v-2129f58c]{padding:40px 20px}}.learning-path[data-v-48bfa85c]{background:#000;padding:4.70588rem 0}.main-container[data-v-48bfa85c]{margin-left:auto;margin-right:auto;width:980px;align-items:stretch;display:flex;justify-content:space-between}@media only screen and (max-width:1068px){.main-container[data-v-48bfa85c]{width:692px}}@media only screen and (max-width:735px){.main-container[data-v-48bfa85c]{width:87.5%}}.ide .main-container[data-v-48bfa85c]{justify-content:center}.secondary-content-container[data-v-48bfa85c]{flex:0 0 200px;width:200px}.tutorials-navigation[data-v-48bfa85c]{position:sticky;top:7.76471rem}.primary-content-container[data-v-48bfa85c]{flex:0 1 720px;max-width:100%}.content-sections-container .content-section[data-v-48bfa85c]{border-radius:12px;overflow:hidden}.content-sections-container .content-section+.content-section[data-v-48bfa85c]{margin-top:1.17647rem}@media only screen and (min-width:768px) and (max-width:1068px){.learning-path[data-v-48bfa85c]{padding:2.35294rem 0}.primary-content-container[data-v-48bfa85c]{flex-basis:auto;margin-left:1.29412rem}.secondary-content-container[data-v-48bfa85c]{flex:0 0 180px;width:180px}}@media only screen and (max-width:767px){.secondary-content-container[data-v-48bfa85c]{display:none}}@media only screen and (max-width:735px){.content-sections-container .content-section[data-v-48bfa85c]{border-radius:0}.content-sections-container .content-section.volume[data-v-48bfa85c]{margin-top:1.17647rem}.learning-path[data-v-48bfa85c]{padding:0}.main-container[data-v-48bfa85c]{width:100%}}.nav-title-content[data-v-60ea3af8]{max-width:100%}.title[data-v-60ea3af8]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:inline-block;vertical-align:top;max-width:296px}@media only screen and (max-width:1023px){.title[data-v-60ea3af8]{max-width:205px}}@media only screen and (max-width:767px){.title[data-v-60ea3af8]{flex-basis:fill;display:initial;vertical-align:initial;max-width:none}}.subhead[data-v-60ea3af8]{color:var(--color-nav-root-subhead)}.theme-dark .subhead[data-v-60ea3af8]{color:var(--color-nav-dark-root-subhead)}.tutorials-navigation[data-v-07700f98]{display:none}@media only screen and (max-width:767px){.tutorials-navigation[data-v-07700f98]{display:block}}.nav[data-v-07700f98] .nav-menu .nav-menu-items{padding:12px 0 44px 0}@media only screen and (min-width:768px){.nav[data-v-07700f98] .nav-menu .nav-menu-items{display:none}}@media only screen and (min-width:736px) and (max-width:1068px){.nav[data-v-07700f98] .nav-menu .nav-menu-items{padding-top:25px}}@media only screen and (min-width:320px) and (max-width:735px){.nav[data-v-07700f98] .nav-menu .nav-menu-items{padding-top:18px;padding-bottom:40px}}.tutorials-overview[data-v-0c0b1eea]{height:100%}.tutorials-overview .radial-gradient[data-v-0c0b1eea]{margin-top:-3.05882rem;padding-top:3.05882rem;background:var(--color-tutorials-overview-background)}@media only screen and (max-width:735px){.tutorials-overview .radial-gradient[data-v-0c0b1eea]{margin-top:-2.82353rem;padding-top:2.82353rem}}@-moz-document url-prefix(){.tutorials-overview .radial-gradient{background:#111!important}} \ No newline at end of file diff --git a/docs/swift-docc-render/favicon.ico b/docs/swift-docc-render/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..5231da6dc99b41b8c9b720113cc4991529eb215e GIT binary patch literal 15406 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 literal 0 HcmV?d00001 diff --git a/docs/swift-docc-render/favicon.svg b/docs/swift-docc-render/favicon.svg new file mode 100644 index 00000000..c54c53fb --- /dev/null +++ b/docs/swift-docc-render/favicon.svg @@ -0,0 +1,11 @@ + + + \ No newline at end of file diff --git a/docs/swift-docc-render/img/added-icon.d6f7e47d.svg b/docs/swift-docc-render/img/added-icon.d6f7e47d.svg new file mode 100644 index 00000000..6bb6d89a --- /dev/null +++ b/docs/swift-docc-render/img/added-icon.d6f7e47d.svg @@ -0,0 +1,11 @@ + + + \ No newline at end of file diff --git a/docs/swift-docc-render/img/deprecated-icon.015b4f17.svg b/docs/swift-docc-render/img/deprecated-icon.015b4f17.svg new file mode 100644 index 00000000..a0f80086 --- /dev/null +++ b/docs/swift-docc-render/img/deprecated-icon.015b4f17.svg @@ -0,0 +1,11 @@ + + + \ No newline at end of file diff --git a/docs/swift-docc-render/img/modified-icon.f496e73d.svg b/docs/swift-docc-render/img/modified-icon.f496e73d.svg new file mode 100644 index 00000000..3e0bd6f0 --- /dev/null +++ b/docs/swift-docc-render/img/modified-icon.f496e73d.svg @@ -0,0 +1,11 @@ + + + \ No newline at end of file diff --git a/docs/swift-docc-render/index-template.html b/docs/swift-docc-render/index-template.html new file mode 100644 index 00000000..3c8e093f --- /dev/null +++ b/docs/swift-docc-render/index-template.html @@ -0,0 +1,11 @@ + + +Documentation
\ No newline at end of file diff --git a/docs/swift-docc-render/index.html b/docs/swift-docc-render/index.html new file mode 100644 index 00000000..19518b9e --- /dev/null +++ b/docs/swift-docc-render/index.html @@ -0,0 +1,11 @@ + + +Documentation
\ No newline at end of file diff --git a/docs/swift-docc-render/js/chunk-2d0d3105.cd72cc8e.js b/docs/swift-docc-render/js/chunk-2d0d3105.cd72cc8e.js new file mode 100644 index 00000000..74345f0c --- /dev/null +++ b/docs/swift-docc-render/js/chunk-2d0d3105.cd72cc8e.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0d3105"],{"5abe":function(t,e){(function(){"use strict";if("object"===typeof window)if("IntersectionObserver"in window&&"IntersectionObserverEntry"in window&&"intersectionRatio"in window.IntersectionObserverEntry.prototype)"isIntersecting"in window.IntersectionObserverEntry.prototype||Object.defineProperty(window.IntersectionObserverEntry.prototype,"isIntersecting",{get:function(){return this.intersectionRatio>0}});else{var t=function(t){var e=t,n=i(e);while(n)e=n.ownerDocument,n=i(e);return e}(window.document),e=[],n=null,o=null;s.prototype.THROTTLE_TIMEOUT=100,s.prototype.POLL_INTERVAL=null,s.prototype.USE_MUTATION_OBSERVER=!0,s._setupCrossOriginUpdater=function(){return n||(n=function(t,n){o=t&&n?g(t,n):p(),e.forEach((function(t){t._checkForIntersections()}))}),n},s._resetCrossOriginUpdater=function(){n=null,o=null},s.prototype.observe=function(t){var e=this._observationTargets.some((function(e){return e.element==t}));if(!e){if(!t||1!=t.nodeType)throw new Error("target must be an Element");this._registerInstance(),this._observationTargets.push({element:t,entry:null}),this._monitorIntersections(t.ownerDocument),this._checkForIntersections()}},s.prototype.unobserve=function(t){this._observationTargets=this._observationTargets.filter((function(e){return e.element!=t})),this._unmonitorIntersections(t.ownerDocument),0==this._observationTargets.length&&this._unregisterInstance()},s.prototype.disconnect=function(){this._observationTargets=[],this._unmonitorAllIntersections(),this._unregisterInstance()},s.prototype.takeRecords=function(){var t=this._queuedEntries.slice();return this._queuedEntries=[],t},s.prototype._initThresholds=function(t){var e=t||[0];return Array.isArray(e)||(e=[e]),e.sort().filter((function(t,e,n){if("number"!=typeof t||isNaN(t)||t<0||t>1)throw new Error("threshold must be a number between 0 and 1 inclusively");return t!==n[e-1]}))},s.prototype._parseRootMargin=function(t){var e=t||"0px",n=e.split(/\s+/).map((function(t){var e=/^(-?\d*\.?\d+)(px|%)$/.exec(t);if(!e)throw new Error("rootMargin must be specified in pixels or percent");return{value:parseFloat(e[1]),unit:e[2]}}));return n[1]=n[1]||n[0],n[2]=n[2]||n[0],n[3]=n[3]||n[1],n},s.prototype._monitorIntersections=function(e){var n=e.defaultView;if(n&&-1==this._monitoringDocuments.indexOf(e)){var o=this._checkForIntersections,r=null,s=null;this.POLL_INTERVAL?r=n.setInterval(o,this.POLL_INTERVAL):(c(n,"resize",o,!0),c(e,"scroll",o,!0),this.USE_MUTATION_OBSERVER&&"MutationObserver"in n&&(s=new n.MutationObserver(o),s.observe(e,{attributes:!0,childList:!0,characterData:!0,subtree:!0}))),this._monitoringDocuments.push(e),this._monitoringUnsubscribes.push((function(){var t=e.defaultView;t&&(r&&t.clearInterval(r),a(t,"resize",o,!0)),a(e,"scroll",o,!0),s&&s.disconnect()}));var h=this.root&&(this.root.ownerDocument||this.root)||t;if(e!=h){var u=i(e);u&&this._monitorIntersections(u.ownerDocument)}}},s.prototype._unmonitorIntersections=function(e){var n=this._monitoringDocuments.indexOf(e);if(-1!=n){var o=this.root&&(this.root.ownerDocument||this.root)||t,r=this._observationTargets.some((function(t){var n=t.element.ownerDocument;if(n==e)return!0;while(n&&n!=o){var r=i(n);if(n=r&&r.ownerDocument,n==e)return!0}return!1}));if(!r){var s=this._monitoringUnsubscribes[n];if(this._monitoringDocuments.splice(n,1),this._monitoringUnsubscribes.splice(n,1),s(),e!=o){var h=i(e);h&&this._unmonitorIntersections(h.ownerDocument)}}}},s.prototype._unmonitorAllIntersections=function(){var t=this._monitoringUnsubscribes.slice(0);this._monitoringDocuments.length=0,this._monitoringUnsubscribes.length=0;for(var e=0;e=0&&h>=0&&{top:n,bottom:o,left:i,right:r,width:s,height:h}||null}function f(t){var e;try{e=t.getBoundingClientRect()}catch(n){}return e?(e.width&&e.height||(e={top:e.top,right:e.right,bottom:e.bottom,left:e.left,width:e.right-e.left,height:e.bottom-e.top}),e):p()}function p(){return{top:0,bottom:0,left:0,right:0,width:0,height:0}}function d(t){return!t||"x"in t?t:{top:t.top,y:t.top,bottom:t.bottom,left:t.left,x:t.left,right:t.right,width:t.width,height:t.height}}function g(t,e){var n=e.top-t.top,o=e.left-t.left;return{top:n,left:o,height:e.height,width:e.width,bottom:n+e.height,right:o+e.width}}function m(t,e){var n=e;while(n){if(n==t)return!0;n=v(n)}return!1}function v(e){var n=e.parentNode;return 9==e.nodeType&&e!=t?i(e):(n&&n.assignedSlot&&(n=n.assignedSlot.parentNode),n&&11==n.nodeType&&n.host?n.host:n)}function w(t){return t&&9===t.nodeType}})()}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/chunk-vendors.00bf82af.js b/docs/swift-docc-render/js/chunk-vendors.00bf82af.js new file mode 100644 index 00000000..04c05a6c --- /dev/null +++ b/docs/swift-docc-render/js/chunk-vendors.00bf82af.js @@ -0,0 +1,21 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-vendors"],{2877:function(t,e,n){"use strict";function r(t,e,n,r,o,i,a,s){var c,u="function"===typeof t?t.options:t;if(e&&(u.render=e,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(c=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"===typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},u._ssrRegister=c):o&&(c=s?function(){o.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:o),c)if(u.functional){u._injectStyles=c;var f=u.render;u.render=function(t,e){return c.call(e),f(t,e)}}else{var l=u.beforeCreate;u.beforeCreate=l?[].concat(l,c):[c]}return{exports:t,options:u}}n.d(e,"a",(function(){return r}))},"2b0e":function(t,e,n){"use strict";n.r(e),function(t){ +/*! + * Vue.js v2.6.14 + * (c) 2014-2021 Evan You + * Released under the MIT License. + */ +var n=Object.freeze({});function r(t){return void 0===t||null===t}function o(t){return void 0!==t&&null!==t}function i(t){return!0===t}function a(t){return!1===t}function s(t){return"string"===typeof t||"number"===typeof t||"symbol"===typeof t||"boolean"===typeof t}function c(t){return null!==t&&"object"===typeof t}var u=Object.prototype.toString;function f(t){return"[object Object]"===u.call(t)}function l(t){return"[object RegExp]"===u.call(t)}function p(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function d(t){return o(t)&&"function"===typeof t.then&&"function"===typeof t.catch}function h(t){return null==t?"":Array.isArray(t)||f(t)&&t.toString===u?JSON.stringify(t,null,2):String(t)}function v(t){var e=parseFloat(t);return isNaN(e)?t:e}function y(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o-1)return t.splice(n,1)}}var _=Object.prototype.hasOwnProperty;function b(t,e){return _.call(t,e)}function w(t){var e=Object.create(null);return function(n){var r=e[n];return r||(e[n]=t(n))}}var C=/-(\w)/g,x=w((function(t){return t.replace(C,(function(t,e){return e?e.toUpperCase():""}))})),$=w((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),A=/\B([A-Z])/g,k=w((function(t){return t.replace(A,"-$1").toLowerCase()}));function O(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n}function S(t,e){return t.bind(e)}var E=Function.prototype.bind?S:O;function j(t,e){e=e||0;var n=t.length-e,r=new Array(n);while(n--)r[n]=t[n+e];return r}function T(t,e){for(var n in e)t[n]=e[n];return t}function R(t){for(var e={},n=0;n0,nt=Z&&Z.indexOf("edge/")>0,rt=(Z&&Z.indexOf("android"),Z&&/iphone|ipad|ipod|ios/.test(Z)||"ios"===Y),ot=(Z&&/chrome\/\d+/.test(Z),Z&&/phantomjs/.test(Z),Z&&Z.match(/firefox\/(\d+)/)),it={}.watch,at=!1;if(G)try{var st={};Object.defineProperty(st,"passive",{get:function(){at=!0}}),window.addEventListener("test-passive",null,st)}catch($a){}var ct=function(){return void 0===X&&(X=!G&&!Q&&"undefined"!==typeof t&&(t["process"]&&"server"===t["process"].env.VUE_ENV)),X},ut=G&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ft(t){return"function"===typeof t&&/native code/.test(t.toString())}var lt,pt="undefined"!==typeof Symbol&&ft(Symbol)&&"undefined"!==typeof Reflect&&ft(Reflect.ownKeys);lt="undefined"!==typeof Set&&ft(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var dt=P,ht=0,vt=function(){this.id=ht++,this.subs=[]};vt.prototype.addSub=function(t){this.subs.push(t)},vt.prototype.removeSub=function(t){g(this.subs,t)},vt.prototype.depend=function(){vt.target&&vt.target.addDep(this)},vt.prototype.notify=function(){var t=this.subs.slice();for(var e=0,n=t.length;e-1)if(i&&!b(o,"default"))a=!1;else if(""===a||a===k(t)){var c=ee(String,o.type);(c<0||s0&&(a=Se(a,(e||"")+"_"+n),Oe(a[0])&&Oe(u)&&(f[c]=Ct(u.text+a[0].text),a.shift()),f.push.apply(f,a)):s(a)?Oe(u)?f[c]=Ct(u.text+a):""!==a&&f.push(Ct(a)):Oe(a)&&Oe(u)?f[c]=Ct(u.text+a.text):(i(t._isVList)&&o(a.tag)&&r(a.key)&&o(e)&&(a.key="__vlist"+e+"_"+n+"__"),f.push(a)));return f}function Ee(t){var e=t.$options.provide;e&&(t._provided="function"===typeof e?e.call(t):e)}function je(t){var e=Te(t.$options.inject,t);e&&(Et(!1),Object.keys(e).forEach((function(n){It(t,n,e[n])})),Et(!0))}function Te(t,e){if(t){for(var n=Object.create(null),r=pt?Reflect.ownKeys(t):Object.keys(t),o=0;o0,a=t?!!t.$stable:!i,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&r&&r!==n&&s===r.$key&&!i&&!r.$hasNormal)return r;for(var c in o={},t)t[c]&&"$"!==c[0]&&(o[c]=Ne(e,c,t[c]))}else o={};for(var u in e)u in o||(o[u]=De(e,u));return t&&Object.isExtensible(t)&&(t._normalized=o),z(o,"$stable",a),z(o,"$key",s),z(o,"$hasNormal",i),o}function Ne(t,e,n){var r=function(){var t=arguments.length?n.apply(null,arguments):n({});t=t&&"object"===typeof t&&!Array.isArray(t)?[t]:ke(t);var e=t&&t[0];return t&&(!e||1===t.length&&e.isComment&&!Ie(e))?void 0:t};return n.proxy&&Object.defineProperty(t,e,{get:r,enumerable:!0,configurable:!0}),r}function De(t,e){return function(){return t[e]}}function Me(t,e){var n,r,i,a,s;if(Array.isArray(t)||"string"===typeof t)for(n=new Array(t.length),r=0,i=t.length;r1?j(n):n;for(var r=j(arguments,1),o='event handler for "'+t+'"',i=0,a=n.length;idocument.createEvent("Event").timeStamp&&(Jn=function(){return Gn.now()})}function Qn(){var t,e;for(Xn=Jn(),zn=!0,Vn.sort((function(t,e){return t.id-e.id})),Wn=0;WnWn&&Vn[n].id>t.id)n--;Vn.splice(n+1,0,t)}else Vn.push(t);qn||(qn=!0,ve(Qn))}}var nr=0,rr=function(t,e,n,r,o){this.vm=t,o&&(t._watcher=this),t._watchers.push(this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync,this.before=r.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++nr,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new lt,this.newDepIds=new lt,this.expression="","function"===typeof e?this.getter=e:(this.getter=K(e),this.getter||(this.getter=P)),this.value=this.lazy?void 0:this.get()};rr.prototype.get=function(){var t;mt(this);var e=this.vm;try{t=this.getter.call(e,e)}catch($a){if(!this.user)throw $a;ne($a,e,'getter for watcher "'+this.expression+'"')}finally{this.deep&&me(t),gt(),this.cleanupDeps()}return t},rr.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},rr.prototype.cleanupDeps=function(){var t=this.deps.length;while(t--){var e=this.deps[t];this.newDepIds.has(e.id)||e.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},rr.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():er(this)},rr.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||c(t)||this.deep){var e=this.value;if(this.value=t,this.user){var n='callback for watcher "'+this.expression+'"';re(this.cb,this.vm,[t,e],this.vm,n)}else this.cb.call(this.vm,t,e)}}},rr.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},rr.prototype.depend=function(){var t=this.deps.length;while(t--)this.deps[t].depend()},rr.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||g(this.vm._watchers,this);var t=this.deps.length;while(t--)this.deps[t].removeSub(this);this.active=!1}};var or={enumerable:!0,configurable:!0,get:P,set:P};function ir(t,e,n){or.get=function(){return this[e][n]},or.set=function(t){this[e][n]=t},Object.defineProperty(t,n,or)}function ar(t){t._watchers=[];var e=t.$options;e.props&&sr(t,e.props),e.methods&&vr(t,e.methods),e.data?cr(t):Pt(t._data={},!0),e.computed&&lr(t,e.computed),e.watch&&e.watch!==it&&yr(t,e.watch)}function sr(t,e){var n=t.$options.propsData||{},r=t._props={},o=t.$options._propKeys=[],i=!t.$parent;i||Et(!1);var a=function(i){o.push(i);var a=Gt(i,e,n,t);It(r,i,a),i in t||ir(t,"_props",i)};for(var s in e)a(s);Et(!0)}function cr(t){var e=t.$options.data;e=t._data="function"===typeof e?ur(e,t):e||{},f(e)||(e={});var n=Object.keys(e),r=t.$options.props,o=(t.$options.methods,n.length);while(o--){var i=n[o];0,r&&b(r,i)||q(i)||ir(t,"_data",i)}Pt(e,!0)}function ur(t,e){mt();try{return t.call(e,e)}catch($a){return ne($a,e,"data()"),{}}finally{gt()}}var fr={lazy:!0};function lr(t,e){var n=t._computedWatchers=Object.create(null),r=ct();for(var o in e){var i=e[o],a="function"===typeof i?i:i.get;0,r||(n[o]=new rr(t,a||P,P,fr)),o in t||pr(t,o,i)}}function pr(t,e,n){var r=!ct();"function"===typeof n?(or.get=r?dr(e):hr(n),or.set=P):(or.get=n.get?r&&!1!==n.cache?dr(e):hr(n.get):P,or.set=n.set||P),Object.defineProperty(t,e,or)}function dr(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),vt.target&&e.depend(),e.value}}function hr(t){return function(){return t.call(this,this)}}function vr(t,e){t.$options.props;for(var n in e)t[n]="function"!==typeof e[n]?P:E(e[n],t)}function yr(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var o=0;o-1)return this;var n=j(arguments,1);return n.unshift(this),"function"===typeof t.install?t.install.apply(t,n):"function"===typeof t&&t.apply(null,n),e.push(t),this}}function kr(t){t.mixin=function(t){return this.options=Xt(this.options,t),this}}function Or(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,o=t._Ctor||(t._Ctor={});if(o[r])return o[r];var i=t.name||n.options.name;var a=function(t){this._init(t)};return a.prototype=Object.create(n.prototype),a.prototype.constructor=a,a.cid=e++,a.options=Xt(n.options,t),a["super"]=n,a.options.props&&Sr(a),a.options.computed&&Er(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,U.forEach((function(t){a[t]=n[t]})),i&&(a.options.components[i]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=T({},a.options),o[r]=a,a}}function Sr(t){var e=t.options.props;for(var n in e)ir(t.prototype,"_props",n)}function Er(t){var e=t.options.computed;for(var n in e)pr(t.prototype,n,e[n])}function jr(t){U.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&f(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"===typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}function Tr(t){return t&&(t.Ctor.options.name||t.tag)}function Rr(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"===typeof t?t.split(",").indexOf(e)>-1:!!l(t)&&t.test(e)}function Pr(t,e){var n=t.cache,r=t.keys,o=t._vnode;for(var i in n){var a=n[i];if(a){var s=a.name;s&&!e(s)&&Ir(n,i,r,o)}}}function Ir(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,g(n,e)}br($r),gr($r),jn($r),In($r),bn($r);var Lr=[String,RegExp,Array],Nr={name:"keep-alive",abstract:!0,props:{include:Lr,exclude:Lr,max:[String,Number]},methods:{cacheVNode:function(){var t=this,e=t.cache,n=t.keys,r=t.vnodeToCache,o=t.keyToCache;if(r){var i=r.tag,a=r.componentInstance,s=r.componentOptions;e[o]={name:Tr(s),tag:i,componentInstance:a},n.push(o),this.max&&n.length>parseInt(this.max)&&Ir(e,n[0],n,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)Ir(this.cache,t,this.keys)},mounted:function(){var t=this;this.cacheVNode(),this.$watch("include",(function(e){Pr(t,(function(t){return Rr(e,t)}))})),this.$watch("exclude",(function(e){Pr(t,(function(t){return!Rr(e,t)}))}))},updated:function(){this.cacheVNode()},render:function(){var t=this.$slots.default,e=$n(t),n=e&&e.componentOptions;if(n){var r=Tr(n),o=this,i=o.include,a=o.exclude;if(i&&(!r||!Rr(i,r))||a&&r&&Rr(a,r))return e;var s=this,c=s.cache,u=s.keys,f=null==e.key?n.Ctor.cid+(n.tag?"::"+n.tag:""):e.key;c[f]?(e.componentInstance=c[f].componentInstance,g(u,f),u.push(f)):(this.vnodeToCache=e,this.keyToCache=f),e.data.keepAlive=!0}return e||t&&t[0]}},Dr={KeepAlive:Nr};function Mr(t){var e={get:function(){return B}};Object.defineProperty(t,"config",e),t.util={warn:dt,extend:T,mergeOptions:Xt,defineReactive:It},t.set=Lt,t.delete=Nt,t.nextTick=ve,t.observable=function(t){return Pt(t),t},t.options=Object.create(null),U.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,T(t.options.components,Dr),Ar(t),kr(t),Or(t),jr(t)}Mr($r),Object.defineProperty($r.prototype,"$isServer",{get:ct}),Object.defineProperty($r.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty($r,"FunctionalRenderContext",{value:Ze}),$r.version="2.6.14";var Fr=y("style,class"),Ur=y("input,textarea,option,select,progress"),Vr=function(t,e,n){return"value"===n&&Ur(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},Br=y("contenteditable,draggable,spellcheck"),Hr=y("events,caret,typing,plaintext-only"),qr=function(t,e){return Jr(e)||"false"===e?"false":"contenteditable"===t&&Hr(e)?e:"true"},zr=y("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),Wr="http://www.w3.org/1999/xlink",Kr=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},Xr=function(t){return Kr(t)?t.slice(6,t.length):""},Jr=function(t){return null==t||!1===t};function Gr(t){var e=t.data,n=t,r=t;while(o(r.componentInstance))r=r.componentInstance._vnode,r&&r.data&&(e=Qr(r.data,e));while(o(n=n.parent))n&&n.data&&(e=Qr(e,n.data));return Yr(e.staticClass,e.class)}function Qr(t,e){return{staticClass:Zr(t.staticClass,e.staticClass),class:o(t.class)?[t.class,e.class]:e.class}}function Yr(t,e){return o(t)||o(e)?Zr(t,to(e)):""}function Zr(t,e){return t?e?t+" "+e:t:e||""}function to(t){return Array.isArray(t)?eo(t):c(t)?no(t):"string"===typeof t?t:""}function eo(t){for(var e,n="",r=0,i=t.length;r-1?co[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:co[t]=/HTMLUnknownElement/.test(e.toString())}var fo=y("text,number,password,search,email,tel,url");function lo(t){if("string"===typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}function po(t,e){var n=document.createElement(t);return"select"!==t||e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n}function ho(t,e){return document.createElementNS(ro[t],e)}function vo(t){return document.createTextNode(t)}function yo(t){return document.createComment(t)}function mo(t,e,n){t.insertBefore(e,n)}function go(t,e){t.removeChild(e)}function _o(t,e){t.appendChild(e)}function bo(t){return t.parentNode}function wo(t){return t.nextSibling}function Co(t){return t.tagName}function xo(t,e){t.textContent=e}function $o(t,e){t.setAttribute(e,"")}var Ao=Object.freeze({createElement:po,createElementNS:ho,createTextNode:vo,createComment:yo,insertBefore:mo,removeChild:go,appendChild:_o,parentNode:bo,nextSibling:wo,tagName:Co,setTextContent:xo,setStyleScope:$o}),ko={create:function(t,e){Oo(e)},update:function(t,e){t.data.ref!==e.data.ref&&(Oo(t,!0),Oo(e))},destroy:function(t){Oo(t,!0)}};function Oo(t,e){var n=t.data.ref;if(o(n)){var r=t.context,i=t.componentInstance||t.elm,a=r.$refs;e?Array.isArray(a[n])?g(a[n],i):a[n]===i&&(a[n]=void 0):t.data.refInFor?Array.isArray(a[n])?a[n].indexOf(i)<0&&a[n].push(i):a[n]=[i]:a[n]=i}}var So=new _t("",{},[]),Eo=["create","activate","update","remove","destroy"];function jo(t,e){return t.key===e.key&&t.asyncFactory===e.asyncFactory&&(t.tag===e.tag&&t.isComment===e.isComment&&o(t.data)===o(e.data)&&To(t,e)||i(t.isAsyncPlaceholder)&&r(e.asyncFactory.error))}function To(t,e){if("input"!==t.tag)return!0;var n,r=o(n=t.data)&&o(n=n.attrs)&&n.type,i=o(n=e.data)&&o(n=n.attrs)&&n.type;return r===i||fo(r)&&fo(i)}function Ro(t,e,n){var r,i,a={};for(r=e;r<=n;++r)i=t[r].key,o(i)&&(a[i]=r);return a}function Po(t){var e,n,a={},c=t.modules,u=t.nodeOps;for(e=0;ev?(l=r(n[g+1])?null:n[g+1].elm,x(t,l,n,h,g,i)):h>g&&A(e,p,v)}function S(t,e,n,r){for(var i=n;i-1?qo(t,e,n):zr(e)?Jr(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):Br(e)?t.setAttribute(e,qr(e,n)):Kr(e)?Jr(n)?t.removeAttributeNS(Wr,Xr(e)):t.setAttributeNS(Wr,e,n):qo(t,e,n)}function qo(t,e,n){if(Jr(n))t.removeAttribute(e);else{if(tt&&!et&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var zo={create:Bo,update:Bo};function Wo(t,e){var n=e.elm,i=e.data,a=t.data;if(!(r(i.staticClass)&&r(i.class)&&(r(a)||r(a.staticClass)&&r(a.class)))){var s=Gr(e),c=n._transitionClasses;o(c)&&(s=Zr(s,to(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var Ko,Xo={create:Wo,update:Wo},Jo="__r",Go="__c";function Qo(t){if(o(t[Jo])){var e=tt?"change":"input";t[e]=[].concat(t[Jo],t[e]||[]),delete t[Jo]}o(t[Go])&&(t.change=[].concat(t[Go],t.change||[]),delete t[Go])}function Yo(t,e,n){var r=Ko;return function o(){var i=e.apply(null,arguments);null!==i&&ei(t,o,n,r)}}var Zo=se&&!(ot&&Number(ot[1])<=53);function ti(t,e,n,r){if(Zo){var o=Xn,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}Ko.addEventListener(t,e,at?{capture:n,passive:r}:n)}function ei(t,e,n,r){(r||Ko).removeEventListener(t,e._wrapper||e,n)}function ni(t,e){if(!r(t.data.on)||!r(e.data.on)){var n=e.data.on||{},o=t.data.on||{};Ko=e.elm,Qo(n),we(n,o,ti,ei,Yo,e.context),Ko=void 0}}var ri,oi={create:ni,update:ni};function ii(t,e){if(!r(t.data.domProps)||!r(e.data.domProps)){var n,i,a=e.elm,s=t.data.domProps||{},c=e.data.domProps||{};for(n in o(c.__ob__)&&(c=e.data.domProps=T({},c)),s)n in c||(a[n]="");for(n in c){if(i=c[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),i===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n&&"PROGRESS"!==a.tagName){a._value=i;var u=r(i)?"":String(i);ai(a,u)&&(a.value=u)}else if("innerHTML"===n&&io(a.tagName)&&r(a.innerHTML)){ri=ri||document.createElement("div"),ri.innerHTML=""+i+"";var f=ri.firstChild;while(a.firstChild)a.removeChild(a.firstChild);while(f.firstChild)a.appendChild(f.firstChild)}else if(i!==s[n])try{a[n]=i}catch($a){}}}}function ai(t,e){return!t.composing&&("OPTION"===t.tagName||si(t,e)||ci(t,e))}function si(t,e){var n=!0;try{n=document.activeElement!==t}catch($a){}return n&&t.value!==e}function ci(t,e){var n=t.value,r=t._vModifiers;if(o(r)){if(r.number)return v(n)!==v(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}var ui={create:ii,update:ii},fi=w((function(t){var e={},n=/;(?![^(]*\))/g,r=/:(.+)/;return t.split(n).forEach((function(t){if(t){var n=t.split(r);n.length>1&&(e[n[0].trim()]=n[1].trim())}})),e}));function li(t){var e=pi(t.style);return t.staticStyle?T(t.staticStyle,e):e}function pi(t){return Array.isArray(t)?R(t):"string"===typeof t?fi(t):t}function di(t,e){var n,r={};if(e){var o=t;while(o.componentInstance)o=o.componentInstance._vnode,o&&o.data&&(n=li(o.data))&&T(r,n)}(n=li(t.data))&&T(r,n);var i=t;while(i=i.parent)i.data&&(n=li(i.data))&&T(r,n);return r}var hi,vi=/^--/,yi=/\s*!important$/,mi=function(t,e,n){if(vi.test(e))t.style.setProperty(e,n);else if(yi.test(n))t.style.setProperty(k(e),n.replace(yi,""),"important");else{var r=_i(e);if(Array.isArray(n))for(var o=0,i=n.length;o-1?e.split(Ci).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function $i(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(Ci).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";while(n.indexOf(r)>=0)n=n.replace(r," ");n=n.trim(),n?t.setAttribute("class",n):t.removeAttribute("class")}}function Ai(t){if(t){if("object"===typeof t){var e={};return!1!==t.css&&T(e,ki(t.name||"v")),T(e,t),e}return"string"===typeof t?ki(t):void 0}}var ki=w((function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}})),Oi=G&&!et,Si="transition",Ei="animation",ji="transition",Ti="transitionend",Ri="animation",Pi="animationend";Oi&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(ji="WebkitTransition",Ti="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Ri="WebkitAnimation",Pi="webkitAnimationEnd"));var Ii=G?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function Li(t){Ii((function(){Ii(t)}))}function Ni(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),xi(t,e))}function Di(t,e){t._transitionClasses&&g(t._transitionClasses,e),$i(t,e)}function Mi(t,e,n){var r=Ui(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s=o===Si?Ti:Pi,c=0,u=function(){t.removeEventListener(s,f),n()},f=function(e){e.target===t&&++c>=a&&u()};setTimeout((function(){c0&&(n=Si,f=a,l=i.length):e===Ei?u>0&&(n=Ei,f=u,l=c.length):(f=Math.max(a,u),n=f>0?a>u?Si:Ei:null,l=n?n===Si?i.length:c.length:0);var p=n===Si&&Fi.test(r[ji+"Property"]);return{type:n,timeout:f,propCount:l,hasTransform:p}}function Vi(t,e){while(t.length1}function Ki(t,e){!0!==e.data.show&&Hi(e)}var Xi=G?{create:Ki,activate:Ki,remove:function(t,e){!0!==t.data.show?qi(t,e):e()}}:{},Ji=[zo,Xo,oi,ui,wi,Xi],Gi=Ji.concat(Vo),Qi=Po({nodeOps:Ao,modules:Gi});et&&document.addEventListener("selectionchange",(function(){var t=document.activeElement;t&&t.vmodel&&ia(t,"input")}));var Yi={inserted:function(t,e,n,r){"select"===n.tag?(r.elm&&!r.elm._vOptions?Ce(n,"postpatch",(function(){Yi.componentUpdated(t,e,n)})):Zi(t,e,n.context),t._vOptions=[].map.call(t.options,na)):("textarea"===n.tag||fo(t.type))&&(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("compositionstart",ra),t.addEventListener("compositionend",oa),t.addEventListener("change",oa),et&&(t.vmodel=!0)))},componentUpdated:function(t,e,n){if("select"===n.tag){Zi(t,e,n.context);var r=t._vOptions,o=t._vOptions=[].map.call(t.options,na);if(o.some((function(t,e){return!N(t,r[e])}))){var i=t.multiple?e.value.some((function(t){return ea(t,o)})):e.value!==e.oldValue&&ea(e.value,o);i&&ia(t,"change")}}}};function Zi(t,e,n){ta(t,e,n),(tt||nt)&&setTimeout((function(){ta(t,e,n)}),0)}function ta(t,e,n){var r=e.value,o=t.multiple;if(!o||Array.isArray(r)){for(var i,a,s=0,c=t.options.length;s-1,a.selected!==i&&(a.selected=i);else if(N(na(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function ea(t,e){return e.every((function(e){return!N(e,t)}))}function na(t){return"_value"in t?t._value:t.value}function ra(t){t.target.composing=!0}function oa(t){t.target.composing&&(t.target.composing=!1,ia(t.target,"input"))}function ia(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function aa(t){return!t.componentInstance||t.data&&t.data.transition?t:aa(t.componentInstance._vnode)}var sa={bind:function(t,e,n){var r=e.value;n=aa(n);var o=n.data&&n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&o?(n.data.show=!0,Hi(n,(function(){t.style.display=i}))):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value,o=e.oldValue;if(!r!==!o){n=aa(n);var i=n.data&&n.data.transition;i?(n.data.show=!0,r?Hi(n,(function(){t.style.display=t.__vOriginalDisplay})):qi(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none"}},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}},ca={model:Yi,show:sa},ua={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function fa(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?fa($n(e.children)):t}function la(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var i in o)e[x(i)]=o[i];return e}function pa(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}function da(t){while(t=t.parent)if(t.data.transition)return!0}function ha(t,e){return e.key===t.key&&e.tag===t.tag}var va=function(t){return t.tag||Ie(t)},ya=function(t){return"show"===t.name},ma={name:"transition",props:ua,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(va),n.length)){0;var r=this.mode;0;var o=n[0];if(da(this.$vnode))return o;var i=fa(o);if(!i)return o;if(this._leaving)return pa(t,o);var a="__transition-"+this._uid+"-";i.key=null==i.key?i.isComment?a+"comment":a+i.tag:s(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var c=(i.data||(i.data={})).transition=la(this),u=this._vnode,f=fa(u);if(i.data.directives&&i.data.directives.some(ya)&&(i.data.show=!0),f&&f.data&&!ha(i,f)&&!Ie(f)&&(!f.componentInstance||!f.componentInstance._vnode.isComment)){var l=f.data.transition=T({},c);if("out-in"===r)return this._leaving=!0,Ce(l,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),pa(t,o);if("in-out"===r){if(Ie(i))return u;var p,d=function(){p()};Ce(c,"afterEnter",d),Ce(c,"enterCancelled",d),Ce(l,"delayLeave",(function(t){p=t}))}}return o}}},ga=T({tag:String,moveClass:String},ua);delete ga.mode;var _a={props:ga,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=Rn(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=la(this),s=0;s=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}function j(t){return t.replace(/\/\//g,"/")}var T=Array.isArray||function(t){return"[object Array]"==Object.prototype.toString.call(t)},R=Q,P=M,I=F,L=B,N=G,D=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function M(t,e){var n,r=[],o=0,i=0,a="",s=e&&e.delimiter||"/";while(null!=(n=D.exec(t))){var c=n[0],u=n[1],f=n.index;if(a+=t.slice(i,f),i=f+c.length,u)a+=u[1];else{var l=t[i],p=n[2],d=n[3],h=n[4],v=n[5],y=n[6],m=n[7];a&&(r.push(a),a="");var g=null!=p&&null!=l&&l!==p,_="+"===y||"*"===y,b="?"===y||"*"===y,w=n[2]||s,C=h||v;r.push({name:d||o++,prefix:p||"",delimiter:w,optional:b,repeat:_,partial:g,asterisk:!!m,pattern:C?q(C):m?".*":"[^"+H(w)+"]+?"})}}return i1||!$.length)return 0===$.length?t():t("span",{},$)}if("a"===this.tag)x.on=w,x.attrs={href:c,"aria-current":g};else{var A=st(this.$slots.default);if(A){A.isStatic=!1;var k=A.data=o({},A.data);for(var O in k.on=k.on||{},k.on){var S=k.on[O];O in w&&(k.on[O]=Array.isArray(S)?S:[S])}for(var E in w)E in k.on?k.on[E].push(w[E]):k.on[E]=_;var j=A.data.attrs=o({},A.data.attrs);j.href=c,j["aria-current"]=g}else x.on=w}return t(this.tag,x,this.$slots.default)}};function at(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)&&!t.defaultPrevented&&(void 0===t.button||0===t.button)){if(t.currentTarget&&t.currentTarget.getAttribute){var e=t.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}function st(t){if(t)for(var e,n=0;n-1&&(s.params[l]=n.params[l]);return s.path=Z(u.path,s.params,'named route "'+c+'"'),p(u,s,a)}if(s.path){s.params={};for(var d=0;d=t.length?n():t[o]?e(t[o],(function(){r(o+1)})):r(o+1)};r(0)}var Ft={redirected:2,aborted:4,cancelled:8,duplicated:16};function Ut(t,e){return qt(t,e,Ft.redirected,'Redirected when going from "'+t.fullPath+'" to "'+Wt(e)+'" via a navigation guard.')}function Vt(t,e){var n=qt(t,e,Ft.duplicated,'Avoided redundant navigation to current location: "'+t.fullPath+'".');return n.name="NavigationDuplicated",n}function Bt(t,e){return qt(t,e,Ft.cancelled,'Navigation cancelled from "'+t.fullPath+'" to "'+e.fullPath+'" with a new navigation.')}function Ht(t,e){return qt(t,e,Ft.aborted,'Navigation aborted from "'+t.fullPath+'" to "'+e.fullPath+'" via a navigation guard.')}function qt(t,e,n,r){var o=new Error(r);return o._isRouter=!0,o.from=t,o.to=e,o.type=n,o}var zt=["params","query","hash"];function Wt(t){if("string"===typeof t)return t;if("path"in t)return t.path;var e={};return zt.forEach((function(n){n in t&&(e[n]=t[n])})),JSON.stringify(e,null,2)}function Kt(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function Xt(t,e){return Kt(t)&&t._isRouter&&(null==e||t.type===e)}function Jt(t){return function(e,n,r){var o=!1,i=0,a=null;Gt(t,(function(t,e,n,s){if("function"===typeof t&&void 0===t.cid){o=!0,i++;var c,u=te((function(e){Zt(e)&&(e=e.default),t.resolved="function"===typeof e?e:et.extend(e),n.components[s]=e,i--,i<=0&&r()})),f=te((function(t){var e="Failed to resolve async component "+s+": "+t;a||(a=Kt(t)?t:new Error(e),r(a))}));try{c=t(u,f)}catch(p){f(p)}if(c)if("function"===typeof c.then)c.then(u,f);else{var l=c.component;l&&"function"===typeof l.then&&l.then(u,f)}}})),o||r()}}function Gt(t,e){return Qt(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function Qt(t){return Array.prototype.concat.apply([],t)}var Yt="function"===typeof Symbol&&"symbol"===typeof Symbol.toStringTag;function Zt(t){return t.__esModule||Yt&&"Module"===t[Symbol.toStringTag]}function te(t){var e=!1;return function(){var n=[],r=arguments.length;while(r--)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var ee=function(t,e){this.router=t,this.base=ne(e),this.current=m,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function ne(t){if(!t)if(ut){var e=document.querySelector("base");t=e&&e.getAttribute("href")||"/",t=t.replace(/^https?:\/\/[^\/]+/,"")}else t="/";return"/"!==t.charAt(0)&&(t="/"+t),t.replace(/\/$/,"")}function re(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n0)){var e=this.router,n=e.options.scrollBehavior,r=Lt&&n;r&&this.listeners.push(xt());var o=function(){var n=t.current,o=pe(t.base);t.current===m&&o===t._startLocation||t.transitionTo(o,(function(t){r&&$t(e,t,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,n){var r=this,o=this,i=o.current;this.transitionTo(t,(function(t){Nt(j(r.base+t.fullPath)),$t(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this,i=o.current;this.transitionTo(t,(function(t){Dt(j(r.base+t.fullPath)),$t(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.ensureURL=function(t){if(pe(this.base)!==this.current.fullPath){var e=j(this.base+this.current.fullPath);t?Nt(e):Dt(e)}},e.prototype.getCurrentLocation=function(){return pe(this.base)},e}(ee);function pe(t){var e=window.location.pathname,n=e.toLowerCase(),r=t.toLowerCase();return!t||n!==r&&0!==n.indexOf(j(r+"/"))||(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var de=function(t){function e(e,n,r){t.call(this,e,n),r&&he(this.base)||ve()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router,n=e.options.scrollBehavior,r=Lt&&n;r&&this.listeners.push(xt());var o=function(){var e=t.current;ve()&&t.transitionTo(ye(),(function(n){r&&$t(t.router,n,e,!0),Lt||_e(n.fullPath)}))},i=Lt?"popstate":"hashchange";window.addEventListener(i,o),this.listeners.push((function(){window.removeEventListener(i,o)}))}},e.prototype.push=function(t,e,n){var r=this,o=this,i=o.current;this.transitionTo(t,(function(t){ge(t.fullPath),$t(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this,i=o.current;this.transitionTo(t,(function(t){_e(t.fullPath),$t(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;ye()!==e&&(t?ge(e):_e(e))},e.prototype.getCurrentLocation=function(){return ye()},e}(ee);function he(t){var e=pe(t);if(!/^\/#/.test(e))return window.location.replace(j(t+"/#"+e)),!0}function ve(){var t=ye();return"/"===t.charAt(0)||(_e("/"+t),!1)}function ye(){var t=window.location.href,e=t.indexOf("#");return e<0?"":(t=t.slice(e+1),t)}function me(t){var e=window.location.href,n=e.indexOf("#"),r=n>=0?e.slice(0,n):e;return r+"#"+t}function ge(t){Lt?Nt(me(t)):window.location.hash=t}function _e(t){Lt?Dt(me(t)):window.location.replace(me(t))}var be=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var t=e.current;e.index=n,e.updateRoute(r),e.router.afterHooks.forEach((function(e){e&&e(r,t)}))}),(function(t){Xt(t,Ft.duplicated)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(ee),we=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=ht(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!Lt&&!1!==t.fallback,this.fallback&&(e="hash"),ut||(e="abstract"),this.mode=e,e){case"history":this.history=new le(this,t.base);break;case"hash":this.history=new de(this,t.base,this.fallback);break;case"abstract":this.history=new be(this,t.base);break;default:0}},Ce={currentRoute:{configurable:!0}};function xe(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}function $e(t,e,n){var r="hash"===n?"#"+e:e;return t?j(t+"/"+r):r}we.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},Ce.currentRoute.get=function(){return this.history&&this.history.current},we.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()})),!this.app){this.app=t;var n=this.history;if(n instanceof le||n instanceof de){var r=function(t){var r=n.current,o=e.options.scrollBehavior,i=Lt&&o;i&&"fullPath"in t&&$t(e,t,r,!1)},o=function(t){n.setupListeners(),r(t)};n.transitionTo(n.getCurrentLocation(),o,o)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},we.prototype.beforeEach=function(t){return xe(this.beforeHooks,t)},we.prototype.beforeResolve=function(t){return xe(this.resolveHooks,t)},we.prototype.afterEach=function(t){return xe(this.afterHooks,t)},we.prototype.onReady=function(t,e){this.history.onReady(t,e)},we.prototype.onError=function(t){this.history.onError(t)},we.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!==typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},we.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!==typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},we.prototype.go=function(t){this.history.go(t)},we.prototype.back=function(){this.go(-1)},we.prototype.forward=function(){this.go(1)},we.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},we.prototype.resolve=function(t,e,n){e=e||this.history.current;var r=tt(t,e,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath,a=this.history.base,s=$e(a,i,this.mode);return{location:r,route:o,href:s,normalizedTo:r,resolved:o}},we.prototype.getRoutes=function(){return this.matcher.getRoutes()},we.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==m&&this.history.transitionTo(this.history.getCurrentLocation())},we.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==m&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(we.prototype,Ce),we.install=ct,we.version="3.5.2",we.isNavigationFailure=Xt,we.NavigationFailureType=Ft,we.START_LOCATION=m,ut&&window.Vue&&window.Vue.use(we),e["a"]=we},c8ba:function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"===typeof window&&(n=window)}t.exports=n}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/documentation-topic.b1a26a74.js b/docs/swift-docc-render/js/documentation-topic.b1a26a74.js new file mode 100644 index 00000000..48cd5292 --- /dev/null +++ b/docs/swift-docc-render/js/documentation-topic.b1a26a74.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["documentation-topic"],{"0180":function(e,t,n){"use strict";n("8088")},"03dc":function(e,t,n){},"042f":function(e,t,n){},"0573":function(e,t,n){},"09db":function(e,t,n){"use strict";n("535f")},"0b72":function(e,t,n){},"0d16":function(e,t,n){"use strict";n("10da")},"10da":function(e,t,n){},"179d":function(e,t,n){"use strict";n("90de")},"1a47":function(e,t,n){"use strict";n("042f")},"1d1c":function(e,t,n){"use strict";n("57e3")},"1eff":function(e,t,n){"use strict";n("82d0")},"22f6":function(e,t,n){},"243c":function(e,t,n){"use strict";n("7010")},2521:function(e,t,n){},"252a":function(e,t,n){"use strict";n("8fed")},2822:function(e,t,n){"use strict";n("2521")},2995:function(e,t,n){"use strict";n("8498")},"2f04":function(e,t,n){},"2f87":function(e,t,n){"use strict";n("b0a0")},"374e":function(e,t,n){"use strict";n("0b72")},3825:function(e,t,n){},"395c":function(e,t,n){},"3b96":function(e,t,n){"use strict";var a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"curly-brackets-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M9.987 14h-0.814v-0.916h0.36c0.137 0 0.253-0.038 0.349-0.116 0.099-0.080 0.179-0.188 0.239-0.318 0.064-0.134 0.11-0.298 0.139-0.483 0.031-0.186 0.045-0.38 0.045-0.58v-2.115c0-0.417 0.046-0.781 0.139-1.083 0.092-0.3 0.2-0.554 0.322-0.754 0.127-0.203 0.246-0.353 0.366-0.458 0.087-0.076 0.155-0.131 0.207-0.169-0.052-0.037-0.12-0.093-0.207-0.167-0.12-0.105-0.239-0.255-0.366-0.459-0.122-0.2-0.23-0.453-0.322-0.754-0.093-0.3-0.139-0.665-0.139-1.082v-2.13c0-0.199-0.014-0.392-0.045-0.572-0.029-0.182-0.076-0.345-0.139-0.483-0.060-0.137-0.141-0.246-0.239-0.328-0.095-0.076-0.212-0.115-0.349-0.115h-0.36v-0.916h0.814c0.442 0 0.788 0.18 1.030 0.538 0.238 0.352 0.358 0.826 0.358 1.407v2.236c0 0.3 0.015 0.597 0.044 0.886 0.030 0.287 0.086 0.544 0.164 0.765 0.077 0.216 0.184 0.392 0.318 0.522 0.129 0.124 0.298 0.188 0.503 0.188h0.058v0.916h-0.058c-0.206 0-0.374 0.064-0.503 0.188-0.134 0.129-0.242 0.305-0.318 0.521-0.078 0.223-0.134 0.48-0.164 0.766-0.029 0.288-0.044 0.587-0.044 0.884v2.236c0 0.582-0.12 1.055-0.358 1.409-0.242 0.358-0.588 0.538-1.030 0.538z"}}),n("path",{attrs:{d:"M4.827 14h-0.814c-0.442 0-0.788-0.18-1.030-0.538-0.238-0.352-0.358-0.825-0.358-1.409v-2.221c0-0.301-0.015-0.599-0.045-0.886-0.029-0.287-0.085-0.544-0.163-0.764-0.077-0.216-0.184-0.393-0.318-0.522-0.131-0.127-0.296-0.188-0.503-0.188h-0.058v-0.916h0.058c0.208 0 0.373-0.063 0.503-0.188 0.135-0.129 0.242-0.304 0.318-0.522 0.078-0.22 0.134-0.477 0.163-0.765 0.030-0.286 0.045-0.585 0.045-0.886v-2.251c0-0.582 0.12-1.055 0.358-1.407 0.242-0.358 0.588-0.538 1.030-0.538h0.814v0.916h-0.36c-0.138 0-0.252 0.038-0.349 0.116-0.099 0.079-0.179 0.189-0.239 0.327-0.064 0.139-0.11 0.302-0.141 0.483-0.029 0.18-0.044 0.373-0.044 0.572v2.13c0 0.417-0.046 0.782-0.138 1.082-0.092 0.302-0.201 0.556-0.324 0.754-0.123 0.201-0.246 0.356-0.366 0.459-0.086 0.074-0.153 0.13-0.206 0.167 0.052 0.038 0.12 0.093 0.206 0.169 0.12 0.103 0.243 0.258 0.366 0.458s0.232 0.453 0.324 0.754c0.092 0.302 0.138 0.666 0.138 1.083v2.115c0 0.2 0.015 0.394 0.044 0.58 0.030 0.186 0.077 0.349 0.139 0.482 0.062 0.132 0.142 0.239 0.241 0.32 0.096 0.079 0.21 0.116 0.349 0.116h0.36z"}})])},r=[],s=n("be08"),i={name:"CurlyBracketsIcon",components:{SVGIcon:s["a"]}},o=i,c=n("2877"),l=Object(c["a"])(o,a,r,!1,null,null,null);t["a"]=l.exports},"3d27":function(e,t,n){"use strict";n("8a0a")},"3dca":function(e,t,n){"use strict";n("395c")},4340:function(e,t,n){"use strict";n("a378")},4966:function(e,t,n){"use strict";n("d1af")},"51be":function(e,t,n){},5245:function(e,t,n){"use strict";n("c47b")},"535f":function(e,t,n){},"54bb":function(e,t,n){"use strict";n("e2d5")},"57e3":function(e,t,n){},"61ca":function(e,t,n){"use strict";n("82be")},"64fc":function(e,t,n){},"66c9":function(e,t,n){"use strict";t["a"]={state:{codeColors:null},reset(){this.state.codeColors=null},updateCodeColors(e){const t=e=>e?`rgba(${e.red}, ${e.green}, ${e.blue}, ${e.alpha})`:null;this.state.codeColors=Object.entries(e).reduce((e,[n,a])=>({...e,[n]:t(a)}),{})}}},"67dc":function(e,t,n){"use strict";n("ba38")},"6c70":function(e,t,n){},"6e90":function(e,t,n){},7010:function(e,t,n){},"719b":function(e,t,n){"use strict";n("8b3c")},"76d4":function(e,t,n){"use strict";n("9b11")},"78d5":function(e,t,n){"use strict";n("c9f3")},8088:function(e,t,n){},"812f":function(e,t,n){"use strict";n("a396")},"813b":function(e,t,n){"use strict";n("0573")},"82be":function(e,t,n){},"82d0":function(e,t,n){},"83f0":function(e,t,n){},8427:function(e,t,n){},8498:function(e,t,n){},8590:function(e,t,n){"use strict";var a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{style:e.codeStyle},[e._t("default")],2)},r=[],s=n("66c9");const i=0,o=255;function c(e){const t=e.match(/rgba\((\d+),\s*(\d+),\s*(\d+),\s*(\d+\.?\d*|\.\d+)\s*\)/);if(!t)throw new Error("invalid rgba() input");const n=10;return{r:parseInt(t[1],n),g:parseInt(t[2],n),b:parseInt(t[3],n),a:parseFloat(t[4])}}function l(e){const{r:t,g:n,b:a}=c(e);return.2126*t+.7152*n+.0722*a}function u(e,t){const n=Math.round(o*t),a=c(e),{a:r}=a,[s,l,u]=[a.r,a.g,a.b].map(e=>Math.max(i,Math.min(o,e+n)));return`rgba(${s}, ${l}, ${u}, ${r})`}function d(e,t){return u(e,t)}function p(e,t){return u(e,-1*t)}var h={name:"CodeTheme",data(){return{codeThemeState:s["a"].state}},computed:{codeStyle(){const{codeColors:e}=this.codeThemeState;return e?{"--text":e.text,"--background":e.background,"--line-highlight":e.lineHighlight,"--url":e.commentURL,"--syntax-comment":e.comment,"--syntax-quote":e.comment,"--syntax-keyword":e.keyword,"--syntax-literal":e.keyword,"--syntax-selector-tag":e.keyword,"--syntax-string":e.stringLiteral,"--syntax-bullet":e.stringLiteral,"--syntax-meta":e.keyword,"--syntax-number":e.stringLiteral,"--syntax-symbol":e.stringLiteral,"--syntax-tag":e.stringLiteral,"--syntax-attr":e.typeAnnotation,"--syntax-built_in":e.typeAnnotation,"--syntax-builtin-name":e.typeAnnotation,"--syntax-class":e.typeAnnotation,"--syntax-params":e.typeAnnotation,"--syntax-section":e.typeAnnotation,"--syntax-title":e.typeAnnotation,"--syntax-type":e.typeAnnotation,"--syntax-attribute":e.keyword,"--syntax-identifier":e.text,"--syntax-subst":e.text,"--color-syntax-param-internal-name":this.internalParamNameColor}:null},internalParamNameColor(){const{background:e,text:t}=this.codeThemeState.codeColors;try{const n=l(e),a=n({"~0":"~","~1":"/"}[e]||e))}function*o(e){const t=1;if(e.lengtht)throw new Error("invalid array index "+e);return n}function*h(e,t,n={strict:!1}){let a=e;for(const r of o(t)){if(n.strict&&!Object.prototype.hasOwnProperty.call(a,r))throw new d(t);a=a[r],yield{node:a,token:r}}}function m(e,t){let n=e;for(const{node:a}of h(e,t,{strict:!0}))n=a;return n}function f(e,t,n){let a=null,r=e,s=null;for(const{node:o,token:c}of h(e,t))a=r,r=o,s=c;if(!a)throw new d(t);if(Array.isArray(a))try{const e=p(s,a);a.splice(e,0,n)}catch(i){throw new d(t)}else Object.assign(a,{[s]:n});return e}function y(e,t){let n=null,a=e,r=null;for(const{node:i,token:o}of h(e,t))n=a,a=i,r=o;if(!n)throw new d(t);if(Array.isArray(n))try{const e=p(r,n);n.splice(e,1)}catch(s){throw new d(t)}else{if(!a)throw new d(t);delete n[r]}return e}function g(e,t,n){return y(e,t),f(e,t,n),e}function b(e,t,n){const a=m(e,t);return y(e,t),f(e,n,a),e}function v(e,t,n){return f(e,n,m(e,t)),e}function C(e,t,n){function a(e,t){const n=typeof e,r=typeof t;if(n!==r)return!1;switch(n){case u:{const n=Object.keys(e),r=Object.keys(t);return n.length===r.length&&n.every((n,s)=>n===r[s]&&a(e[n],t[n]))}default:return e===t}}const r=m(e,t);if(!a(n,r))throw new Error("test failed");return e}const _={add:(e,{path:t,value:n})=>f(e,t,n),copy:(e,{from:t,path:n})=>v(e,t,n),move:(e,{from:t,path:n})=>b(e,t,n),remove:(e,{path:t})=>y(e,t),replace:(e,{path:t,value:n})=>g(e,t,n),test:(e,{path:t,value:n})=>C(e,t,n)};function T(e,{op:t,...n}){const a=_[t];if(!a)throw new Error("unknown operation");return a(e,n)}function k(e,t){return t.reduce(T,e)}var S=n("25a9"),x=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"doc-topic"},[e.isTargetIDE?e._e():n("Nav",{attrs:{title:e.title,diffAvailability:e.diffAvailability,interfaceLanguage:e.interfaceLanguage,objcPath:e.objcPath,swiftPath:e.swiftPath,parentTopicIdentifiers:e.parentTopicIdentifiers,isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta,currentTopicTags:e.tags}}),n("main",{staticClass:"main",attrs:{id:"main",role:"main",tabindex:"0"}},[e._t("above-title"),n("Title",{attrs:{eyebrow:e.roleHeading}},[e._v(e._s(e.title))]),n("div",{staticClass:"container content-grid",class:{"full-width":e.hideSummary}},[n("Description",{attrs:{hasOverview:e.hasOverview}},[e.abstract?n("Abstract",{attrs:{content:e.abstract}}):e._e(),e.isRequirement?n("RequirementMetadata",{attrs:{defaultImplementationsCount:e.defaultImplementationsCount}}):e._e(),e.deprecationSummary&&e.deprecationSummary.length?n("Aside",{attrs:{kind:"deprecated"}},[n("ContentNode",{attrs:{content:e.deprecationSummary}})],1):e._e(),e.downloadNotAvailableSummary&&e.downloadNotAvailableSummary.length?n("Aside",{attrs:{kind:"note"}},[n("ContentNode",{attrs:{content:e.downloadNotAvailableSummary}})],1):e._e(),e.sampleCodeDownload?n("DownloadButton",{attrs:{action:e.sampleCodeDownload.action}}):e._e()],1),e.hideSummary?e._e():n("Summary",[e.shouldShowLanguageSwitcher?n("LanguageSwitcher",{attrs:{interfaceLanguage:e.interfaceLanguage,objcPath:e.objcPath,swiftPath:e.swiftPath}}):e._e(),e.platforms?n("Availability",{attrs:{platforms:e.platforms}}):e._e(),e.modules?n("TechnologyList",{attrs:{technologies:e.modules}}):e._e(),e.extendsTechnology?n("TechnologyList",{staticClass:"extends-technology",attrs:{title:"Extends",technologies:[{name:e.extendsTechnology}]}}):e._e(),e.onThisPageSections.length>1?n("OnThisPageNav",{attrs:{sections:e.onThisPageSections}}):e._e()],1),e.primaryContentSections&&e.primaryContentSections.length?n("PrimaryContent",{attrs:{conformance:e.conformance,sections:e.primaryContentSections}}):e._e()],1),e.topicSections?n("Topics",{attrs:{sections:e.topicSections,isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta}}):e._e(),e.defaultImplementationsSections?n("DefaultImplementations",{attrs:{sections:e.defaultImplementationsSections,isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta}}):e._e(),e.relationshipsSections?n("Relationships",{attrs:{sections:e.relationshipsSections}}):e._e(),e.seeAlsoSections?n("SeeAlso",{attrs:{sections:e.seeAlsoSections}}):e._e(),!e.isTargetIDE&&e.hasBetaContent?n("BetaLegalText"):e._e()],2)],1)},O=[],j=n("8649"),P=n("d8ce"),A=n("6842"),B=n("e3ab"),w=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("NavBase",{staticClass:"documentation-nav",attrs:{breakpoint:e.BreakpointName.medium,hasOverlay:!1,hasSolidBackground:"",hasNoBorder:e.hasNoBorder,isDark:e.isDark,hasFullWidthBorder:"","aria-label":"API Reference"}},[n("template",{slot:"default"},[e._t("title",(function(){return[e.rootLink?n("router-link",{staticClass:"nav-title-link",attrs:{to:e.rootLink}},[e._v(" Documentation ")]):n("span",{staticClass:"nav-title-link inactive"},[e._v("Documentation")])]}),null,{rootLink:e.rootLink,linkClass:"nav-title-link",inactiveClass:"inactive"})],2),n("template",{slot:"tray"},[n("Hierarchy",{attrs:{currentTopicTitle:e.title,isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta,parentTopicIdentifiers:e.hierarchyItems,currentTopicTags:e.currentTopicTags}}),e._t("tray-after",null,null,{breadcrumbCount:e.breadcrumbCount})],2),n("template",{slot:"after-content"},[e._t("after-content")],2)],2)},q=[],D=n("cbcf"),I=n("63b8"),L=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("NavMenuItems",{staticClass:"hierarchy",class:{"has-badge":e.hasBadge},attrs:{"aria-label":"Breadcrumbs"}},[e._l(e.collapsibleItems,(function(t){return n("HierarchyItem",{key:t.title,attrs:{isCollapsed:e.shouldCollapseItems,url:e.addQueryParamsToUrl(t.url)}},[e._v(" "+e._s(t.title)+" ")])})),e.shouldCollapseItems?n("HierarchyCollapsedItems",{attrs:{topics:e.collapsibleItems}}):e._e(),e._l(e.nonCollapsibleItems,(function(t){return n("HierarchyItem",{key:t.title,attrs:{url:e.addQueryParamsToUrl(t.url)}},[e._v(" "+e._s(t.title)+" ")])})),n("HierarchyItem",[e._v(" "+e._s(e.currentTopicTitle)+" "),n("template",{slot:"tags"},[e.isSymbolDeprecated?n("Badge",{attrs:{variant:"deprecated"}}):e.isSymbolBeta?n("Badge",{attrs:{variant:"beta"}}):e._e(),e._l(e.currentTopicTags,(function(t){return n("Badge",{key:t.type+"-"+t.text,attrs:{variant:t.type}},[e._v(" "+e._s(t.text)+" ")])}))],2)],2)],2)},$=[],E=n("d26a"),M=n("9b30"),R=function(){var e,t=this,n=t.$createElement,a=t._self._c||n;return a("span",{staticClass:"badge",class:(e={},e["badge-"+t.variant]=t.variant,e),attrs:{role:"presentation"}},[t._t("default",(function(){return[t._v(t._s(t.text))]}))],2)},N=[];const V={beta:"Beta",deprecated:"Deprecated"};var H={name:"Badge",props:{variant:{type:String,default:()=>""}},computed:{text:({variant:e})=>V[e]}},z=H,W=(n("3d27"),n("2877")),G=Object(W["a"])(z,R,N,!1,null,"2bfc9463",null),K=G.exports,F=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("li",{staticClass:"hierarchy-collapsed-items"},[n("InlineChevronRightIcon",{staticClass:"hierarchy-item-icon icon-inline"}),n("button",{ref:"btn",staticClass:"toggle",class:{focused:!e.collapsed},on:{click:e.toggleCollapsed}},[n("span",{staticClass:"indicator"},[n("EllipsisIcon",{staticClass:"icon-inline toggle-icon"})],1)]),n("ul",{ref:"dropdown",staticClass:"dropdown",class:{collapsed:e.collapsed}},e._l(e.topicsWithUrls,(function(t){return n("li",{key:t.title,staticClass:"dropdown-item"},[n("router-link",{staticClass:"nav-menu-link",attrs:{to:t.url}},[e._v(e._s(t.title))])],1)})),0)],1)},U=[],Q=n("34b0"),J=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"ellipsis-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"m12.439 7.777v-1.554h-1.554v1.554zm-4.662 0v-1.554h-1.554v1.554zm-4.662 0v-1.554h-1.554v1.554z"}})])},X=[],Y=n("be08"),Z={name:"EllipsisIcon",components:{SVGIcon:Y["a"]}},ee=Z,te=Object(W["a"])(ee,J,X,!1,null,null,null),ne=te.exports,ae={name:"HierarchyCollapsedItems",components:{EllipsisIcon:ne,InlineChevronRightIcon:Q["a"]},data:()=>({collapsed:!0}),props:{topics:{type:Array,required:!0}},watch:{collapsed(e,t){t&&!e?document.addEventListener("click",this.handleDocumentClick,!1):!t&&e&&document.removeEventListener("click",this.handleDocumentClick,!1)}},beforeDestroy(){document.removeEventListener("click",this.handleDocumentClick,!1)},computed:{topicsWithUrls:({$route:e,topics:t})=>t.map(t=>({...t,url:Object(E["b"])(t.url,e.query)}))},methods:{handleDocumentClick(e){const{target:t}=e,{collapsed:n,$refs:{btn:a,dropdown:r}}=this,s=!a.contains(t)&&!r.contains(t);!n&&s&&(this.collapsed=!0)},toggleCollapsed(){this.collapsed=!this.collapsed}}},re=ae,se=(n("78d5"),Object(W["a"])(re,F,U,!1,null,"45c48d1a",null)),ie=se.exports,oe=function(e,t){var n=t._c;return n(t.$options.components.NavMenuItemBase,{tag:"component",staticClass:"hierarchy-item",class:{collapsed:t.props.isCollapsed}},[n(t.$options.components.InlineChevronRightIcon,{tag:"component",staticClass:"hierarchy-item-icon icon-inline"}),t.props.url?n("router-link",{staticClass:"parent item nav-menu-link",attrs:{to:t.props.url}},[t._t("default")],2):[n("span",{staticClass:"current item"},[t._t("default")],2),t._t("tags")]],2)},ce=[],le=n("863d"),ue={name:"HierarchyItem",components:{NavMenuItemBase:le["a"],InlineChevronRightIcon:Q["a"]},props:{isCollapsed:Boolean,url:{type:String,required:!1}}},de=ue,pe=(n("252a"),Object(W["a"])(de,oe,ce,!0,null,"57182fdb",null)),he=pe.exports;const me=3;var fe={name:"Hierarchy",components:{Badge:K,NavMenuItems:M["a"],HierarchyCollapsedItems:ie,HierarchyItem:he},inject:{references:{default:()=>({})}},props:{isSymbolDeprecated:Boolean,isSymbolBeta:Boolean,currentTopicTitle:{type:String,required:!0},parentTopicIdentifiers:{type:Array,default:()=>[]},currentTopicTags:{type:Array,default:()=>[]}},computed:{parentTopics(){return this.parentTopicIdentifiers.map(e=>{const{title:t,url:n}=this.references[e];return{title:t,url:n}})},shouldCollapseItems(){return this.parentTopics.length+1>me},collapsibleItems:({parentTopics:e})=>e.slice(0,-1),nonCollapsibleItems:({parentTopics:e})=>e.slice(-1),hasBadge:({isSymbolDeprecated:e,isSymbolBeta:t,currentTopicTags:n})=>e||t||n.length},methods:{addQueryParamsToUrl(e){return Object(E["b"])(e,this.$route.query)}}},ye=fe,ge=(n("b1e0"),Object(W["a"])(ye,L,$,!1,null,"20e91056",null)),be=ge.exports,ve={name:"DocumentationNav",components:{NavBase:D["a"],Hierarchy:be},props:{title:{type:String,required:!1},parentTopicIdentifiers:{type:Array,required:!1},isSymbolBeta:{type:Boolean,required:!1},isSymbolDeprecated:{type:Boolean,required:!1},isDark:{type:Boolean,default:!1},hasNoBorder:{type:Boolean,default:!1},currentTopicTags:{type:Array,required:!0}},inject:{references:{default:()=>({})}},computed:{BreakpointName:()=>I["b"],breadcrumbCount:({hierarchyItems:e})=>e.length+1,rootHierarchyReference:({parentTopicIdentifiers:e,references:t})=>t[e[0]]||{},isRootTechnologyLink:({rootHierarchyReference:{kind:e}})=>"technologies"===e,rootLink:({isRootTechnologyLink:e,rootHierarchyReference:t,$route:n})=>e?{path:t.url,query:n.query}:null,hierarchyItems:({parentTopicIdentifiers:e,isRootTechnologyLink:t})=>t?e.slice(1):e}},Ce=ve,_e=(n("243c"),Object(W["a"])(Ce,w,q,!1,null,"324c15b2",null)),Te=_e.exports,ke=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"betainfo"},[n("div",{staticClass:"betainfo-container"},[n("GridRow",[n("GridColumn",{attrs:{span:{large:8,medium:8,small:12},isCentered:{large:!0,medium:!0,small:!0}}},[n("p",{staticClass:"betainfo-label"},[e._v("Beta Software")]),n("div",{staticClass:"betainfo-content"},[e._t("content",(function(){return[n("p",[e._v("This documentation refers to beta software and may be changed.")])]}))],2),e._t("after")],2)],1)],1)])},Se=[],xe=n("0f00"),Oe=n("620a"),je={name:"BetaLegalText",components:{GridColumn:Oe["a"],GridRow:xe["a"]}},Pe=je,Ae=(n("99a2"),Object(W["a"])(Pe,ke,Se,!1,null,"4edf30f4",null)),Be=Ae.exports,we=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("Section",{staticClass:"language",attrs:{role:"complementary","aria-label":"Language"}},[n("Title",[e._v("Language")]),n("LanguageSwitcherLink",{staticClass:"language-option swift",class:{active:e.swift.active},attrs:{url:e.swift.active?null:e.swift.url},on:{click:function(t){return e.chooseLanguage(e.swift)}}},[e._v(e._s(e.swift.name))]),n("LanguageSwitcherLink",{staticClass:"language-option objc",class:{active:e.objc.active},attrs:{url:e.objc.active?null:e.objc.url},on:{click:function(t){return e.chooseLanguage(e.objc)}}},[e._v(e._s(e.objc.name))])],1)},qe=[],De=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.url?n("a",{attrs:{href:e.url},on:{click:function(t){return t.preventDefault(),e.$emit("click")}}},[e._t("default")],2):n("span",[e._t("default")],2)},Ie=[],Le={name:"LanguageSwitcherLink",props:{url:[String,Object]}},$e=Le,Ee=Object(W["a"])($e,De,Ie,!1,null,null,null),Me=Ee.exports,Re=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"summary-section"},[e._t("default")],2)},Ne=[],Ve={name:"Section"},He=Ve,ze=(n("c292"),Object(W["a"])(He,Re,Ne,!1,null,"6185a550",null)),We=ze.exports,Ge=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("p",{staticClass:"title"},[e._t("default")],2)},Ke=[],Fe={name:"Title"},Ue=Fe,Qe=(n("4966"),Object(W["a"])(Ue,Ge,Ke,!1,null,"b903be56",null)),Je=Qe.exports,Xe={name:"LanguageSwitcher",components:{LanguageSwitcherLink:Me,Section:We,Title:Je},inject:{isTargetIDE:{default:()=>!1},store:{default(){return{setPreferredLanguage(){}}}}},props:{interfaceLanguage:{type:String,required:!0},objcPath:{type:String,required:!0},swiftPath:{type:String,required:!0}},computed:{objc:({interfaceLanguage:e,normalizePath:t,objcPath:n,$route:{query:a}})=>({...j["a"].objectiveC,active:j["a"].objectiveC.key.api===e,url:Object(E["b"])(t(n),{...a,language:j["a"].objectiveC.key.url})}),swift:({interfaceLanguage:e,normalizePath:t,swiftPath:n,$route:{query:a}})=>({...j["a"].swift,active:j["a"].swift.key.api===e,url:Object(E["b"])(t(n),{...a,language:void 0})})},methods:{chooseLanguage(e){this.isTargetIDE||this.store.setPreferredLanguage(e.key.url),this.$router.push(e.url)},normalizePath(e){return e.startsWith("/")?e:"/"+e}}},Ye=Xe,Ze=(n("0180"),Object(W["a"])(Ye,we,qe,!1,null,"0836085b",null)),et=Ze.exports,tt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentNode",e._b({staticClass:"abstract"},"ContentNode",e.$props,!1))},nt=[],at=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("BaseContentNode",e._b({},"BaseContentNode",e.$props,!1))},rt=[],st=n("5677"),it={name:"ContentNode",components:{BaseContentNode:st["a"]},props:st["a"].props,methods:st["a"].methods,BlockType:st["a"].BlockType,InlineType:st["a"].InlineType},ot=it,ct=(n("c18a"),Object(W["a"])(ot,at,rt,!1,null,"002affcc",null)),lt=ct.exports,ut={name:"Abstract",components:{ContentNode:lt},props:lt.props},dt=ut,pt=(n("374e"),Object(W["a"])(dt,tt,nt,!1,null,"702ec04e",null)),ht=pt.exports,mt=n("c081"),ft=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("TopicsTable",{attrs:{anchor:"default-implementations",title:"Default Implementations",isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta,sections:e.sections,wrapTitle:!0}})},yt=[],gt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentTable",{attrs:{anchor:e.anchor,title:e.title}},e._l(e.sectionsWithTopics,(function(t){return n("ContentTableSection",{key:t.title,attrs:{title:t.title}},[e.wrapTitle?n("template",{slot:"title"},[n("WordBreak",{staticClass:"title",attrs:{tag:"h3"}},[e._v(" "+e._s(t.title)+" ")])],1):e._e(),t.abstract?n("template",{slot:"abstract"},[n("ContentNode",{attrs:{content:t.abstract}})],1):e._e(),t.discussion?n("template",{slot:"discussion"},[n("ContentNode",{attrs:{content:t.discussion.content}})],1):e._e(),e._l(t.topics,(function(t){return n("TopicsLinkBlock",{key:t.identifier,staticClass:"topic",attrs:{topic:t,isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta}})}))],2)})),1)},bt=[],vt=n("7b1f"),Ct=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("OnThisPageSection",{staticClass:"contenttable alt-light",attrs:{anchor:e.anchor,title:e.title}},[n("div",{staticClass:"container"},[n("h2",{staticClass:"title"},[e._v(e._s(e.title))]),e._t("default")],2)])},_t=[],Tt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("section",{attrs:{id:e.anchor}},[e._t("default")],2)},kt=[],St={name:"OnThisPageSection",inject:{store:{default(){return{addOnThisPageSection(){}}}}},props:{anchor:{type:String,required:!0},title:{type:String,required:!0}},created(){this.store.addOnThisPageSection({anchor:this.anchor,title:this.title})}},xt=St,Ot=Object(W["a"])(xt,Tt,kt,!1,null,null,null),jt=Ot.exports,Pt={name:"ContentTable",components:{OnThisPageSection:jt},props:{anchor:{type:String,required:!0},title:{type:String,required:!0}}},At=Pt,Bt=(n("61ca"),Object(W["a"])(At,Ct,_t,!1,null,"1a780186",null)),wt=Bt.exports,qt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("Row",{staticClass:"contenttable-section"},[n("Column",{staticClass:"section-title",attrs:{span:e.span.title}},[e._t("title",(function(){return[n("h3",{staticClass:"title"},[e._v(e._s(e.title))])]}))],2),n("Column",{staticClass:"section-content",attrs:{span:e.span.content}},[e._t("abstract"),e._t("discussion"),e._t("default")],2)],1)},Dt=[],It={name:"ContentTableSection",components:{Column:Oe["a"],Row:xe["a"]},props:{title:{type:String,required:!0}},computed:{span(){return{title:{large:3,medium:3,small:12},content:{large:9,medium:9,small:12}}}}},Lt=It,$t=(n("813b"),Object(W["a"])(Lt,qt,Dt,!1,null,"bedf02be",null)),Et=$t.exports,Mt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"link-block",class:e.linkBlockClasses},[n(e.linkComponent,e._b({ref:"apiChangesDiff",tag:"component",staticClass:"link",class:e.linkClasses},"component",e.linkProps,!1),[e.topic.role?n("TopicLinkBlockIcon",{attrs:{role:e.topic.role}}):e._e(),e.topic.fragments?n("DecoratedTopicTitle",{attrs:{tokens:e.topic.fragments}}):n("WordBreak",{attrs:{tag:e.titleTag}},[e._v(e._s(e.topic.title))]),e.change?n("span",{staticClass:"visuallyhidden"},[e._v("- "+e._s(e.changeName))]):e._e()],1),e.hasAbstractElements?n("div",{staticClass:"abstract"},[e.topic.abstract?n("ContentNode",{attrs:{content:e.topic.abstract}}):e._e(),e.topic.ideTitle?n("div",{staticClass:"topic-keyinfo"},[e.topic.titleStyle===e.titleStyles.title?[n("strong",[e._v("Key:")]),e._v(" "+e._s(e.topic.name)+" ")]:e.topic.titleStyle===e.titleStyles.symbol?[n("strong",[e._v("Name:")]),e._v(" "+e._s(e.topic.ideTitle)+" ")]:e._e()],2):e._e(),e.topic.required||e.topic.defaultImplementations?n("RequirementMetadata",{staticClass:"topic-required",attrs:{defaultImplementationsCount:e.topic.defaultImplementations}}):e._e(),e.topic.conformance?n("ConditionalConstraints",{attrs:{constraints:e.topic.conformance.constraints,prefix:e.topic.conformance.availabilityPrefix}}):e._e()],1):e._e(),e.showDeprecatedBadge?n("Badge",{attrs:{variant:"deprecated"}}):e.showBetaBadge?n("Badge",{attrs:{variant:"beta"}}):e._e(),e._l(e.tags,(function(t){return n("Badge",{key:t.type+"-"+t.text,attrs:{variant:t.type}},[e._v(" "+e._s(t.text)+" ")])}))],2)},Rt=[],Nt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.icon?n("div",{staticClass:"topic-icon-wrapper"},[n(e.icon,{tag:"component",staticClass:"topic-icon"})],1):e._e()},Vt=[],Ht=n("a9f1"),zt=n("3b96"),Wt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"api-reference-icon",attrs:{viewBox:"0 0 14 14"}},[n("title",[e._v("API Reference")]),n("path",{attrs:{d:"M13 1v12h-12v-12zM12 2h-10v10h10z"}}),n("path",{attrs:{d:"M3 4h8v1h-8z"}}),n("path",{attrs:{d:"M3 6.5h8v1h-8z"}}),n("path",{attrs:{d:"M3 9h8v1h-8z"}})])},Gt=[],Kt={name:"APIReferenceIcon",components:{SVGIcon:Y["a"]}},Ft=Kt,Ut=Object(W["a"])(Ft,Wt,Gt,!1,null,null,null),Qt=Ut.exports,Jt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{attrs:{viewBox:"0 0 14 14"}},[n("title",[e._v("Web Service Endpoint")]),n("path",{attrs:{d:"M4.052 8.737h-1.242l-1.878 5.263h1.15l0.364-1.081h1.939l0.339 1.081h1.193zM2.746 12.012l0.678-2.071 0.653 2.071z"}}),n("path",{attrs:{d:"M11.969 8.737h1.093v5.263h-1.093v-5.263z"}}),n("path",{attrs:{d:"M9.198 8.737h-2.295v5.263h1.095v-1.892h1.12c0.040 0.003 0.087 0.004 0.134 0.004 0.455 0 0.875-0.146 1.217-0.394l-0.006 0.004c0.296-0.293 0.48-0.699 0.48-1.148 0-0.060-0.003-0.118-0.010-0.176l0.001 0.007c0.003-0.039 0.005-0.085 0.005-0.131 0-0.442-0.183-0.842-0.476-1.128l-0-0c-0.317-0.256-0.724-0.41-1.168-0.41-0.034 0-0.069 0.001-0.102 0.003l0.005-0zM9.628 11.014c-0.15 0.118-0.341 0.188-0.548 0.188-0.020 0-0.040-0.001-0.060-0.002l0.003 0h-1.026v-1.549h1.026c0.017-0.001 0.037-0.002 0.058-0.002 0.206 0 0.396 0.066 0.551 0.178l-0.003-0.002c0.135 0.13 0.219 0.313 0.219 0.515 0 0.025-0.001 0.050-0.004 0.074l0-0.003c0.002 0.020 0.003 0.044 0.003 0.068 0 0.208-0.083 0.396-0.219 0.534l0-0z"}}),n("path",{attrs:{d:"M13.529 4.981c0-1.375-1.114-2.489-2.489-2.49h-0l-0.134 0.005c-0.526-1.466-1.903-2.496-3.522-2.496-0.892 0-1.711 0.313-2.353 0.835l0.007-0.005c-0.312-0.243-0.709-0.389-1.14-0.389-1.030 0-1.865 0.834-1.866 1.864v0c0 0.001 0 0.003 0 0.004 0 0.123 0.012 0.242 0.036 0.358l-0.002-0.012c-0.94 0.37-1.593 1.27-1.593 2.323 0 1.372 1.11 2.485 2.482 2.49h8.243c1.306-0.084 2.333-1.164 2.333-2.484 0-0.001 0-0.002 0-0.003v0zM11.139 6.535h-8.319c-0.799-0.072-1.421-0.739-1.421-1.551 0-0.659 0.41-1.223 0.988-1.45l0.011-0.004 0.734-0.28-0.148-0.776-0.012-0.082v-0.088c0-0 0-0.001 0-0.001 0-0.515 0.418-0.933 0.933-0.933 0.216 0 0.416 0.074 0.574 0.197l-0.002-0.002 0.584 0.453 0.575-0.467 0.169-0.127c0.442-0.306 0.991-0.489 1.581-0.489 1.211 0 2.243 0.769 2.633 1.846l0.006 0.019 0.226 0.642 0.814-0.023 0.131 0.006c0.805 0.067 1.432 0.736 1.432 1.552 0 0.836-0.659 1.518-1.486 1.556l-0.003 0z"}})])},Xt=[],Yt={name:"EndpointIcon",components:{SVGIcon:Y["a"]}},Zt=Yt,en=Object(W["a"])(Zt,Jt,Xt,!1,null,null,null),tn=en.exports,nn=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M0 0.948h2.8v2.8h-2.8z"}}),n("path",{attrs:{d:"M11.2 10.252h2.8v2.8h-2.8z"}}),n("path",{attrs:{d:"M6.533 1.852h0.933v10.267h-0.933z"}}),n("path",{attrs:{d:"M2.8 1.852h4.667v0.933h-4.667z"}}),n("path",{attrs:{d:"M6.533 11.186h4.667v0.933h-4.667z"}})])},an=[],rn={name:"PathIcon",components:{SVGIcon:Y["a"]}},sn=rn,on=Object(W["a"])(sn,nn,an,!1,null,null,null),cn=on.exports,ln=n("8d2d"),un=n("66cd");const dn={[un["a"].article]:Ht["a"],[un["a"].collectionGroup]:Qt,[un["a"].learn]:cn,[un["a"].overview]:cn,[un["a"].project]:ln["a"],[un["a"].tutorial]:ln["a"],[un["a"].resources]:cn,[un["a"].sampleCode]:zt["a"],[un["a"].restRequestSymbol]:tn};var pn,hn,mn,fn,yn,gn,bn,vn,Cn={props:{role:{type:String,required:!0}},computed:{icon:({role:e})=>dn[e]}},_n=Cn,Tn=(n("1a47"),Object(W["a"])(_n,Nt,Vt,!1,null,"4d1e7968",null)),kn=Tn.exports,Sn=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("code",{staticClass:"decorated-title"},e._l(e.tokens,(function(t,a){return n(e.componentFor(t),{key:a,tag:"component",class:[e.classFor(t),e.emptyTokenClass(t)]},[e._v(e._s(t.text))])})),1)},xn=[],On={name:"ChangedToken",render(e){const{kind:t,tokens:n}=this;return e("span",{class:["token-"+t,"token-changed"]},n.map(t=>e(Qn,{props:t})))},props:{kind:{type:String,required:!0},tokens:{type:Array,required:!0}}},jn=On,Pn=Object(W["a"])(jn,pn,hn,!1,null,null,null),An=Pn.exports,Bn={name:"RawText",render(e){const{_v:t=(t=>e("span",t)),text:n}=this;return t(n)},props:{text:{type:String,required:!0}}},wn=Bn,qn=Object(W["a"])(wn,mn,fn,!1,null,null,null),Dn=qn.exports,In={name:"SyntaxToken",render(e){return e("span",{class:"token-"+this.kind},this.text)},props:{kind:{type:String,required:!0},text:{type:String,required:!0}}},Ln=In,$n=Object(W["a"])(Ln,yn,gn,!1,null,null,null),En=$n.exports,Mn=n("86d8"),Rn={name:"TypeIdentifierLink",inject:{references:{default(){return{}}}},render(e){const t="type-identifier-link",n=this.references[this.identifier];return n&&n.url?e(Mn["a"],{class:t,props:{url:n.url,kind:n.kind,role:n.role}},this.$slots.default):e("span",{class:t},this.$slots.default)},props:{identifier:{type:String,required:!0,default:()=>""}}},Nn=Rn,Vn=Object(W["a"])(Nn,bn,vn,!1,null,null,null),Hn=Vn.exports;const zn={attribute:"attribute",externalParam:"externalParam",genericParameter:"genericParameter",identifier:"identifier",internalParam:"internalParam",keyword:"keyword",label:"label",number:"number",string:"string",text:"text",typeIdentifier:"typeIdentifier",added:"added",removed:"removed"};var Wn,Gn,Kn={name:"DeclarationToken",render(e){const{kind:t,text:n,tokens:a}=this;switch(t){case zn.text:{const t={text:n};return e(Dn,{props:t})}case zn.typeIdentifier:{const t={identifier:this.identifier};return e(Hn,{props:t},[e(vt["a"],n)])}case zn.added:case zn.removed:return e(An,{props:{tokens:a,kind:t}});default:{const a={kind:t,text:n};return e(En,{props:a})}}},constants:{TokenKind:zn},props:{kind:{type:String,required:!0},identifier:{type:String,required:!1},text:{type:String,required:!1},tokens:{type:Array,required:!1,default:()=>[]}}},Fn=Kn,Un=(n("c36f"),Object(W["a"])(Fn,Wn,Gn,!1,null,"5caf1b5b",null)),Qn=Un.exports;const{TokenKind:Jn}=Qn.constants,Xn={decorator:"decorator",identifier:"identifier",label:"label"};var Yn={name:"DecoratedTopicTitle",components:{WordBreak:vt["a"]},props:{tokens:{type:Array,required:!0,default:()=>[]}},constants:{TokenKind:Jn},methods:{emptyTokenClass:({text:e})=>({"empty-token":" "===e}),classFor({kind:e}){switch(e){case Jn.externalParam:case Jn.identifier:return Xn.identifier;case Jn.label:return Xn.label;default:return Xn.decorator}},componentFor(e){return/^\s+$/.test(e.text)?"span":vt["a"]}}},Zn=Yn,ea=(n("dcf6"),Object(W["a"])(Zn,Sn,xn,!1,null,"06ec7395",null)),ta=ea.exports,na=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentNode",{staticClass:"conditional-constraints",attrs:{content:e.content}})},aa=[],ra={name:"ConditionalConstraints",components:{ContentNode:lt},props:{constraints:lt.props.content,prefix:lt.props.content},computed:{content:({constraints:e,prefix:t,space:n})=>t.concat(n).concat(e),space:()=>({type:lt.InlineType.text,text:" "})}},sa=ra,ia=(n("918a"),Object(W["a"])(sa,na,aa,!1,null,"1548fd90",null)),oa=ia.exports,ca=function(e,t){var n=t._c;return n("p",{staticClass:"requirement-metadata",class:t.data.staticClass},[n("strong",[t._v("Required.")]),t.props.defaultImplementationsCount?[t._v(" Default implementation"+t._s(t.props.defaultImplementationsCount>1?"s":"")+" provided. ")]:t._e()],2)},la=[],ua={name:"RequirementMetadata",props:{defaultImplementationsCount:{type:Number,default:0}}},da=ua,pa=Object(W["a"])(da,ca,la,!0,null,null,null),ha=pa.exports;const ma={added:"added",modified:"modified",deprecated:"deprecated"},fa=(ma.modified,ma.added,ma.deprecated,{[ma.modified]:"Modified",[ma.added]:"Added",[ma.deprecated]:"Deprecated"}),ya="has-multiple-lines";function ga(e){if(!e)return!1;const t=window.getComputedStyle(e.$el||e),n=(e.$el||e).offsetHeight,a=t.lineHeight?parseFloat(t.lineHeight):1,r=t.paddingTop?parseFloat(t.paddingTop):0,s=t.paddingBottom?parseFloat(t.paddingBottom):0,i=t.borderTopWidth?parseFloat(t.borderTopWidth):0,o=t.borderBottomWidth?parseFloat(t.borderBottomWidth):0,c=n-(r+s+i+o),l=c/a;return l>=2}const ba="latest_",va={xcode:{value:"xcode",label:"Xcode"},other:{value:"other",label:"Other"}},Ca={constants:{multipleLinesClass:ya},data(){return{multipleLinesClass:ya}},computed:{hasMultipleLinesAfterAPIChanges:({change:e,changeType:t,$refs:n})=>!(!e&&!t)&&ga(n.apiChangesDiff)}},_a={methods:{toVersionRange({platform:e,versions:t}){return`${e} ${t[0]} – ${e} ${t[1]}`},toOptionValue:e=>`${ba}${e}`,toScope:e=>e.slice(ba.length,e.length),getOptionsForDiffAvailability(e={}){return this.getOptionsForDiffAvailabilities([e])},getOptionsForDiffAvailabilities(e=[]){const t=e.reduce((e,t={})=>Object.keys(t).reduce((e,n)=>({...e,[n]:(e[n]||[]).concat(t[n])}),e),{}),n=Object.keys(t),a=n.reduce((e,n)=>{const a=t[n];return{...e,[n]:a.find(e=>e.platform===va.xcode.label)||a[0]}},{}),r=e=>({label:this.toVersionRange(a[e]),value:this.toOptionValue(e),platform:a[e].platform}),{sdk:s,beta:i,minor:o,major:c,...l}=a,u=[].concat(s?r("sdk"):[]).concat(i?r("beta"):[]).concat(o?r("minor"):[]).concat(c?r("major"):[]).concat(Object.keys(l).map(r));return this.splitOptionsPerPlatform(u)},changesClassesFor(e,t){const n=this.changeFor(e,t);return this.getChangesClasses(n)},getChangesClasses:e=>({["changed changed-"+e]:!!e}),changeFor(e,t){const{change:n}=(t||{})[e]||{};return n},splitOptionsPerPlatform(e){return e.reduce((e,t)=>{const n=t.platform===va.xcode.label?va.xcode.value:va.other.value;return e[n].push(t),e},{[va.xcode.value]:[],[va.other.value]:[]})},getChangeName(e){return fa[e]}},computed:{availableOptions({diffAvailability:e={},toOptionValue:t}){return new Set(Object.keys(e).map(t))}}},Ta={article:"article",symbol:"symbol"},ka={title:"title",symbol:"symbol"},Sa={link:"link"};var xa={name:"TopicsLinkBlock",components:{Badge:K,WordBreak:vt["a"],ContentNode:lt,TopicLinkBlockIcon:kn,DecoratedTopicTitle:ta,RequirementMetadata:ha,ConditionalConstraints:oa},inject:["store"],mixins:[_a,Ca],constants:{ReferenceType:Sa,TopicKind:Ta,TitleStyles:ka},props:{isSymbolBeta:Boolean,isSymbolDeprecated:Boolean,topic:{type:Object,required:!0,validator:e=>(!("abstract"in e)||Array.isArray(e.abstract))&&"string"===typeof e.identifier&&(e.type===Sa.link&&!e.kind||"string"===typeof e.kind)&&(e.type===Sa.link&&!e.role||"string"===typeof e.role)&&"string"===typeof e.title&&"string"===typeof e.url&&(!("defaultImplementations"in e)||"number"===typeof e.defaultImplementations)&&(!("required"in e)||"boolean"===typeof e.required)&&(!("conformance"in e)||"object"===typeof e.conformance)}},data(){return{state:this.store.state}},computed:{linkComponent:({topic:e})=>e.type===Sa.link?"a":"router-link",linkProps({topic:e}){const t=Object(E["b"])(e.url,this.$route.query);return e.type===Sa.link?{href:t}:{to:t}},linkBlockClasses:({changesClasses:e,hasAbstractElements:t,hasMultipleLinesAfterAPIChanges:n,multipleLinesClass:a})=>({"has-inline-element":!t,[a]:n,...!t&&e}),linkClasses:({changesClasses:e,deprecated:t,hasAbstractElements:n})=>({deprecated:t,"has-adjacent-elements":n,...n&&e}),changesClasses:({getChangesClasses:e,change:t})=>e(t),titleTag({topic:e}){if(e.titleStyle===ka.title)return e.ideTitle?"span":"code";switch(e.kind){case Ta.symbol:return"code";default:return"span"}},titleStyles:()=>ka,deprecated:({showDeprecatedBadge:e,topic:t})=>e||t.deprecated,showBetaBadge:({topic:e,isSymbolBeta:t})=>Boolean(!t&&e.beta),showDeprecatedBadge:({topic:e,isSymbolDeprecated:t})=>Boolean(!t&&e.deprecated),change({topic:{identifier:e},state:{apiChanges:t}}){return this.changeFor(e,t)},changeName:({change:e,getChangeName:t})=>t(e),hasAbstractElements:({topic:{abstract:e,conformance:t,required:n,defaultImplementations:a}}={})=>e&&e.length>0||t||n||a,tags:({topic:e})=>(e.tags||[]).slice(0,1)}},Oa=xa,ja=(n("f6d7"),Object(W["a"])(Oa,Mt,Rt,!1,null,"1e5f16e7",null)),Pa=ja.exports,Aa={name:"TopicsTable",inject:{references:{default(){return{}}}},components:{WordBreak:vt["a"],ContentTable:wt,TopicsLinkBlock:Pa,ContentNode:lt,ContentTableSection:Et},props:{isSymbolDeprecated:Boolean,isSymbolBeta:Boolean,sections:{type:Array,required:!0},title:{type:String,required:!1,default(){return"Topics"}},anchor:{type:String,required:!1,default(){return"topics"}},wrapTitle:{type:Boolean,default:!1}},computed:{sectionsWithTopics(){return this.sections.map(e=>({...e,topics:e.identifiers.reduce((e,t)=>this.references[t]?e.concat(this.references[t]):e,[])}))}}},Ba=Aa,wa=(n("0d16"),Object(W["a"])(Ba,gt,bt,!1,null,"3e48ad3a",null)),qa=wa.exports,Da={name:"DefaultImplementations",components:{TopicsTable:qa},props:{isSymbolDeprecated:Boolean,isSymbolBeta:Boolean,sections:qa.props.sections}},Ia=Da,La=Object(W["a"])(Ia,ft,yt,!1,null,null,null),$a=La.exports,Ea=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"description"},[e.$slots.default||e.hasOverview?e._e():n("p",{staticClass:"nodocumentation"},[e._v(" No overview available. ")]),e._t("default")],2)},Ma=[],Ra={name:"Description",props:{hasOverview:{type:Boolean,default:()=>!1}}},Na=Ra,Va=(n("1eff"),Object(W["a"])(Na,Ea,Ma,!1,null,"3b0e7cbb",null)),Ha=Va.exports,za=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("Section",{staticClass:"technologies",attrs:{role:"complementary","aria-label":e.computedTitle}},[n("Title",[e._v(e._s(e.computedTitle))]),n("List",e._l(e.technologies,(function(t){return n("Item",{key:t.name},[n("WordBreak",{staticClass:"name"},[e._v(e._s(t.name))]),e._l(t.relatedModules||[],(function(t){return n("WordBreak",{key:t,staticClass:"name"},[e._v(e._s(t)+" ")])}))],2)})),1)],1)},Wa=[],Ga=n("002d"),Ka=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ul",{staticClass:"summary-list"},[e._t("default")],2)},Fa=[],Ua={name:"List"},Qa=Ua,Ja=(n("9cb2"),Object(W["a"])(Qa,Ka,Fa,!1,null,"731de2f2",null)),Xa=Ja.exports,Ya=function(){var e,t=this,n=t.$createElement,a=t._self._c||n;return a("li",{ref:"apiChangesDiff",staticClass:"summary-list-item",class:(e={},e[t.multipleLinesClass]=t.hasMultipleLinesAfterAPIChanges,e)},[t._t("default")],2)},Za=[],er={name:"ListItem",mixins:[Ca],props:{change:{type:Boolean,default:()=>!1}}},tr=er,nr=(n("67dc"),Object(W["a"])(tr,Ya,Za,!1,null,"1648b0ac",null)),ar=nr.exports,rr={name:"TechnologyList",components:{Item:ar,List:Xa,Section:We,Title:Je,WordBreak:vt["a"]},props:{technologies:{type:Array,required:!0},title:{type:String,required:!1}},computed:{computedTitle:({title:e,defaultTitle:t})=>e||t,defaultTitle:({technologies:e})=>Object(Ga["d"])({en:{one:"Technology",other:"Technologies"}},e.length)}},sr=rr,ir=(n("8c8d"),Object(W["a"])(sr,za,Wa,!1,null,"4616e162",null)),or=ir.exports,cr=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("Section",{staticClass:"on-this-page"},[n("nav",{attrs:{"aria-labelledby":"on-this-page-title"}},[n("Title",{attrs:{id:"on-this-page-title"}},[e._v("On This Page")]),n("List",e._l(e.sectionsWithFragments,(function(t){return n("ListItem",{key:t.anchor},[n("router-link",{staticClass:"link",attrs:{to:e.buildUrl(t.fragment,e.$route.query)}},[n("span",{staticClass:"link-text"},[e._v(e._s(t.title))]),n("span",{staticClass:"icon-holder",attrs:{"aria-hidden":"true"}},[e._v(" "),n("InlineChevronDownCircleIcon",{staticClass:"link-icon icon-inline"})],1)])],1)})),1)],1)])},lr=[],ur=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"inline-chevron-down-circle-icon",attrs:{viewBox:"0 0 14 14"}},[n("polygon",{attrs:{points:"10.1 4 11 4.7 7 10 3 4.7 3.9 4 7 8 10.1 4"}})])},dr=[],pr={name:"InlineChevronDownCircleIcon",components:{SVGIcon:Y["a"]}},hr=pr,mr=Object(W["a"])(hr,ur,dr,!1,null,null,null),fr=mr.exports,yr={name:"OnThisPageNav",components:{InlineChevronDownCircleIcon:fr,List:Xa,ListItem:ar,Section:We,Title:Je},props:{sections:{type:Array,required:!0}},computed:{sectionsWithFragments(){return this.sections.map(({anchor:e,title:t})=>({anchor:e,fragment:"#"+e,title:t}))}},methods:{buildUrl:E["b"]}},gr=yr,br=(n("5245"),Object(W["a"])(gr,cr,lr,!1,null,"7e43087c",null)),vr=br.exports,Cr=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"primary-content"},e._l(e.sections,(function(t,a){return n(e.componentFor(t),e._b({key:a,tag:"component"},"component",e.propsFor(t),!1))})),1)},_r=[],Tr=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("OnThisPageSection",{attrs:{anchor:"possibleValues",title:"PossibleValues"}},[n("h2",[e._v("Possible Values")]),n("dl",{staticClass:"datalist"},[e._l(e.values,(function(t){return[n("dt",{key:t.name+":name",staticClass:"param-name"},[n("WordBreak",{attrs:{tag:"code"}},[e._v(e._s(t.name))])],1),t.content?n("dd",{key:t.name+":content",staticClass:"value-content"},[n("ContentNode",{attrs:{content:t.content}})],1):e._e()]}))],2)])},kr=[],Sr={name:"PossibleValues",components:{ContentNode:st["a"],OnThisPageSection:jt,WordBreak:vt["a"]},props:{values:{type:Array,required:!0}}},xr=Sr,Or=(n("719b"),Object(W["a"])(xr,Tr,kr,!1,null,null,null)),jr=Or.exports,Pr=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("OnThisPageSection",{attrs:{anchor:e.anchor,title:e.title}},[n("h2",[e._v(e._s(e.title))]),n("DeclarationSource",{attrs:{tokens:e.tokens}})],1)},Ar=[],Br=function(){var e,t=this,n=t.$createElement,a=t._self._c||n;return a("pre",{ref:"declarationGroup",staticClass:"source",class:(e={indented:t.simpleIndent},e[t.multipleLinesClass]=t.hasMultipleLines,e)},[a("code",{ref:"code"},t._l(t.tokens,(function(e,n){return a("Token",t._b({key:n},"Token",t.propsFor(e),!1))})),1)])},wr=[];function qr(e){const t=e.getElementsByClassName("token-identifier");if(t.length<2)return;const n=e.textContent.indexOf(":")+1;for(let a=1;a=a.length)return;const r=e.textContent.indexOf("(");for(let s=n;sObject(Ga["a"])(e)}},Nr=Rr,Vr=Object(W["a"])(Nr,Pr,Ar,!1,null,null,null),Hr=Vr.exports,zr=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("OnThisPageSection",{staticClass:"declaration",attrs:{anchor:"declaration",title:"Declaration"}},[n("h2",[e._v("Declaration")]),e.hasModifiedChanges?[n("DeclarationDiff",{class:[e.changeClasses,e.multipleLinesClass],attrs:{changes:e.declarationChanges,changeType:e.changeType}})]:e._l(e.declarations,(function(t,a){return n("DeclarationGroup",{key:a,class:e.changeClasses,attrs:{declaration:t,shouldCaption:e.hasPlatformVariants,changeType:e.changeType}})})),e.conformance?n("ConditionalConstraints",{attrs:{constraints:e.conformance.constraints,prefix:e.conformance.availabilityPrefix}}):e._e()],2)},Wr=[],Gr=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{ref:"apiChangesDiff",staticClass:"declaration-group",class:e.classes},[e.shouldCaption?n("p",{staticClass:"platforms"},[n("strong",[e._v(e._s(e.caption))])]):e._e(),n("Source",{attrs:{tokens:e.declaration.tokens,"simple-indent":e.isSwift&&!e.isCocoaApi,"smart-indent":e.isCocoaApi,language:e.interfaceLanguage}})],1)},Kr=[],Fr={name:"DeclarationGroup",components:{Source:Mr},mixins:[Ca],inject:{languages:{default:()=>new Set},interfaceLanguage:{default:()=>j["a"].swift.key.api}},props:{declaration:{type:Object,required:!0},shouldCaption:{type:Boolean,default:!1},changeType:{type:String,required:!1}},computed:{classes:({changeType:e,multipleLinesClass:t,hasMultipleLinesAfterAPIChanges:n})=>({["declaration-group--changed declaration-group--"+e]:e,[t]:n}),caption(){return this.declaration.platforms.join(", ")},isSwift:({interfaceLanguage:e})=>e===j["a"].swift.key.api,isCocoaApi:({languages:e})=>e.has(j["a"].objectiveC.key.api)}},Ur=Fr,Qr=(n("1d1c"),Object(W["a"])(Ur,Gr,Kr,!1,null,"1dc256a6",null)),Jr=Qr.exports,Xr=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"declaration-diff"},[n("div",{staticClass:"declaration-diff-current"},[n("div",{staticClass:"declaration-diff-version"},[e._v("Current")]),e._l(e.currentDeclarations,(function(t,a){return n("DeclarationGroup",{key:a,attrs:{declaration:t,"should-caption":e.currentDeclarations.length>1,changeType:e.changeType}})}))],2),n("div",{staticClass:"declaration-diff-previous"},[n("div",{staticClass:"declaration-diff-version"},[e._v("Previous")]),e._l(e.previousDeclarations,(function(t,a){return n("DeclarationGroup",{key:a,attrs:{declaration:t,"should-caption":e.previousDeclarations.length>1,changeType:e.changeType}})}))],2)])},Yr=[],Zr={name:"DeclarationDiff",components:{DeclarationGroup:Jr},props:{changes:{type:Object,required:!0},changeType:{type:String,required:!0}},computed:{previousDeclarations:({changes:e})=>e.declaration.previous||[],currentDeclarations:({changes:e})=>e.declaration.new||[]}},es=Zr,ts=(n("3dca"),Object(W["a"])(es,Xr,Yr,!1,null,"676d8556",null)),ns=ts.exports,as={name:"Declaration",components:{DeclarationDiff:ns,DeclarationGroup:Jr,ConditionalConstraints:oa,OnThisPageSection:jt},constants:{ChangeTypes:ma,multipleLinesClass:ya},inject:["identifier","store"],data:({store:{state:e}})=>({state:e,multipleLinesClass:ya}),props:{conformance:{type:Object,required:!1},declarations:{type:Array,required:!0}},computed:{hasPlatformVariants(){return this.declarations.length>1},hasModifiedChanges({declarationChanges:e}){if(!e||!e.declaration)return!1;const t=e.declaration;return!(!(t.new||[]).length||!(t.previous||[]).length)},declarationChanges:({state:{apiChanges:e},identifier:t})=>e&&e[t],changeType:({declarationChanges:e,hasModifiedChanges:t})=>{if(!e)return;const n=e.declaration;return n?t?ma.modified:e.change:e.change===ma.added?ma.added:void 0},changeClasses:({changeType:e})=>({["changed changed-"+e]:e})}},rs=as,ss=(n("4340"),Object(W["a"])(rs,zr,Wr,!1,null,"e39c4ee4",null)),is=ss.exports,os=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("OnThisPageSection",{staticClass:"details",attrs:{anchor:"details",title:"Details"}},[n("h2",[e._v("Details")]),n("dl",[e.isSymbol?[n("dt",{key:e.details.name+":name",staticClass:"detail-type"},[e._v(" Name ")]),n("dd",{key:e.details.ideTitle+":content",staticClass:"detail-content"},[e._v(" "+e._s(e.details.ideTitle)+" ")])]:e._e(),e.isTitle?[n("dt",{key:e.details.name+":key",staticClass:"detail-type"},[e._v(" Key ")]),n("dd",{key:e.details.ideTitle+":content",staticClass:"detail-content"},[e._v(" "+e._s(e.details.name)+" ")])]:e._e(),n("dt",{key:e.details.name+":type",staticClass:"detail-type"},[e._v(" Type ")]),n("dd",{staticClass:"detail-content"},[n("PropertyListKeyType",{attrs:{types:e.details.value}})],1)],2)])},cs=[],ls=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"type"},[e._v(e._s(e.typeOutput))])},us=[],ds={name:"PropertyListKeyType",props:{types:{type:Array,required:!0}},computed:{englishTypes(){return this.types.map(({arrayMode:e,baseType:t="*"})=>e?"array of "+this.pluralizeKeyType(t):t)},typeOutput(){return this.englishTypes.length>2?[this.englishTypes.slice(0,this.englishTypes.length-1).join(", "),this.englishTypes[this.englishTypes.length-1]].join(", or "):this.englishTypes.join(" or ")}},methods:{pluralizeKeyType(e){switch(e){case"dictionary":return"dictionaries";case"array":case"number":case"string":return e+"s";default:return e}}}},ps=ds,hs=(n("f7c0"),Object(W["a"])(ps,ls,us,!1,null,"791bac44",null)),ms=hs.exports,fs={name:"PropertyListKeyDetails",components:{PropertyListKeyType:ms,OnThisPageSection:jt},props:{details:{type:Object,required:!0}},computed:{isTitle(){return"title"===this.details.titleStyle&&this.details.ideTitle},isSymbol(){return"symbol"===this.details.titleStyle&&this.details.ideTitle}}},ys=fs,gs=(n("a705"),Object(W["a"])(ys,os,cs,!1,null,"61ef551b",null)),bs=gs.exports,vs=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentNode",e._b({},"ContentNode",e.$props,!1))},Cs=[],_s={name:"GenericContent",inject:{store:{default(){return{addOnThisPageSection(){}}}}},components:{ContentNode:lt},props:lt.props,methods:{...lt.methods,addOnThisPageSections(){const{isTopLevelHeading:e,store:t}=this;this.forEach(n=>{e(n)&&t.addOnThisPageSection({anchor:n.anchor,title:n.text})})},isTopLevelHeading(e){const{level:t,type:n}=e;return n===lt.BlockType.heading&&2===t}},created(){this.addOnThisPageSections()}},Ts=_s,ks=Object(W["a"])(Ts,vs,Cs,!1,null,null,null),Ss=ks.exports,xs=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("OnThisPageSection",{staticClass:"parameters",attrs:{anchor:"parameters",title:"Parameters"}},[n("h2",[e._v("Parameters")]),n("dl",[e._l(e.parameters,(function(t){return[n("dt",{key:t.name+":name",staticClass:"param-name"},[n("code",[e._v(e._s(t.name))])]),n("dd",{key:t.name+":content",staticClass:"param-content"},[n("ContentNode",{attrs:{content:t.content}})],1)]}))],2)])},Os=[],js={name:"Parameters",components:{ContentNode:lt,OnThisPageSection:jt},props:{parameters:{type:Array,required:!0}}},Ps=js,As=(n("09db"),Object(W["a"])(Ps,xs,Os,!1,null,"7bb7c035",null)),Bs=As.exports,ws=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("OnThisPageSection",{attrs:{anchor:e.anchor,title:e.title}},[n("h2",[e._v(e._s(e.title))]),n("ParametersTable",{staticClass:"property-table",attrs:{parameters:e.properties,changes:e.propertyChanges},scopedSlots:e._u([{key:"symbol",fn:function(t){var a=t.name,r=t.type,s=t.content,i=t.changes,o=t.deprecated;return[n("div",{staticClass:"property-name",class:{deprecated:o}},[n("WordBreak",{attrs:{tag:"code"}},[e._v(e._s(a))])],1),e.shouldShiftType({name:a,content:s})?e._e():n("PossiblyChangedType",{attrs:{type:r,changes:i.type}})]}},{key:"description",fn:function(t){var a=t.name,r=t.type,s=t.attributes,i=t.content,o=t.required,c=t.changes,l=t.deprecated;return[e.shouldShiftType({name:a,content:i})?n("PossiblyChangedType",{attrs:{type:r,changes:c.type}}):e._e(),l?[n("Badge",{staticClass:"property-deprecated",attrs:{variant:"deprecated"}}),e._v("  ")]:e._e(),n("PossiblyChangedRequiredAttribute",{attrs:{required:o,changes:c.required}}),i?n("ContentNode",{attrs:{content:i}}):e._e(),n("ParameterAttributes",{attrs:{attributes:s,changes:c.attributes}})]}}])})],1)},qs=[],Ds={inject:["identifier","store"],data:({store:{state:e}})=>({state:e}),computed:{apiChanges:({state:{apiChanges:e},identifier:t})=>e&&e[t]}},Is=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"parameters-table"},e._l(e.parameters,(function(t){return n("Row",{key:t[e.keyBy],staticClass:"param",class:e.changedClasses(t[e.keyBy])},[n("Column",{staticClass:"param-symbol",attrs:{span:{large:3,small:12}}},[e._t("symbol",null,null,e.getProps(t,e.changes[t[e.keyBy]]))],2),n("Column",{staticClass:"param-content",attrs:{span:{large:9,small:12}}},[e._t("description",null,null,e.getProps(t,e.changes[t[e.keyBy]]))],2)],1)})),1)},Ls=[],$s={name:"ParametersTable",components:{Row:xe["a"],Column:Oe["a"]},props:{parameters:{type:Array,required:!0},changes:{type:Object,default:()=>({})},keyBy:{type:String,default:"name"}},methods:{getProps(e,t={}){return{...e,changes:t}},changedClasses(e){const{changes:t}=this,{change:n}=t[e]||{};return{["changed changed-"+n]:n}}}},Es=$s,Ms=(n("85b8"),Object(W["a"])(Es,Is,Ls,!1,null,"1455266b",null)),Rs=Ms.exports,Ns=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"parameter-attributes"},[e.shouldRender(e.AttributeKind.default)?n("ParameterMetaAttribute",e._b({scopedSlots:e._u([{key:"default",fn:function(t){var a=t.attribute;return[e._v(" "+e._s(a.title||"Default")+": "),n("code",[e._v(e._s(a.value))])]}}],null,!1,4247435012)},"ParameterMetaAttribute",{kind:e.AttributeKind.default,attributes:e.attributesObject,changes:e.changes},!1)):e._e(),e.shouldRender(e.AttributeKind.minimum)?n("ParameterMetaAttribute",e._b({scopedSlots:e._u([{key:"default",fn:function(t){var a=t.attribute;return[e._v(" "+e._s(a.title||"Minimum")+": "),n("code",[e._v(e._s(a.value))])]}}],null,!1,455861177)},"ParameterMetaAttribute",{kind:e.AttributeKind.minimum,attributes:e.attributesObject,changes:e.changes},!1)):e._e(),e.shouldRender(e.AttributeKind.minimumExclusive)?n("ParameterMetaAttribute",e._b({scopedSlots:e._u([{key:"default",fn:function(t){var a=t.attribute;return[e._v(" "+e._s(a.title||"Minimum")+": "),n("code",[e._v("> "+e._s(a.value))])]}}],null,!1,3844501612)},"ParameterMetaAttribute",{kind:e.AttributeKind.minimumExclusive,attributes:e.attributesObject,changes:e.changes},!1)):e._e(),e.shouldRender(e.AttributeKind.maximum)?n("ParameterMetaAttribute",e._b({scopedSlots:e._u([{key:"default",fn:function(t){var a=t.attribute;return[e._v(" "+e._s(a.title||"Maximum")+": "),n("code",[e._v(e._s(a.value))])]}}],null,!1,19641767)},"ParameterMetaAttribute",{kind:e.AttributeKind.maximum,attributes:e.attributesObject,changes:e.changes},!1)):e._e(),e.shouldRender(e.AttributeKind.maximumExclusive)?n("ParameterMetaAttribute",e._b({scopedSlots:e._u([{key:"default",fn:function(t){var a=t.attribute;return[e._v(" "+e._s(a.title||"Maximum")+": "),n("code",[e._v("< "+e._s(a.value))])]}}],null,!1,4289558576)},"ParameterMetaAttribute",{kind:e.AttributeKind.maximumExclusive,attributes:e.attributesObject,changes:e.changes},!1)):e._e(),e.shouldRender(e.AttributeKind.allowedTypes)?n("ParameterMetaAttribute",e._b({scopedSlots:e._u([{key:"default",fn:function(t){var a=t.attribute;return[e._v(" "+e._s(e.fallbackToValues(a).length>1?"Possible types":"Type")+": "),n("code",[e._l(e.fallbackToValues(a),(function(t,r){return[e._l(t,(function(t,s){return[n("DeclarationToken",e._b({key:r+"-"+s},"DeclarationToken",t,!1)),r+11?"Possible values":"Value")+": "),n("code",[e._v(e._s(e.fallbackToValues(a).join(", ")))])]}}],null,!1,1507632019)},"ParameterMetaAttribute",{kind:e.AttributeKind.allowedValues,attributes:e.attributesObject,changes:e.changes},!1)):e._e()],1)},Vs=[],Hs=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("RenderChanged",{attrs:{value:e.attributes[e.kind],changes:e.changes[e.kind]},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.value;return n("div",{staticClass:"property-metadata"},[e._t("default",null,{attribute:a})],2)}}],null,!0)})},zs=[];const Ws={added:"change-added",removed:"change-removed"};var Gs,Ks,Fs={name:"RenderChanged",constants:{ChangedClasses:Ws},props:{changes:{type:Object,default:()=>({new:null,previous:null})},value:{type:[Object,Array,String,Boolean],default:null},wrapChanges:{type:Boolean,default:!0},renderSingleChange:{type:Boolean,default:!1}},render(e){const{value:t,changes:n={},wrapChanges:a,renderSingleChange:r}=this,{new:s,previous:i}=n,o=(t,n)=>{const r=this.$scopedSlots.default({value:t});return n&&a?e("div",{class:n},[r]):r?r[0]:null};if(s||i){const t=o(s,Ws.added),n=o(i,Ws.removed);return r?s&&!i?t:n:e("div",{class:"property-changegroup"},[s?t:"",i?n:""])}return o(t)}},Us=Fs,Qs=Object(W["a"])(Us,Gs,Ks,!1,null,null,null),Js=Qs.exports,Xs={name:"ParameterMetaAttribute",components:{RenderChanged:Js},props:{kind:{type:String,required:!0},attributes:{type:Object,required:!0},changes:{type:Object,default:()=>({})}}},Ys=Xs,Zs=(n("2822"),Object(W["a"])(Ys,Hs,zs,!1,null,"8590589e",null)),ei=Zs.exports;const ti={allowedTypes:"allowedTypes",allowedValues:"allowedValues",default:"default",maximum:"maximum",maximumExclusive:"maximumExclusive",minimum:"minimum",minimumExclusive:"minimumExclusive"};var ni={name:"ParameterAttributes",components:{ParameterMetaAttribute:ei,DeclarationToken:Qn},constants:{AttributeKind:ti},props:{attributes:{type:Array,default:()=>[]},changes:{type:Object,default:()=>({})}},computed:{AttributeKind:()=>ti,attributesObject:({attributes:e})=>e.reduce((e,t)=>({...e,[t.kind]:t}),{})},methods:{shouldRender(e){return Object.prototype.hasOwnProperty.call(this.attributesObject,e)},fallbackToValues:e=>{const t=e||[];return Array.isArray(t)?t:t.values}}},ai=ni,ri=Object(W["a"])(ai,Ns,Vs,!1,null,null,null),si=ri.exports,ii=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("RenderChanged",{attrs:{renderSingleChange:"",value:e.required,changes:e.changes},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.value;return a?n("span",{staticClass:"property-required"},[e._v("(Required) ")]):e._e()}}],null,!0)})},oi=[],ci={name:"PossiblyChangedRequiredAttribute",components:{RenderChanged:Js},props:{required:{type:Boolean,default:!1},changes:{type:Object,required:!1}}},li=ci,ui=(n("98af"),Object(W["a"])(li,ii,oi,!1,null,null,null)),di=ui.exports,pi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("RenderChanged",{attrs:{value:e.type,wrapChanges:!1,changes:e.changes},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.value;return n("DeclarationTokenGroup",{staticClass:"property-metadata property-type",attrs:{type:e.getValues(a)}})}}])})},hi=[],mi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.type&&e.type.length?n("div",[n("code",e._l(e.type,(function(t,a){return n("DeclarationToken",e._b({key:a},"DeclarationToken",t,!1))})),1)]):e._e()},fi=[],yi={name:"DeclarationTokenGroup",components:{DeclarationToken:Qn},props:{type:{type:Array,default:()=>[],required:!1}}},gi=yi,bi=Object(W["a"])(gi,mi,fi,!1,null,null,null),vi=bi.exports,Ci={name:"PossiblyChangedType",components:{DeclarationTokenGroup:vi,RenderChanged:Js},props:{type:{type:Array,required:!0},changes:{type:Object,required:!1}},methods:{getValues(e){return Array.isArray(e)?e:e.values}}},_i=Ci,Ti=(n("2f87"),Object(W["a"])(_i,pi,hi,!1,null,"0a648a1e",null)),ki=Ti.exports,Si={name:"PropertyTable",mixins:[Ds],components:{Badge:K,WordBreak:vt["a"],PossiblyChangedRequiredAttribute:di,PossiblyChangedType:ki,ParameterAttributes:si,ContentNode:lt,OnThisPageSection:jt,ParametersTable:Rs},props:{title:{type:String,required:!0},properties:{type:Array,required:!0}},computed:{anchor:({title:e})=>Object(Ga["a"])(e),propertyChanges:({apiChanges:e})=>(e||{}).properties},methods:{shouldShiftType:({content:e=[],name:t})=>!e.length&&t}},xi=Si,Oi=(n("fde4"),Object(W["a"])(xi,ws,qs,!1,null,"387d76c0",null)),ji=Oi.exports,Pi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("OnThisPageSection",{attrs:{anchor:e.anchor,title:e.title}},[n("h2",[e._v(e._s(e.title))]),n("ParametersTable",{attrs:{parameters:[e.bodyParam],changes:e.bodyChanges,keyBy:"key"},scopedSlots:e._u([{key:"symbol",fn:function(t){var a=t.type,r=t.content,s=t.changes,i=t.name;return[e.shouldShiftType({name:i,content:r})?e._e():n("PossiblyChangedType",{attrs:{type:a,changes:s.type}})]}},{key:"description",fn:function(t){var a=t.name,r=t.content,s=t.mimeType,i=t.type,o=t.changes;return[e.shouldShiftType({name:a,content:r})?n("PossiblyChangedType",{attrs:{type:i,changes:o.type}}):e._e(),r?n("ContentNode",{attrs:{content:r}}):e._e(),s?n("PossiblyChangedMimetype",{attrs:{mimetype:s,changes:o.mimetype,change:o.change}}):e._e()]}}])}),e.parts.length?[n("h3",[e._v("Parts")]),n("ParametersTable",{staticClass:"parts",attrs:{parameters:e.parts,changes:e.partsChanges},scopedSlots:e._u([{key:"symbol",fn:function(t){var a=t.name,r=t.type,s=t.content,i=t.changes;return[n("div",{staticClass:"part-name"},[n("WordBreak",{attrs:{tag:"code"}},[e._v(e._s(a))])],1),s?n("PossiblyChangedType",{attrs:{type:r,changes:i.type}}):e._e()]}},{key:"description",fn:function(t){var a=t.content,r=t.mimeType,s=t.required,i=t.type,o=t.attributes,c=t.changes;return[n("div",[a?e._e():n("PossiblyChangedType",{attrs:{type:i,changes:c.type}}),n("PossiblyChangedRequiredAttribute",{attrs:{required:s,changes:c.required}}),a?n("ContentNode",{attrs:{content:a}}):e._e(),r?n("PossiblyChangedMimetype",{attrs:{mimetype:r,changes:c.mimetype,change:c.change}}):e._e(),n("ParameterAttributes",{attrs:{attributes:o,changes:c.attributes}})],1)]}}],null,!1,3752543529)})]:e._e()],2)},Ai=[],Bi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("RenderChanged",{attrs:{changes:e.changeValues,value:e.mimetype},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.value;return n("div",{staticClass:"response-mimetype"},[e._v("Content-Type: "+e._s(a))])}}])})},wi=[],qi={name:"PossiblyChangedMimetype",components:{RenderChanged:Js},props:{mimetype:{type:String,required:!0},changes:{type:[Object,String],required:!1},change:{type:String,required:!1}},computed:{changeValues({change:e,changes:t}){return e===ma.modified&&"string"!==typeof t?t:void 0}}},Di=qi,Ii=(n("a91f"),Object(W["a"])(Di,Bi,wi,!1,null,"2faa6020",null)),Li=Ii.exports;const $i="restRequestBody";var Ei={name:"RestBody",mixins:[Ds],components:{PossiblyChangedMimetype:Li,PossiblyChangedRequiredAttribute:di,PossiblyChangedType:ki,WordBreak:vt["a"],ParameterAttributes:si,ContentNode:lt,OnThisPageSection:jt,ParametersTable:Rs},constants:{ChangesKey:$i},props:{bodyContentType:{type:Array,required:!0},content:{type:Array},mimeType:{type:String,required:!0},parts:{type:Array,default:()=>[]},title:{type:String,required:!0}},computed:{anchor:({title:e})=>Object(Ga["a"])(e),bodyParam:({bodyContentType:e,content:t,mimeType:n})=>({key:$i,content:t,mimeType:n,type:e}),bodyChanges:({apiChanges:e})=>e||{},partsChanges:({bodyChanges:e})=>(e[$i]||{}).parts},methods:{shouldShiftType:({content:e=[],name:t})=>!e.length&&t}},Mi=Ei,Ri=(n("f8d9"),Object(W["a"])(Mi,Pi,Ai,!1,null,"458971c5",null)),Ni=Ri.exports,Vi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("OnThisPageSection",{attrs:{anchor:e.anchor,title:e.title}},[n("h2",[e._v(e._s(e.title))]),n("ParametersTable",{attrs:{parameters:e.parameters,changes:e.parameterChanges},scopedSlots:e._u([{key:"symbol",fn:function(t){var a=t.name,r=t.type,s=t.content,i=t.changes,o=t.deprecated;return[n("div",{staticClass:"param-name",class:{deprecated:o}},[n("WordBreak",{attrs:{tag:"code"}},[e._v(e._s(a))])],1),e.shouldShiftType({content:s,name:a})?e._e():n("PossiblyChangedType",{attrs:{type:r,changes:i.type}})]}},{key:"description",fn:function(t){var a=t.name,r=t.type,s=t.content,i=t.required,o=t.attributes,c=t.changes,l=t.deprecated;return[n("div",[e.shouldShiftType({content:s,name:a})?n("PossiblyChangedType",{attrs:{type:r,changes:c.type}}):e._e(),l?[n("Badge",{staticClass:"param-deprecated",attrs:{variant:"deprecated"}}),e._v("  ")]:e._e(),n("PossiblyChangedRequiredAttribute",{attrs:{required:i,changes:c.required}}),s?n("ContentNode",{attrs:{content:s}}):e._e(),n("ParameterAttributes",{attrs:{attributes:o,changes:c}})],2)]}}])})],1)},Hi=[],zi={name:"RestParameters",mixins:[Ds],components:{Badge:K,PossiblyChangedType:ki,PossiblyChangedRequiredAttribute:di,ParameterAttributes:si,WordBreak:vt["a"],ContentNode:lt,OnThisPageSection:jt,ParametersTable:Rs},props:{title:{type:String,required:!0},parameters:{type:Array,required:!0}},computed:{anchor:({title:e})=>Object(Ga["a"])(e),parameterChanges:({apiChanges:e})=>(e||{}).restParameters},methods:{shouldShiftType:({content:e=[],name:t})=>!e.length&&t}},Wi=zi,Gi=(n("76d4"),Object(W["a"])(Wi,Vi,Hi,!1,null,"74e7f790",null)),Ki=Gi.exports,Fi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("OnThisPageSection",{attrs:{anchor:e.anchor,title:e.title}},[n("h2",[e._v(e._s(e.title))]),n("ParametersTable",{attrs:{parameters:e.responses,changes:e.propertyChanges,"key-by":"status"},scopedSlots:e._u([{key:"symbol",fn:function(t){var a=t.status,r=t.type,s=t.reason,i=t.content,o=t.changes;return[n("div",{staticClass:"response-name"},[n("code",[e._v(" "+e._s(a)+" "),n("span",{staticClass:"reason"},[e._v(e._s(s))])])]),e.shouldShiftType({content:i,reason:s,status:a})?e._e():n("PossiblyChangedType",{attrs:{type:r,changes:o.type}})]}},{key:"description",fn:function(t){var a=t.content,r=t.mimetype,s=t.reason,i=t.type,o=t.status,c=t.changes;return[e.shouldShiftType({content:a,reason:s,status:o})?n("PossiblyChangedType",{attrs:{type:i,changes:c.type}}):e._e(),n("div",{staticClass:"response-reason"},[n("code",[e._v(e._s(s))])]),a?n("ContentNode",{attrs:{content:a}}):e._e(),r?n("PossiblyChangedMimetype",{attrs:{mimetype:r,changes:c.mimetype,change:c.change}}):e._e()]}}])})],1)},Ui=[],Qi={name:"RestResponses",mixins:[Ds],components:{PossiblyChangedMimetype:Li,PossiblyChangedType:ki,ContentNode:lt,OnThisPageSection:jt,ParametersTable:Rs},props:{title:{type:String,required:!0},responses:{type:Array,required:!0}},computed:{anchor:({title:e})=>Object(Ga["a"])(e),propertyChanges:({apiChanges:e})=>(e||{}).restResponses},methods:{shouldShiftType:({content:e=[],reason:t,status:n})=>!(e.length||t)&&n}},Ji=Qi,Xi=(n("e335"),Object(W["a"])(Ji,Fi,Ui,!1,null,"57796e8c",null)),Yi=Xi.exports;const Zi={content:"content",declarations:"declarations",details:"details",parameters:"parameters",possibleValues:"possibleValues",properties:"properties",restBody:"restBody",restCookies:"restCookies",restEndpoint:"restEndpoint",restHeaders:"restHeaders",restParameters:"restParameters",restResponses:"restResponses"};var eo={name:"PrimaryContent",components:{Declaration:is,GenericContent:Ss,Parameters:Bs,PropertyListKeyDetails:bs,PropertyTable:ji,RestBody:Ni,RestEndpoint:Hr,RestParameters:Ki,RestResponses:Yi,PossibleValues:jr},constants:{SectionKind:Zi},props:{conformance:{type:Object,required:!1},sections:{type:Array,required:!0,validator:e=>e.every(({kind:e})=>Object.prototype.hasOwnProperty.call(Zi,e))}},computed:{span(){return{large:9,medium:9,small:12}}},methods:{componentFor(e){return{[Zi.content]:Ss,[Zi.declarations]:is,[Zi.details]:bs,[Zi.parameters]:Bs,[Zi.properties]:ji,[Zi.restBody]:Ni,[Zi.restParameters]:Ki,[Zi.restHeaders]:Ki,[Zi.restCookies]:Ki,[Zi.restEndpoint]:Hr,[Zi.restResponses]:Yi,[Zi.possibleValues]:jr}[e.kind]},propsFor(e){const{conformance:t}=this,{bodyContentType:n,content:a,declarations:r,details:s,items:i,kind:o,mimeType:c,parameters:l,title:u,tokens:d,values:p}=e;return{[Zi.content]:{content:a},[Zi.declarations]:{conformance:t,declarations:r},[Zi.details]:{details:s},[Zi.parameters]:{parameters:l},[Zi.possibleValues]:{values:p},[Zi.properties]:{properties:i,title:u},[Zi.restBody]:{bodyContentType:n,content:a,mimeType:c,parts:l,title:u},[Zi.restCookies]:{parameters:i,title:u},[Zi.restEndpoint]:{tokens:d,title:u},[Zi.restHeaders]:{parameters:i,title:u},[Zi.restParameters]:{parameters:i,title:u},[Zi.restResponses]:{responses:i,title:u}}[o]}}},to=eo,no=(n("812f"),Object(W["a"])(to,Cr,_r,!1,null,"011bef72",null)),ao=no.exports,ro=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentTable",{attrs:{anchor:"relationships",title:"Relationships"}},e._l(e.sectionsWithSymbols,(function(e){return n("Section",{key:e.type,attrs:{title:e.title}},[n("List",{attrs:{symbols:e.symbols,type:e.type}})],1)})),1)},so=[],io=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ul",{ref:"apiChangesDiff",staticClass:"relationships-list",class:e.classes},e._l(e.symbols,(function(t){return n("li",{key:t.identifier,staticClass:"relationships-item"},[t.url?n("router-link",{staticClass:"link",attrs:{to:e.buildUrl(t.url,e.$route.query)}},[n("WordBreak",{attrs:{tag:"code"}},[e._v(e._s(t.title))])],1):n("WordBreak",{attrs:{tag:"code"}},[e._v(e._s(t.title))]),t.conformance?n("ConditionalConstraints",{attrs:{constraints:t.conformance.constraints,prefix:t.conformance.conformancePrefix}}):e._e()],1)})),0)},oo=[];const co=3,lo={conformsTo:"conformance",inheritsFrom:"inheritance",inheritedBy:"inheritedBy"};var uo={name:"RelationshipsList",components:{ConditionalConstraints:oa,WordBreak:vt["a"]},inject:["store","identifier"],mixins:[_a,Ca],props:{symbols:{type:Array,required:!0},type:{type:String,required:!0}},data(){return{state:this.store.state}},computed:{classes({changeType:e,multipleLinesClass:t,hasMultipleLinesAfterAPIChanges:n}){return[{inline:this.shouldDisplayInline,column:!this.shouldDisplayInline,["changed changed-"+e]:!!e,[t]:n}]},hasAvailabilityConstraints(){return this.symbols.some(e=>!!(e.conformance||{}).constraints)},changes({identifier:e,state:{apiChanges:t}}){return(t||{})[e]||{}},changeType({changes:e,type:t}){const n=lo[t];if(e.change!==ma.modified)return e.change;const a=e[n];if(!a)return;const r=(e,t)=>e.map((e,n)=>[e,t[n]]),s=r(a.previous,a.new).some(([e,t])=>e.content?0===e.content.length&&t.content.length>0:!!t.content);return s?ma.added:ma.modified},shouldDisplayInline(){const{hasAvailabilityConstraints:e,symbols:t}=this;return t.length<=co&&!e}},methods:{buildUrl:E["b"]}},po=uo,ho=(n("2995"),Object(W["a"])(po,io,oo,!1,null,"e4fe9834",null)),mo=ho.exports,fo={name:"Relationships",inject:{references:{default(){return{}}}},components:{ContentTable:wt,List:mo,Section:Et},props:{sections:{type:Array,required:!0}},computed:{sectionsWithSymbols(){return this.sections.map(e=>({...e,symbols:e.identifiers.reduce((e,t)=>this.references[t]?e.concat(this.references[t]):e,[])}))}}},yo=fo,go=Object(W["a"])(yo,ro,so,!1,null,null,null),bo=go.exports,vo=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("Section",{staticClass:"availability",attrs:{role:"complementary","aria-label":"Availability"}},[n("Title",[e._v("Availability")]),n("List",{staticClass:"platform-list"},e._l(e.platforms,(function(t){return n("Item",{key:t.name,staticClass:"platform",class:e.changesClassesFor(t.name),attrs:{change:!!e.changeFor(t.name)}},[n("AvailabilityRange",{attrs:{deprecatedAt:t.deprecatedAt,introducedAt:t.introducedAt,platformName:t.name}}),t.deprecatedAt?n("Badge",{attrs:{variant:"deprecated"}}):t.beta?n("Badge",{attrs:{variant:"beta"}}):e._e()],1)})),1)],1)},Co=[],_o=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("span",{attrs:{role:"text","aria-label":e.ariaLabel,title:e.description}},[e._v(" "+e._s(e.text)+" ")])},To=[],ko={name:"AvailabilityRange",props:{deprecatedAt:{type:String,required:!1},introducedAt:{type:String,required:!0},platformName:{type:String,required:!0}},computed:{ariaLabel(){const{deprecatedAt:e,description:t,text:n}=this;return[n].concat(e?"Deprecated":[]).concat(t).join(", ")},description(){const{deprecatedAt:e,introducedAt:t,platformName:n}=this;return e?`Introduced in ${n} ${t} and deprecated in ${n} ${e}`:`Available on ${n} ${t} and later`},text(){const{deprecatedAt:e,introducedAt:t,platformName:n}=this;return e?`${n} ${t}–${e}`:`${n} ${t}+`}}},So=ko,xo=Object(W["a"])(So,_o,To,!1,null,null,null),Oo=xo.exports,jo={name:"Availability",mixins:[_a],inject:["identifier","store"],components:{Badge:K,AvailabilityRange:Oo,Item:ar,List:Xa,Section:We,Title:Je},props:{platforms:{type:Array,required:!0}},data(){return{state:this.store.state}},methods:{changeFor(e){const{identifier:t,state:{apiChanges:n}}=this,{availability:a={}}=(n||{})[t]||{},r=a[e];if(r)return r.deprecated?ma.deprecated:r.introduced&&!r.introduced.previous?ma.added:ma.modified}}},Po=jo,Ao=(n("bc10"),Object(W["a"])(Po,vo,Co,!1,null,"0c59731a",null)),Bo=Ao.exports,wo=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("TopicsTable",{attrs:{anchor:"see-also",title:"See Also",isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta,sections:e.sections}})},qo=[],Do={name:"SeeAlso",components:{TopicsTable:qa},props:{isSymbolDeprecated:Boolean,isSymbolBeta:Boolean,sections:qa.props.sections}},Io=Do,Lo=Object(W["a"])(Io,wo,qo,!1,null,null,null),$o=Lo.exports,Eo=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"summary"},[e._t("default")],2)},Mo=[],Ro={name:"Summary"},No=Ro,Vo=(n("179d"),Object(W["a"])(No,Eo,Mo,!1,null,"19bd58b6",null)),Ho=Vo.exports,zo=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"topictitle"},[e.eyebrow?n("span",{staticClass:"eyebrow"},[e._v(e._s(e.eyebrow))]):e._e(),n("WordBreak",{staticClass:"title",attrs:{tag:"h1"}},[e._t("default")],2)],1)},Wo=[],Go={name:"Title",components:{WordBreak:vt["a"]},props:{eyebrow:{type:String,required:!1}}},Ko=Go,Fo=(n("54bb"),Object(W["a"])(Ko,zo,Wo,!1,null,"e1f00c5e",null)),Uo=Fo.exports,Qo=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("TopicsTable",{attrs:{anchor:"topics",title:"Topics",isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta,sections:e.sections}})},Jo=[],Xo={name:"Topics",components:{TopicsTable:qa},props:{isSymbolDeprecated:Boolean,isSymbolBeta:Boolean,sections:qa.props.sections}},Yo=Xo,Zo=Object(W["a"])(Yo,Qo,Jo,!1,null,null,null),ec=Zo.exports,tc={name:"DocumentationTopic",mixins:[P["a"]],inject:{isTargetIDE:{default(){return!1}},store:{default(){return{reset(){},state:{onThisPageSections:[]}}}}},components:{Abstract:ht,Aside:B["a"],BetaLegalText:Be,ContentNode:lt,DefaultImplementations:$a,Description:Ha,DownloadButton:mt["a"],TechnologyList:or,LanguageSwitcher:et,Nav:Te,OnThisPageNav:vr,PrimaryContent:ao,Relationships:bo,RequirementMetadata:ha,Availability:Bo,SeeAlso:$o,Summary:Ho,Title:Uo,Topics:ec},props:{abstract:{type:Array,required:!1},conformance:{type:Object,required:!1},defaultImplementationsSections:{type:Array,required:!1},downloadNotAvailableSummary:{type:Array,required:!1},deprecationSummary:{type:Array,required:!1},diffAvailability:{type:Object,required:!1},modules:{type:Array,required:!1},hierarchy:{type:Object,default:()=>({})},interfaceLanguage:{type:String,required:!0},identifier:{type:String,required:!0},isRequirement:{type:Boolean,default:()=>!1},platforms:{type:Array,required:!1},primaryContentSections:{type:Array,required:!1},references:{type:Object,required:!0},relationshipsSections:{type:Array,required:!1},roleHeading:{type:String,required:!1},title:{type:String,required:!0},topicSections:{type:Array,required:!1},sampleCodeDownload:{type:Object,required:!1},seeAlsoSections:{type:Array,required:!1},variants:{type:Array,default:()=>[]},extendsTechnology:{type:String},tags:{type:Array,required:!0}},provide(){return{references:this.references,identifier:this.identifier,languages:new Set(Object.keys(this.languagePaths)),interfaceLanguage:this.interfaceLanguage}},data(){return{topicState:this.store.state}},computed:{defaultImplementationsCount(){return(this.defaultImplementationsSections||[]).reduce((e,t)=>e+t.identifiers.length,0)},hasOverview:({primaryContentSections:e=[]})=>e.filter(e=>e.kind===ao.constants.SectionKind.content).length>0,languagePaths:({variants:e})=>e.reduce((e,t)=>t.traits.reduce((e,n)=>n.interfaceLanguage?{...e,[n.interfaceLanguage]:(e[n.interfaceLanguage]||[]).concat(t.paths)}:e,e),{}),objcPath:({languagePaths:{[j["a"].objectiveC.key.api]:[e]=[]}={}})=>e,swiftPath:({languagePaths:{[j["a"].swift.key.api]:[e]=[]}={}})=>e,onThisPageSections(){return this.topicState.onThisPageSections},isSymbolBeta:({platforms:e})=>e&&e.length&&e.every(e=>e.beta),hasBetaContent:({platforms:e})=>e&&e.length&&e.some(e=>e.beta),isSymbolDeprecated:({platforms:e,deprecationSummary:t})=>t&&t.length>0||e&&e.length&&e.every(e=>e.deprecatedAt),pageTitle:({title:e})=>e,parentTopicIdentifiers:({hierarchy:{paths:[e=[]]=[]}})=>e,shouldShowLanguageSwitcher:({objcPath:e,swiftPath:t})=>e&&t,hideSummary:()=>Object(A["c"])(["features","docs","summary","hide"],!1)},methods:{normalizePath(e){return e.startsWith("/")?e:"/"+e}},created(){if(this.topicState.preferredLanguage===j["a"].objectiveC.key.url&&this.interfaceLanguage!==j["a"].objectiveC.key.api&&this.objcPath&&this.$route.query.language!==j["a"].objectiveC.key.url){const{query:e}=this.$route;this.$nextTick().then(()=>{this.$router.replace({path:this.normalizePath(this.objcPath),query:{...e,language:j["a"].objectiveC.key.url}})})}this.store.reset()}},nc=tc,ac=(n("d85c"),Object(W["a"])(nc,x,O,!1,null,"134e8272",null)),rc=ac.exports,sc=n("2b0e");const ic=()=>({[ma.modified]:0,[ma.added]:0,[ma.deprecated]:0});var oc={state:{apiChanges:null,apiChangesCounts:ic()},setAPIChanges(e){this.state.apiChanges=e},resetApiChanges(){this.state.apiChanges=null,this.state.apiChangesCounts=ic()},async updateApiChangesCounts(){await sc["default"].nextTick(),Object.keys(this.state.apiChangesCounts).forEach(e=>{this.state.apiChangesCounts[e]=this.countChangeType(e)})},countChangeType(e){if(document&&document.querySelectorAll){const t=`.changed-${e}:not(.changed-total)`;return document.querySelectorAll(t).length}return 0}},cc=n("d369");const{state:lc,...uc}=oc;var dc={state:{onThisPageSections:[],preferredLanguage:cc["a"].preferredLanguage,...lc},reset(){this.state.onThisPageSections=[],this.state.preferredLanguage=cc["a"].preferredLanguage,this.resetApiChanges()},addOnThisPageSection(e){this.state.onThisPageSections.push(e)},setPreferredLanguage(e){this.state.preferredLanguage=e,cc["a"].preferredLanguage=this.state.preferredLanguage},...uc},pc=n("8590"),hc=n("66c9"),mc=n("bb52"),fc=n("146e"),yc={name:"DocumentationTopic",components:{Topic:rc,CodeTheme:pc["a"]},mixins:[mc["a"],fc["a"]],data(){return{topicDataDefault:null,topicDataObjc:null}},computed:{store(){return dc},objcOverrides:({topicData:e})=>{const{variantOverrides:t=[]}=e||{},n=({interfaceLanguage:e})=>e===j["a"].objectiveC.key.api,a=({traits:e})=>e.some(n),r=t.find(a);return r?r.patch:null},topicData:{get(){return this.topicDataObjc?this.topicDataObjc:this.topicDataDefault},set(e){this.topicDataDefault=e}},topicKey:({$route:e,topicProps:t})=>[e.path,t.interfaceLanguage].join(),topicProps(){const{abstract:e,defaultImplementationsSections:t,deprecationSummary:n,downloadNotAvailableSummary:a,diffAvailability:r,hierarchy:s,identifier:{interfaceLanguage:i,url:o},metadata:{extends:c,conformance:l,modules:u,platforms:d,required:p,roleHeading:h,title:m="",tags:f=[]}={},primaryContentSections:y,relationshipsSections:g,references:b={},sampleCodeDownload:v,topicSections:C,seeAlsoSections:_,variantOverrides:T,variants:k}=this.topicData;return{abstract:e,conformance:l,defaultImplementationsSections:t,deprecationSummary:n,downloadNotAvailableSummary:a,diffAvailability:r,hierarchy:s,identifier:o,interfaceLanguage:i,isRequirement:p,modules:u,platforms:d,primaryContentSections:y,relationshipsSections:g,references:b,roleHeading:h,sampleCodeDownload:v,title:m,topicSections:C,seeAlsoSections:_,variantOverrides:T,variants:k,extendsTechnology:c,tags:f.slice(0,1)}}},methods:{applyObjcOverrides(){this.topicDataObjc=k(Object(S["a"])(this.topicData),this.objcOverrides)},handleCodeColorsChange(e){hc["a"].updateCodeColors(e)}},mounted(){this.$bridge.on("contentUpdate",e=>{this.topicData=e}),this.$bridge.on("codeColors",this.handleCodeColorsChange),this.$bridge.send({type:"requestCodeColors"})},provide(){return{store:this.store}},beforeDestroy(){this.$bridge.off("codeColors",this.handleCodeColorsChange)},beforeRouteEnter(e,t,n){Object(S["b"])(e,t,n).then(t=>n(n=>{n.topicData=t,e.query.language===j["a"].objectiveC.key.url&&n.objcOverrides&&n.applyObjcOverrides()})).catch(n)},beforeRouteUpdate(e,t,n){e.path===t.path&&e.query.language===j["a"].objectiveC.key.url&&this.objcOverrides?(this.applyObjcOverrides(),n()):Object(S["c"])(e,t)?Object(S["b"])(e,t,n).then(t=>{this.topicDataObjc=null,this.topicData=t,e.query.language===j["a"].objectiveC.key.url&&this.objcOverrides&&this.applyObjcOverrides(),n()}).catch(n):n()},created(){this.store.reset()},watch:{topicData(){this.$nextTick(()=>{this.newContentMounted()})}}},gc=yc,bc=Object(W["a"])(gc,a,r,!1,null,null,null);t["default"]=bc.exports},f8bd:function(e,t,n){},f8d9:function(e,t,n){"use strict";n("83f0")},fca4:function(e,t,n){"use strict";n("b876")},fde4:function(e,t,n){"use strict";n("f5b1")}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/documentation-topic~topic~tutorials-overview.c5a22800.js b/docs/swift-docc-render/js/documentation-topic~topic~tutorials-overview.c5a22800.js new file mode 100644 index 00000000..b8a8d6ac --- /dev/null +++ b/docs/swift-docc-render/js/documentation-topic~topic~tutorials-overview.c5a22800.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["documentation-topic~topic~tutorials-overview"],{"05a1":function(e,t,n){},"0f00":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"row"},[e._t("default")],2)},s=[],r={name:"GridRow"},a=r,o=(n("2224"),n("2877")),c=Object(o["a"])(a,i,s,!1,null,"be73599c",null);t["a"]=c.exports},1020:function(e,t){var n={exports:{}};function i(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach((function(t){var n=e[t];"object"!=typeof n||Object.isFrozen(n)||i(n)})),e}n.exports=i,n.exports.default=i;var s=n.exports;class r{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function a(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function o(e,...t){const n=Object.create(null);for(const i in e)n[i]=e[i];return t.forEach((function(e){for(const t in e)n[t]=e[t]})),n}const c="",l=e=>!!e.kind,u=(e,{prefix:t})=>{if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map((e,t)=>`${e}${"_".repeat(t+1)}`)].join(" ")}return`${t}${e}`};class d{constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=a(e)}openNode(e){if(!l(e))return;let t=e.kind;t=e.sublanguage?"language-"+t:u(t,{prefix:this.classPrefix}),this.span(t)}closeNode(e){l(e)&&(this.buffer+=c)}value(){return this.buffer}span(e){this.buffer+=``}}class h{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){while(this.closeNode());}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return"string"===typeof t?e.addText(t):t.children&&(e.openNode(t),t.children.forEach(t=>this._walk(e,t)),e.closeNode(t)),e}static _collapse(e){"string"!==typeof e&&e.children&&(e.children.every(e=>"string"===typeof e)?e.children=[e.children.join("")]:e.children.forEach(e=>{h._collapse(e)}))}}class p extends h{constructor(e){super(),this.options=e}addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())}addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){const e=new d(this,this.options);return e.value()}finalize(){return!0}}function g(e){return e?"string"===typeof e?e:e.source:null}function f(e){return v("(?=",e,")")}function m(e){return v("(?:",e,")*")}function b(e){return v("(?:",e,")?")}function v(...e){const t=e.map(e=>g(e)).join("");return t}function y(e){const t=e[e.length-1];return"object"===typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function w(...e){const t=y(e),n="("+(t.capture?"":"?:")+e.map(e=>g(e)).join("|")+")";return n}function x(e){return new RegExp(e.toString()+"|").exec("").length-1}function E(e,t){const n=e&&e.exec(t);return n&&0===n.index}const _=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function k(e,{joinWith:t}){let n=0;return e.map(e=>{n+=1;const t=n;let i=g(e),s="";while(i.length>0){const e=_.exec(i);if(!e){s+=i;break}s+=i.substring(0,e.index),i=i.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?s+="\\"+String(Number(e[1])+t):(s+=e[0],"("===e[0]&&n++)}return s}).map(e=>`(${e})`).join(t)}const j=/\b\B/,T="[a-zA-Z]\\w*",C="[a-zA-Z_]\\w*",S="\\b\\d+(\\.\\d+)?",O="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",N="\\b(0b[01]+)",L="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",I=(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=v(t,/.*\b/,e.binary,/\b.*/)),o({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},A={begin:"\\\\[\\s\\S]",relevance:0},B={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[A]},M={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[A]},$={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},R=function(e,t,n={}){const i=o({scope:"comment",begin:e,end:t,contains:[]},n);i.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const s=w("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return i.contains.push({begin:v(/[ ]+/,"(",s,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),i},D=R("//","$"),P=R("/\\*","\\*/"),F=R("#","$"),H={scope:"number",begin:S,relevance:0},q={scope:"number",begin:O,relevance:0},V={scope:"number",begin:N,relevance:0},U={begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[A,{begin:/\[/,end:/\]/,relevance:0,contains:[A]}]}]},z={scope:"title",begin:T,relevance:0},G={scope:"title",begin:C,relevance:0},W={begin:"\\.\\s*"+C,relevance:0},K=function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})};var Y=Object.freeze({__proto__:null,MATCH_NOTHING_RE:j,IDENT_RE:T,UNDERSCORE_IDENT_RE:C,NUMBER_RE:S,C_NUMBER_RE:O,BINARY_NUMBER_RE:N,RE_STARTERS_RE:L,SHEBANG:I,BACKSLASH_ESCAPE:A,APOS_STRING_MODE:B,QUOTE_STRING_MODE:M,PHRASAL_WORDS_MODE:$,COMMENT:R,C_LINE_COMMENT_MODE:D,C_BLOCK_COMMENT_MODE:P,HASH_COMMENT_MODE:F,NUMBER_MODE:H,C_NUMBER_MODE:q,BINARY_NUMBER_MODE:V,REGEXP_MODE:U,TITLE_MODE:z,UNDERSCORE_TITLE_MODE:G,METHOD_GUARD:W,END_SAME_AS_BEGIN:K});function X(e,t){const n=e.input[e.index-1];"."===n&&t.ignoreMatch()}function Z(e,t){void 0!==e.className&&(e.scope=e.className,delete e.className)}function J(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=X,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,void 0===e.relevance&&(e.relevance=0))}function Q(e,t){Array.isArray(e.illegal)&&(e.illegal=w(...e.illegal))}function ee(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function te(e,t){void 0===e.relevance&&(e.relevance=1)}const ne=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach(t=>{delete e[t]}),e.keywords=n.keywords,e.begin=v(n.beforeMatch,f(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},ie=["of","and","for","in","not","or","if","then","parent","list","value"],se="keyword";function re(e,t,n=se){const i=Object.create(null);return"string"===typeof e?s(n,e.split(" ")):Array.isArray(e)?s(n,e):Object.keys(e).forEach((function(n){Object.assign(i,re(e[n],t,n))})),i;function s(e,n){t&&(n=n.map(e=>e.toLowerCase())),n.forEach((function(t){const n=t.split("|");i[n[0]]=[e,ae(n[0],n[1])]}))}}function ae(e,t){return t?Number(t):oe(e)?0:1}function oe(e){return ie.includes(e.toLowerCase())}const ce={},le=e=>{console.error(e)},ue=(e,...t)=>{console.log("WARN: "+e,...t)},de=(e,t)=>{ce[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),ce[`${e}/${t}`]=!0)},he=new Error;function pe(e,t,{key:n}){let i=0;const s=e[n],r={},a={};for(let o=1;o<=t.length;o++)a[o+i]=s[o],r[o+i]=!0,i+=x(t[o-1]);e[n]=a,e[n]._emit=r,e[n]._multi=!0}function ge(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw le("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),he;if("object"!==typeof e.beginScope||null===e.beginScope)throw le("beginScope must be object"),he;pe(e,e.begin,{key:"beginScope"}),e.begin=k(e.begin,{joinWith:""})}}function fe(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw le("skip, excludeEnd, returnEnd not compatible with endScope: {}"),he;if("object"!==typeof e.endScope||null===e.endScope)throw le("endScope must be object"),he;pe(e,e.end,{key:"endScope"}),e.end=k(e.end,{joinWith:""})}}function me(e){e.scope&&"object"===typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,delete e.scope)}function be(e){me(e),"string"===typeof e.beginScope&&(e.beginScope={_wrap:e.beginScope}),"string"===typeof e.endScope&&(e.endScope={_wrap:e.endScope}),ge(e),fe(e)}function ve(e){function t(t,n){return new RegExp(g(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,t){t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),this.matchAt+=x(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const e=this.regexes.map(e=>e[1]);this.matcherRe=t(k(e,{joinWith:"|"}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e);if(!t)return null;const n=t.findIndex((e,t)=>t>0&&void 0!==e),i=this.matchIndexes[n];return t.splice(0,n),Object.assign(t,i)}}class i{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n;return this.rules.slice(e).forEach(([e,n])=>t.addRule(e,n)),t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex;let n=t.exec(e);if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}return n&&(this.regexIndex+=n.position+1,this.regexIndex===this.count&&this.considerAll()),n}}function s(e){const t=new i;return e.contains.forEach(e=>t.addRule(e.begin,{rule:e,type:"begin"})),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t}function r(n,i){const a=n;if(n.isCompiled)return a;[Z,ee,be,ne].forEach(e=>e(n,i)),e.compilerExtensions.forEach(e=>e(n,i)),n.__beforeBegin=null,[J,Q,te].forEach(e=>e(n,i)),n.isCompiled=!0;let o=null;return"object"===typeof n.keywords&&n.keywords.$pattern&&(n.keywords=Object.assign({},n.keywords),o=n.keywords.$pattern,delete n.keywords.$pattern),o=o||/\w+/,n.keywords&&(n.keywords=re(n.keywords,e.case_insensitive)),a.keywordPatternRe=t(o,!0),i&&(n.begin||(n.begin=/\B|\b/),a.beginRe=t(a.begin),n.end||n.endsWithParent||(n.end=/\B|\b/),n.end&&(a.endRe=t(a.end)),a.terminatorEnd=g(a.end)||"",n.endsWithParent&&i.terminatorEnd&&(a.terminatorEnd+=(n.end?"|":"")+i.terminatorEnd)),n.illegal&&(a.illegalRe=t(n.illegal)),n.contains||(n.contains=[]),n.contains=[].concat(...n.contains.map((function(e){return we("self"===e?n:e)}))),n.contains.forEach((function(e){r(e,a)})),n.starts&&r(n.starts,i),a.matcher=s(a),a}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=o(e.classNameAliases||{}),r(e)}function ye(e){return!!e&&(e.endsWithParent||ye(e.starts))}function we(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((function(t){return o(e,{variants:null},t)}))),e.cachedVariants?e.cachedVariants:ye(e)?o(e,{starts:e.starts?o(e.starts):null}):Object.isFrozen(e)?o(e):e}var xe="11.3.1";class Ee extends Error{constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}}const _e=a,ke=o,je=Symbol("nomatch"),Te=7,Ce=function(e){const t=Object.create(null),n=Object.create(null),i=[];let a=!0;const o="Could not find the language '{}', did you forget to load/include a language module?",c={disableAutodetect:!0,name:"Plain text",contains:[]};let l={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:p};function u(e){return l.noHighlightRe.test(e)}function d(e){let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"";const n=l.languageDetectRe.exec(t);if(n){const t=B(n[1]);return t||(ue(o.replace("{}",n[1])),ue("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}return t.split(/\s+/).find(e=>u(e)||B(e))}function h(e,t,n){let i="",s="";"object"===typeof t?(i=e,n=t.ignoreIllegals,s=t.language):(de("10.7.0","highlight(lang, code, ...args) has been deprecated."),de("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),s=e,i=t),void 0===n&&(n=!0);const r={code:i,language:s};P("before:highlight",r);const a=r.result?r.result:g(r.language,r.code,n);return a.code=r.code,P("after:highlight",a),a}function g(e,n,i,s){const c=Object.create(null);function u(e,t){return e.keywords[t]}function d(){if(!O.keywords)return void L.addText(I);let e=0;O.keywordPatternRe.lastIndex=0;let t=O.keywordPatternRe.exec(I),n="";while(t){n+=I.substring(e,t.index);const i=T.case_insensitive?t[0].toLowerCase():t[0],s=u(O,i);if(s){const[e,r]=s;if(L.addText(n),n="",c[i]=(c[i]||0)+1,c[i]<=Te&&(A+=r),e.startsWith("_"))n+=t[0];else{const n=T.classNameAliases[e]||e;L.addKeyword(t[0],n)}}else n+=t[0];e=O.keywordPatternRe.lastIndex,t=O.keywordPatternRe.exec(I)}n+=I.substr(e),L.addText(n)}function h(){if(""===I)return;let e=null;if("string"===typeof O.subLanguage){if(!t[O.subLanguage])return void L.addText(I);e=g(O.subLanguage,I,!0,N[O.subLanguage]),N[O.subLanguage]=e._top}else e=x(I,O.subLanguage.length?O.subLanguage:null);O.relevance>0&&(A+=e.relevance),L.addSublanguage(e._emitter,e.language)}function p(){null!=O.subLanguage?h():d(),I=""}function f(e,t){let n=1;while(void 0!==t[n]){if(!e._emit[n]){n++;continue}const i=T.classNameAliases[e[n]]||e[n],s=t[n];i?L.addKeyword(s,i):(I=s,d(),I=""),n++}}function m(e,t){return e.scope&&"string"===typeof e.scope&&L.openNode(T.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(L.addKeyword(I,T.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),I=""):e.beginScope._multi&&(f(e.beginScope,t),I="")),O=Object.create(e,{parent:{value:O}}),O}function b(e,t,n){let i=E(e.endRe,n);if(i){if(e["on:end"]){const n=new r(e);e["on:end"](t,n),n.isMatchIgnored&&(i=!1)}if(i){while(e.endsParent&&e.parent)e=e.parent;return e}}if(e.endsWithParent)return b(e.parent,t,n)}function v(e){return 0===O.matcher.regexIndex?(I+=e[0],1):(R=!0,0)}function y(e){const t=e[0],n=e.rule,i=new r(n),s=[n.__beforeBegin,n["on:begin"]];for(const r of s)if(r&&(r(e,i),i.isMatchIgnored))return v(t);return n.skip?I+=t:(n.excludeBegin&&(I+=t),p(),n.returnBegin||n.excludeBegin||(I=t)),m(n,e),n.returnBegin?0:t.length}function w(e){const t=e[0],i=n.substr(e.index),s=b(O,e,i);if(!s)return je;const r=O;O.endScope&&O.endScope._wrap?(p(),L.addKeyword(t,O.endScope._wrap)):O.endScope&&O.endScope._multi?(p(),f(O.endScope,e)):r.skip?I+=t:(r.returnEnd||r.excludeEnd||(I+=t),p(),r.excludeEnd&&(I=t));do{O.scope&&L.closeNode(),O.skip||O.subLanguage||(A+=O.relevance),O=O.parent}while(O!==s.parent);return s.starts&&m(s.starts,e),r.returnEnd?0:t.length}function _(){const e=[];for(let t=O;t!==T;t=t.parent)t.scope&&e.unshift(t.scope);e.forEach(e=>L.openNode(e))}let k={};function j(t,s){const r=s&&s[0];if(I+=t,null==r)return p(),0;if("begin"===k.type&&"end"===s.type&&k.index===s.index&&""===r){if(I+=n.slice(s.index,s.index+1),!a){const t=new Error(`0 width match regex (${e})`);throw t.languageName=e,t.badRule=k.rule,t}return 1}if(k=s,"begin"===s.type)return y(s);if("illegal"===s.type&&!i){const e=new Error('Illegal lexeme "'+r+'" for mode "'+(O.scope||"")+'"');throw e.mode=O,e}if("end"===s.type){const e=w(s);if(e!==je)return e}if("illegal"===s.type&&""===r)return 1;if($>1e5&&$>3*s.index){const e=new Error("potential infinite loop, way more iterations than matches");throw e}return I+=r,r.length}const T=B(e);if(!T)throw le(o.replace("{}",e)),new Error('Unknown language: "'+e+'"');const C=ve(T);let S="",O=s||C;const N={},L=new l.__emitter(l);_();let I="",A=0,M=0,$=0,R=!1;try{for(O.matcher.considerAll();;){$++,R?R=!1:O.matcher.considerAll(),O.matcher.lastIndex=M;const e=O.matcher.exec(n);if(!e)break;const t=n.substring(M,e.index),i=j(t,e);M=e.index+i}return j(n.substr(M)),L.closeAllNodes(),L.finalize(),S=L.toHTML(),{language:e,value:S,relevance:A,illegal:!1,_emitter:L,_top:O}}catch(D){if(D.message&&D.message.includes("Illegal"))return{language:e,value:_e(n),illegal:!0,relevance:0,_illegalBy:{message:D.message,index:M,context:n.slice(M-100,M+100),mode:D.mode,resultSoFar:S},_emitter:L};if(a)return{language:e,value:_e(n),illegal:!1,relevance:0,errorRaised:D,_emitter:L,_top:O};throw D}}function y(e){const t={value:_e(e),illegal:!1,relevance:0,_top:c,_emitter:new l.__emitter(l)};return t._emitter.addText(e),t}function x(e,n){n=n||l.languages||Object.keys(t);const i=y(e),s=n.filter(B).filter($).map(t=>g(t,e,!1));s.unshift(i);const r=s.sort((e,t)=>{if(e.relevance!==t.relevance)return t.relevance-e.relevance;if(e.language&&t.language){if(B(e.language).supersetOf===t.language)return 1;if(B(t.language).supersetOf===e.language)return-1}return 0}),[a,o]=r,c=a;return c.secondBest=o,c}function _(e,t,i){const s=t&&n[t]||i;e.classList.add("hljs"),e.classList.add("language-"+s)}function k(e){let t=null;const n=d(e);if(u(n))return;if(P("before:highlightElement",{el:e,language:n}),e.children.length>0&&(l.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/issues/2886"),console.warn(e)),l.throwUnescapedHTML)){const t=new Ee("One of your code blocks includes unescaped HTML.",e.innerHTML);throw t}t=e;const i=t.textContent,s=n?h(i,{language:n,ignoreIllegals:!0}):x(i);e.innerHTML=s.value,_(e,n,s.language),e.result={language:s.language,re:s.relevance,relevance:s.relevance},s.secondBest&&(e.secondBest={language:s.secondBest.language,relevance:s.secondBest.relevance}),P("after:highlightElement",{el:e,result:s,text:i})}function j(e){l=ke(l,e)}const T=()=>{O(),de("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function C(){O(),de("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let S=!1;function O(){if("loading"===document.readyState)return void(S=!0);const e=document.querySelectorAll(l.cssSelector);e.forEach(k)}function N(){S&&O()}function L(n,i){let s=null;try{s=i(e)}catch(r){if(le("Language definition for '{}' could not be registered.".replace("{}",n)),!a)throw r;le(r),s=c}s.name||(s.name=n),t[n]=s,s.rawDefinition=i.bind(null,e),s.aliases&&M(s.aliases,{languageName:n})}function I(e){delete t[e];for(const t of Object.keys(n))n[t]===e&&delete n[t]}function A(){return Object.keys(t)}function B(e){return e=(e||"").toLowerCase(),t[e]||t[n[e]]}function M(e,{languageName:t}){"string"===typeof e&&(e=[e]),e.forEach(e=>{n[e.toLowerCase()]=t})}function $(e){const t=B(e);return t&&!t.disableAutodetect}function R(e){e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{e["before:highlightBlock"](Object.assign({block:t.el},t))}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{e["after:highlightBlock"](Object.assign({block:t.el},t))})}function D(e){R(e),i.push(e)}function P(e,t){const n=e;i.forEach((function(e){e[n]&&e[n](t)}))}function F(e){return de("10.7.0","highlightBlock will be removed entirely in v12.0"),de("10.7.0","Please use highlightElement now."),k(e)}"undefined"!==typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",N,!1),Object.assign(e,{highlight:h,highlightAuto:x,highlightAll:O,highlightElement:k,highlightBlock:F,configure:j,initHighlighting:T,initHighlightingOnLoad:C,registerLanguage:L,unregisterLanguage:I,listLanguages:A,getLanguage:B,registerAliases:M,autoDetection:$,inherit:ke,addPlugin:D}),e.debugMode=function(){a=!1},e.safeMode=function(){a=!0},e.versionString=xe,e.regex={concat:v,lookahead:f,either:w,optional:b,anyNumberOfTimes:m};for(const r in Y)"object"===typeof Y[r]&&s(Y[r]);return Object.assign(e,Y),e};var Se=Ce({});e.exports=Se,Se.HighlightJS=Se,Se.default=Se},1417:function(e,t,n){var i={"./markdown":["84cb","highlight-js-custom-markdown"],"./markdown.js":["84cb","highlight-js-custom-markdown"],"./swift":["81c8","highlight-js-custom-swift"],"./swift.js":["81c8","highlight-js-custom-swift"]};function s(e){if(!n.o(i,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=i[e],s=t[0];return n.e(t[1]).then((function(){return n(s)}))}s.keys=function(){return Object.keys(i)},s.id="1417",e.exports=s},"146e":function(e,t,n){"use strict";var i=n("3908"),s=n("8a61");t["a"]={mixins:[s["a"]],async mounted(){this.$route.hash&&(await Object(i["a"])(8),this.scrollToElement(this.$route.hash))}}},2224:function(e,t,n){"use strict";n("b392")},"25a9":function(e,t,n){"use strict";n.d(t,"b",(function(){return m})),n.d(t,"c",(function(){return b})),n.d(t,"a",(function(){return v}));var i=n("748c"),s=n("d26a");const r={major:0,minor:2,patch:0};function a({major:e,minor:t,patch:n}){return[e,t,n].join(".")}const o=a(r);function c(e){return`[Swift-DocC-Render] The render node version for this page has a higher minor version (${e}) than Swift-DocC-Render supports (${o}). Compatibility is not guaranteed.`}const l=e=>`[Swift-DocC-Render] The render node version for this page (${e}) has a different major version component than Swift-DocC-Render supports (${o}). Compatibility is not guaranteed.`;function u(e){const{major:t,minor:n}=e,{major:i,minor:s}=r;return t!==i?l(a(e)):n>s?c(a(e)):""}function d(e){if(!e)return;const t=u(e);t&&console.warn(t)}var h=n("6842");class p extends Error{constructor(e){super("Unable to fetch data"),this.route=e}}async function g(e,t={}){function n(e){return("ide"!==Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET||0!==e.status)&&!e.ok}const i=new URL(e,window.location.href),r=Object(s["c"])(t);r&&(i.search=r);const a=await fetch(i.href);if(n(a))throw a;const o=await a.json();return d(o.schemaVersion),o}function f(e){const t=e.replace(/\/$/,"");return Object(i["c"])([h["a"],"data",t])+".json"}async function m(e,t,n){const i=f(e.path);let s;try{s=await g(i,e.query)}catch(r){if("ide"===Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET)throw console.error(r),!1;r.status&&404===r.status?n({name:"not-found",params:[e.path]}):n(new p(e))}return s}function b(e,t){return!Object(s["a"])(e,t)}function v(e){return JSON.parse(JSON.stringify(e))}},"2ab3":function(e,t,n){var i={"./bash":["f0f8","highlight-js-bash"],"./bash.js":["f0f8","highlight-js-bash"],"./c":["1fe5","highlight-js-c"],"./c.js":["1fe5","highlight-js-c"],"./cpp":["0209","highlight-js-cpp"],"./cpp.js":["0209","highlight-js-cpp"],"./css":["ee8c","highlight-js-css"],"./css.js":["ee8c","highlight-js-css"],"./diff":["48b8","highlight-js-diff"],"./diff.js":["48b8","highlight-js-diff"],"./http":["c01d","highlight-js-http"],"./http.js":["c01d","highlight-js-http"],"./java":["332f","highlight-js-java"],"./java.js":["332f","highlight-js-java"],"./javascript":["4dd1","highlight-js-javascript"],"./javascript.js":["4dd1","highlight-js-javascript"],"./json":["5ad2","highlight-js-json"],"./json.js":["5ad2","highlight-js-json"],"./llvm":["7c30","highlight-js-llvm"],"./llvm.js":["7c30","highlight-js-llvm"],"./markdown":["04b0","highlight-js-markdown"],"./markdown.js":["04b0","highlight-js-markdown"],"./objectivec":["9bf2","highlight-js-objectivec"],"./objectivec.js":["9bf2","highlight-js-objectivec"],"./perl":["6a51","highlight-js-perl"],"./perl.js":["6a51","highlight-js-perl"],"./php":["2907","highlight-js-php"],"./php.js":["2907","highlight-js-php"],"./python":["9510","highlight-js-python"],"./python.js":["9510","highlight-js-python"],"./ruby":["82cb","highlight-js-ruby"],"./ruby.js":["82cb","highlight-js-ruby"],"./scss":["6113","highlight-js-scss"],"./scss.js":["6113","highlight-js-scss"],"./shell":["b65b","highlight-js-shell"],"./shell.js":["b65b","highlight-js-shell"],"./swift":["2a39","highlight-js-swift"],"./swift.js":["2a39","highlight-js-swift"],"./xml":["8dcb","highlight-js-xml"],"./xml.js":["8dcb","highlight-js-xml"]};function s(e){if(!n.o(i,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=i[e],s=t[0];return n.e(t[1]).then((function(){return n.t(s,7)}))}s.keys=function(){return Object.keys(i)},s.id="2ab3",e.exports=s},"2d80":function(e,t,n){"use strict";n("3705")},"30b0":function(e,t,n){},"34b0":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"inline-chevron-right-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M2.964 1.366l0.649-0.76 7.426 6.343-7.423 6.445-0.655-0.755 6.545-5.683-6.542-5.59z"}})])},s=[],r=n("be08"),a={name:"InlineChevronRightIcon",components:{SVGIcon:r["a"]}},o=a,c=n("2877"),l=Object(c["a"])(o,i,s,!1,null,null,null);t["a"]=l.exports},3705:function(e,t,n){},"3b8f":function(e,t,n){},"47cc":function(e,t,n){},"4c7a":function(e,t,n){},"502c":function(e,t,n){"use strict";n("e1d1")},"50fc":function(e,t,n){},"52e4":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("WordBreak",{attrs:{tag:"code"}},[e._t("default")],2)},s=[],r=n("7b1f"),a={name:"CodeVoice",components:{WordBreak:r["a"]}},o=a,c=(n("8c92"),n("2877")),l=Object(c["a"])(o,i,s,!1,null,"05f4a5b7",null);t["a"]=l.exports},5677:function(e,t,n){"use strict";var i=n("e3ab"),s=n("7b69"),r=n("52e4"),a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"DictionaryExample"},[e._t("default"),n("CollapsibleCodeListing",{attrs:{content:e.example.content,showLineNumbers:""}})],2)},o=[],c=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"collapsible-code-listing",class:{"single-line":1===e.content[0].code.length}},[n("pre",[n("div",e._l(this.content,(function(t,i){return n("div",{key:i,class:["container-general",{collapsible:!0===t.collapsible},{collapsed:!0===t.collapsible&&e.collapsed}]},e._l(t.code,(function(t,i){return n("code",{key:i,staticClass:"code-line-container"},[e._v("\n "),n("div",{directives:[{name:"show",rawName:"v-show",value:e.showLineNumbers,expression:"showLineNumbers"}],staticClass:"code-number"}),e._v("\n "),n("div",{staticClass:"code-line"},[e._v(e._s(t))]),e._v("\n ")])})),0)})),0)])])},l=[],u={name:"CollapsibleCodeListing",props:{collapsed:{type:Boolean,required:!1},content:{type:Array,required:!0},showLineNumbers:{type:Boolean,default:()=>!0}}},d=u,h=(n("c919"),n("2877")),p=Object(h["a"])(d,c,l,!1,null,"369467b5",null),g=p.exports,f={name:"DictionaryExample",components:{CollapsibleCodeListing:g},props:{example:{type:Object,required:!0}}},m=f,b=Object(h["a"])(m,a,o,!1,null,null,null),v=b.exports,y=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("Row",{staticClass:"endpoint-example"},[n("Column",{staticClass:"example-code"},[e._t("default"),n("Tabnav",{model:{value:e.currentTab,callback:function(t){e.currentTab=t},expression:"currentTab"}},[n("TabnavItem",{attrs:{value:e.Tab.request}},[e._v(e._s(e.Tab.request))]),n("TabnavItem",{attrs:{value:e.Tab.response}},[e._v(e._s(e.Tab.response))])],1),n("div",{staticClass:"output"},[e.isCurrent(e.Tab.request)?n("div",{staticClass:"code"},[n("CollapsibleCodeListing",e._b({attrs:{collapsed:e.isCollapsed,showLineNumbers:""}},"CollapsibleCodeListing",e.request,!1))],1):e._e(),e.isCurrent(e.Tab.response)?n("div",{staticClass:"code"},[n("CollapsibleCodeListing",e._b({attrs:{collapsed:e.isCollapsed,showLineNumbers:""}},"CollapsibleCodeListing",e.response,!1))],1):e._e()]),e.isCollapsible?n("div",{staticClass:"controls"},[e.isCollapsed?n("a",{staticClass:"toggle",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.showMore.apply(null,arguments)}}},[n("InlinePlusCircleSolidIcon",{staticClass:"control-icon icon-inline"}),e._v(" More ")],1):n("a",{staticClass:"toggle",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.showLess.apply(null,arguments)}}},[n("InlineMinusCircleSolidIcon",{staticClass:"control-icon icon-inline"}),e._v(" Less ")],1)]):e._e()],2)],1)},w=[],x=n("0f00"),E=n("620a"),_=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("nav",{staticClass:"tabnav"},[n("ul",{staticClass:"tabnav-items"},[e._t("default")],2)])},k=[];const j="tabnavData";var T={name:"Tabnav",constants:{ProvideKey:j},provide(){const e={selectTab:this.selectTab};return Object.defineProperty(e,"activeTab",{enumerable:!0,get:()=>this.value}),{[j]:e}},props:{value:{type:String,required:!0}},methods:{selectTab(e){this.$emit("input",e)}}},C=T,S=(n("bab1"),Object(h["a"])(C,_,k,!1,null,"42371214",null)),O=S.exports,N=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("li",{staticClass:"tabnav-item"},[n("a",{staticClass:"tabnav-link",class:{active:e.isActive},attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.tabnavData.selectTab(e.value)}}},[e._t("default")],2)])},L=[],I={name:"TabnavItem",inject:{tabnavData:{default:{activeTab:null,selectTab:()=>{}}}},props:{value:{type:String,default:""}},computed:{isActive({tabnavData:e,value:t}){return e.activeTab===t}}},A=I,B=(n("c064"),Object(h["a"])(A,N,L,!1,null,"723a9588",null)),M=B.exports,$=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"inline-plus-circle-solid-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M7.005 0.5h-0.008c-1.791 0.004-3.412 0.729-4.589 1.9l0-0c-1.179 1.177-1.908 2.803-1.908 4.6 0 3.59 2.91 6.5 6.5 6.5s6.5-2.91 6.5-6.5c0-3.587-2.906-6.496-6.492-6.5h-0zM4.005 7.52v-1h2.5v-2.51h1v2.51h2.5v1h-2.501v2.49h-1v-2.49z"}})])},R=[],D=n("be08"),P={name:"InlinePlusCircleSolidIcon",components:{SVGIcon:D["a"]}},F=P,H=Object(h["a"])(F,$,R,!1,null,null,null),q=H.exports,V=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"inline-minus-circle-solid-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"m6.98999129.48999129c3.58985091 0 6.50000001 2.91014913 6.50000001 6.5 0 3.58985091-2.9101491 6.50000001-6.50000001 6.50000001-3.58985087 0-6.5-2.9101491-6.5-6.50000001 0-3.58985087 2.91014913-6.5 6.5-6.5zm3 6.02001742h-6v1h6z","fill-rule":"evenodd"}})])},U=[],z={name:"InlineMinusCircleSolidIcon",components:{SVGIcon:D["a"]}},G=z,W=Object(h["a"])(G,V,U,!1,null,null,null),K=W.exports;const Y={request:"Request",response:"Response"};var X={name:"EndpointExample",components:{InlineMinusCircleSolidIcon:K,InlinePlusCircleSolidIcon:q,TabnavItem:M,Tabnav:O,CollapsibleCodeListing:g,Row:x["a"],Column:E["a"]},constants:{Tab:Y},props:{request:{type:Object,required:!0},response:{type:Object,required:!0}},data(){return{isCollapsed:!0,currentTab:Y.request}},computed:{Tab:()=>Y,isCollapsible:({response:e,request:t,currentTab:n})=>{const i={[Y.request]:t.content,[Y.response]:e.content}[n]||[];return i.some(({collapsible:e})=>e)}},methods:{isCurrent(e){return this.currentTab===e},showMore(){this.isCollapsed=!1},showLess(){this.isCollapsed=!0}}},Z=X,J=(n("9a2b"),Object(h["a"])(Z,y,w,!1,null,"6197ce3f",null)),Q=J.exports,ee=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("figure",{attrs:{id:e.anchor}},[e._t("default")],2)},te=[],ne={name:"Figure",props:{anchor:{type:String,required:!0}}},ie=ne,se=(n("57ea"),Object(h["a"])(ie,ee,te,!1,null,"7be42fb4",null)),re=se.exports,ae=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("figcaption",{staticClass:"caption"},[n("strong",[e._v(e._s(e.title))]),e._v(" "),e._t("default")],2)},oe=[],ce={name:"FigureCaption",props:{title:{type:String,required:!0}}},le=ce,ue=(n("e7fb"),Object(h["a"])(le,ae,oe,!1,null,"0bcb8b58",null)),de=ue.exports,he=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ImageAsset",{attrs:{alt:e.alt,variants:e.variants}})},pe=[],ge=n("8bd9"),fe={name:"InlineImage",components:{ImageAsset:ge["a"]},props:{alt:{type:String,default:""},variants:{type:Array,required:!0}}},me=fe,be=(n("cb92"),Object(h["a"])(me,he,pe,!1,null,"3a939631",null)),ve=be.exports,ye=n("86d8"),we=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"table-wrapper"},[n("table",[e._t("default")],2)])},xe=[],Ee={name:"Table"},_e=Ee,ke=(n("72af"),n("90f3"),Object(h["a"])(_e,we,xe,!1,null,"358dcd5e",null)),je=ke.exports,Te=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("s",[e._t("default")],2)},Ce=[],Se={name:"StrikeThrough"},Oe=Se,Ne=(n("830f"),Object(h["a"])(Oe,Te,Ce,!1,null,"eb91ce54",null)),Le=Ne.exports;const Ie={aside:"aside",codeListing:"codeListing",endpointExample:"endpointExample",heading:"heading",orderedList:"orderedList",paragraph:"paragraph",table:"table",termList:"termList",unorderedList:"unorderedList",dictionaryExample:"dictionaryExample"},Ae={codeVoice:"codeVoice",emphasis:"emphasis",image:"image",inlineHead:"inlineHead",link:"link",newTerm:"newTerm",reference:"reference",strong:"strong",text:"text",superscript:"superscript",subscript:"subscript",strikethrough:"strikethrough"},Be={both:"both",column:"column",none:"none",row:"row"};function Me(e,t){const n=n=>n.map(Me(e,t)),a=t=>t.map(t=>e("li",{},n(t.content))),o=(t,i=Be.none)=>{switch(i){case Be.both:{const[i,...s]=t;return[e("thead",{},[e("tr",{},i.map(t=>e("th",{attrs:{scope:"col"}},n(t))))]),e("tbody",{},s.map(([t,...i])=>e("tr",{},[e("th",{attrs:{scope:"row"}},n(t)),...i.map(t=>e("td",{},n(t)))])))]}case Be.column:return[e("tbody",{},t.map(([t,...i])=>e("tr",{},[e("th",{attrs:{scope:"row"}},n(t)),...i.map(t=>e("td",{},n(t)))])))];case Be.row:{const[i,...s]=t;return[e("thead",{},[e("tr",{},i.map(t=>e("th",{attrs:{scope:"col"}},n(t))))]),e("tbody",{},s.map(t=>e("tr",{},t.map(t=>e("td",{},n(t))))))]}default:return[e("tbody",{},t.map(t=>e("tr",{},t.map(t=>e("td",{},n(t))))))]}},c=({metadata:{abstract:t,anchor:i,title:s},...r})=>e(re,{props:{anchor:i}},[...s&&t&&t.length?[e(de,{props:{title:s}},n(t))]:[],n([r])]);return function(l){switch(l.type){case Ie.aside:{const t={kind:l.style,name:l.name};return e(i["a"],{props:t},n(l.content))}case Ie.codeListing:{if(l.metadata&&l.metadata.anchor)return c(l);const t={syntax:l.syntax,fileType:l.fileType,content:l.code,showLineNumbers:l.showLineNumbers};return e(s["a"],{props:t})}case Ie.endpointExample:{const t={request:l.request,response:l.response};return e(Q,{props:t},n(l.summary||[]))}case Ie.heading:return e("h"+l.level,{attrs:{id:l.anchor}},l.text);case Ie.orderedList:return e("ol",{attrs:{start:l.start}},a(l.items));case Ie.paragraph:return e("p",{},n(l.inlineContent));case Ie.table:return l.metadata&&l.metadata.anchor?c(l):e(je,{},o(l.rows,l.header));case Ie.termList:return e("dl",{},l.items.map(({term:t,definition:i})=>[e("dt",{},n(t.inlineContent)),e("dd",{},n(i.content))]));case Ie.unorderedList:return e("ul",{},a(l.items));case Ie.dictionaryExample:{const t={example:l.example};return e(v,{props:t},n(l.summary||[]))}case Ae.codeVoice:return e(r["a"],{},l.code);case Ae.emphasis:case Ae.newTerm:return e("em",n(l.inlineContent));case Ae.image:{if(l.metadata&&l.metadata.anchor)return c(l);const n=t[l.identifier];return n?e(ve,{props:{alt:n.alt,variants:n.variants}}):null}case Ae.link:return e("a",{attrs:{href:l.destination}},l.title);case Ae.reference:{const i=t[l.identifier];if(!i)return null;const s=l.overridingTitleInlineContent||i.titleInlineContent,r=l.overridingTitle||i.title;return e(ye["a"],{props:{url:i.url,kind:i.kind,role:i.role,isActive:l.isActive,ideTitle:i.ideTitle,titleStyle:i.titleStyle}},s?n(s):r)}case Ae.strong:case Ae.inlineHead:return e("strong",n(l.inlineContent));case Ae.text:return l.text;case Ae.superscript:return e("sup",n(l.inlineContent));case Ae.subscript:return e("sub",n(l.inlineContent));case Ae.strikethrough:return e(Le,n(l.inlineContent));default:return null}}}var $e,Re,De={name:"ContentNode",constants:{TableHeaderStyle:Be},render:function(e){return e(this.tag,{class:"content"},this.content.map(Me(e,this.references),this))},inject:{references:{default(){return{}}}},props:{content:{type:Array,required:!0},tag:{type:String,default:()=>"div"}},methods:{map(e){function t(n=[]){return n.map(n=>{switch(n.type){case Ie.aside:return e({...n,content:t(n.content)});case Ie.dictionaryExample:return e({...n,summary:t(n.summary)});case Ie.paragraph:case Ae.emphasis:case Ae.strong:case Ae.inlineHead:case Ae.superscript:case Ae.subscript:case Ae.strikethrough:case Ae.newTerm:return e({...n,inlineContent:t(n.inlineContent)});case Ie.orderedList:case Ie.unorderedList:return e({...n,items:n.items.map(e=>({...e,content:t(e.content)}))});case Ie.table:return e({...n,rows:n.rows.map(e=>e.map(t))});case Ie.termList:return e({...n,items:n.items.map(e=>({...e,term:{inlineContent:t(e.term.inlineContent)},definition:{content:t(e.definition.content)}}))});default:return e(n)}})}return t(this.content)},forEach(e){function t(n=[]){n.forEach(n=>{switch(e(n),n.type){case Ie.aside:t(n.content);break;case Ie.paragraph:case Ae.emphasis:case Ae.strong:case Ae.inlineHead:case Ae.newTerm:case Ae.superscript:case Ae.subscript:case Ae.strikethrough:t(n.inlineContent);break;case Ie.orderedList:case Ie.unorderedList:n.items.forEach(e=>t(e.content));break;case Ie.dictionaryExample:t(n.summary);break;case Ie.table:n.rows.forEach(e=>{e.forEach(t)});break;case Ie.termList:n.items.forEach(e=>{t(e.term.inlineContent),t(e.definition.content)});break}})}return t(this.content)}},BlockType:Ie,InlineType:Ae},Pe=De,Fe=Object(h["a"])(Pe,$e,Re,!1,null,null,null);t["a"]=Fe.exports},"57ea":function(e,t,n){"use strict";n("971b")},"598a":function(e,t,n){},"620a":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"col",class:e.classes},[e._t("default")],2)},s=[];const r=0,a=12,o=new Set(["large","medium","small"]),c=e=>({type:Object,default:()=>({}),validator:t=>Object.keys(t).every(n=>o.has(n)&&e(t[n]))}),l=c(e=>"boolean"===typeof e),u=c(e=>"number"===typeof e&&e>=r&&e<=a);var d={name:"GridColumn",props:{isCentered:l,isUnCentered:l,span:{...u,default:()=>({large:a})}},computed:{classes:function(){return{["large-"+this.span.large]:void 0!==this.span.large,["medium-"+this.span.medium]:void 0!==this.span.medium,["small-"+this.span.small]:void 0!==this.span.small,"large-centered":!!this.isCentered.large,"medium-centered":!!this.isCentered.medium,"small-centered":!!this.isCentered.small,"large-uncentered":!!this.isUnCentered.large,"medium-uncentered":!!this.isUnCentered.medium,"small-uncentered":!!this.isUnCentered.small}}}},h=d,p=(n("6e4a"),n("2877")),g=Object(p["a"])(h,i,s,!1,null,"2ee3ad8b",null);t["a"]=g.exports},"621f":function(e,t,n){"use strict";n("b1d4")},"66cd":function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));const i={article:"article",codeListing:"codeListing",collection:"collection",collectionGroup:"collectionGroup",containerSymbol:"containerSymbol",devLink:"devLink",dictionarySymbol:"dictionarySymbol",generic:"generic",link:"link",media:"media",pseudoCollection:"pseudoCollection",pseudoSymbol:"pseudoSymbol",restRequestSymbol:"restRequestSymbol",sampleCode:"sampleCode",symbol:"symbol",table:"table",learn:"learn",overview:"overview",project:"project",tutorial:"tutorial",resources:"resources"}},"6cc4":function(e,t,n){},"6e4a":function(e,t,n){"use strict";n("05a1")},"72af":function(e,t,n){"use strict";n("d541")},"72e7":function(e,t,n){"use strict";const i={up:"up",down:"down"};t["a"]={constants:{IntersectionDirections:i},data(){return{intersectionObserver:null,intersectionPreviousScrollY:0,intersectionScrollDirection:i.down}},computed:{intersectionThreshold(){const e=[];for(let t=0;t<=1;t+=.01)e.push(t);return e},intersectionRoot(){return null},intersectionRootMargin(){return"0px 0px 0px 0px"},intersectionObserverOptions(){return{root:this.intersectionRoot,rootMargin:this.intersectionRootMargin,threshold:this.intersectionThreshold}}},async mounted(){await n.e("chunk-2d0d3105").then(n.t.bind(null,"5abe",7)),this.intersectionObserver=new IntersectionObserver(e=>{this.detectIntersectionScrollDirection();const t=this.onIntersect;t?e.forEach(t):console.warn("onIntersect not implemented")},this.intersectionObserverOptions),this.getIntersectionTargets().forEach(e=>{this.intersectionObserver.observe(e)})},beforeDestroy(){this.intersectionObserver&&this.intersectionObserver.disconnect()},methods:{getIntersectionTargets(){return[this.$el]},detectIntersectionScrollDirection(){window.scrollYthis.intersectionPreviousScrollY&&(this.intersectionScrollDirection=i.up),this.intersectionPreviousScrollY=window.scrollY}}}},"748c":function(e,t,n){"use strict";n.d(t,"d",(function(){return s})),n.d(t,"a",(function(){return r})),n.d(t,"c",(function(){return a})),n.d(t,"b",(function(){return o}));var i=n("6842");function s(e){return e.reduce((e,t)=>(t.traits.includes("dark")?e.dark.push(t):e.light.push(t),e),{light:[],dark:[]})}function r(e){const t=["1x","2x","3x"];return t.reduce((t,n)=>{const i=e.find(e=>e.traits.includes(n));return i?t.concat({density:n,src:i.url,size:i.size}):t},[])}function a(e){const t="/",n=new RegExp(t+"+","g");return e.join(t).replace(n,t)}function o(e){return e&&"string"===typeof e&&!e.startsWith(i["a"])&&e.startsWith("/")?a([i["a"],e]):e}},"76ab":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(e.resolvedComponent,e._b({tag:"component",staticClass:"button-cta",class:{"is-dark":e.isDark}},"component",e.componentProps,!1),[e._t("default")],2)},s=[],r=n("86d8"),a={name:"ButtonLink",components:{Reference:r["a"]},props:{url:{type:String,required:!1},isDark:{type:Boolean,default:!1}},computed:{resolvedComponent:({url:e})=>e?r["a"]:"button",componentProps:({url:e})=>e?{url:e}:{}}},o=a,c=(n("621f"),n("2877")),l=Object(c["a"])(o,i,s,!1,null,"494ad9c8",null);t["a"]=l.exports},"787d":function(e,t,n){},"7b1f":function(e,t,n){"use strict";var i,s,r={functional:!0,name:"WordBreak",render(e,{props:t,slots:n,data:i}){const s=n().default||[],r=s.filter(e=>e.text&&!e.tag);if(0===r.length||r.length!==s.length)return e(t.tag,i,s);const a=r.map(({text:e})=>e).join(),o=[];let c=null,l=0;while(null!==(c=t.safeBoundaryPattern.exec(a))){const t=c.index+1;o.push(a.slice(l,t)),o.push(e("wbr",{key:c.index})),l=t}return o.push(a.slice(l,a.length)),e(t.tag,i,o)},props:{safeBoundaryPattern:{type:RegExp,default:()=>/([a-z](?=[A-Z])|(:)\w|\w(?=[._]\w))/g},tag:{type:String,default:()=>"span"}}},a=r,o=n("2877"),c=Object(o["a"])(a,i,s,!1,null,null,null);t["a"]=c.exports},"7b69":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"code-listing",class:{"single-line":1===e.syntaxHighlightedLines.length},attrs:{"data-syntax":e.syntaxNameNormalized}},[e.fileName?n("Filename",{attrs:{isActionable:e.isFileNameActionable,fileType:e.fileType},on:{click:function(t){return e.$emit("file-name-click")}}},[e._v(e._s(e.fileName)+" ")]):e._e(),n("div",{staticClass:"container-general"},[n("pre",[n("code",e._l(e.syntaxHighlightedLines,(function(t,i){return n("span",{key:i,class:["code-line-container",{highlighted:e.isHighlighted(i)}]},[n("span",{directives:[{name:"show",rawName:"v-show",value:e.showLineNumbers,expression:"showLineNumbers"}],staticClass:"code-number",attrs:{"data-line-number":e.lineNumberFor(i)}}),e._v("\n"),n("span",{staticClass:"code-line",domProps:{innerHTML:e._s(t)}})])})),0)])])],1)},s=[],r=n("002d"),a=n("8649"),o=n("1020"),c=n.n(o);const l={bash:["sh","zsh"],c:["h"],cpp:["cc","c++","h++","hpp","hh","hxx","cxx"],css:[],diff:["patch"],http:["https"],java:["jsp"],javascript:["js","jsx","mjs","cjs"],json:[],llvm:[],markdown:["md","mkdown","mkd"],objectivec:["mm","objc","obj-c"],perl:["pl","pm"],php:[],python:["py","gyp","ipython"],ruby:["rb","gemspec","podspec","thor","irb"],scss:[],shell:["console","shellsession"],swift:[],xml:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"]},u=new Set(["markdown","swift"]),d=Object.entries(l),h=new Set(Object.keys(l)),p=new Map;async function g(e){const t=[e];try{return await t.reduce(async(e,t)=>{let i;await e,i=u.has(t)?await n("1417")("./"+t):await n("2ab3")("./"+t),c.a.registerLanguage(t,i.default)},Promise.resolve()),!0}catch(i){return console.error(`Could not load ${e} file`),!1}}function f(e){if(h.has(e))return e;const t=d.find(([,t])=>t.includes(e));return t?t[0]:null}function m(e){if(p.has(e))return p.get(e);const t=f(e);return p.set(e,t),t}c.a.configure({classPrefix:"syntax-",languages:[...h]});const b=async e=>{const t=m(e);return!(!t||c.a.listLanguages().includes(t))&&g(t)},v=/\r\n|\r|\n/g,y=/syntax-/;function w(e){return 0===e.length?[]:e.split(v)}function x(e){return(e.trim().match(v)||[]).length}function E(e){const t=document.createElement("template");return t.innerHTML=e,t.content.childNodes}function _(e){const{className:t}=e;if(!y.test(t))return null;const n=w(e.innerHTML).reduce((e,n)=>`${e}${n}\n`,"");return E(n.trim())}function k(e){return Array.from(e.childNodes).forEach(e=>{if(x(e.textContent))try{const t=e.childNodes.length?k(e):_(e);t&&e.replaceWith(...t)}catch(t){console.error(t)}}),_(e)}function j(e,t){if(!c.a.getLanguage(t))throw new Error("Unsupported language for syntax highlighting: "+t);return c.a.highlight(e,{language:t,ignoreIllegals:!0}).value}function T(e,t){const n=e.join("\n"),i=j(n,t),s=document.createElement("code");return s.innerHTML=i,k(s),w(s.innerHTML)}var C=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("span",{staticClass:"filename"},[e.isActionable?n("a",{attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.$emit("click")}}},[n("FileIcon",{attrs:{fileType:e.fileType}}),e._t("default")],2):n("span",[n("FileIcon",{attrs:{fileType:e.fileType}}),e._t("default")],2)])},S=[],O=function(){var e=this,t=e.$createElement,n=e._self._c||t;return"swift"===e.fileType?n("SwiftFileIcon",{staticClass:"file-icon"}):n("GenericFileIcon",{staticClass:"file-icon"})},N=[],L=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"swift-file-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M8.033 1l3.967 4.015v7.985h-10v-12zM7.615 2h-4.615v10h8v-6.574z"}}),n("path",{attrs:{d:"M7 1h1v4h-1z"}}),n("path",{attrs:{d:"M7 5h5v1h-5z"}})])},I=[],A=n("be08"),B={name:"SwiftFileIcon",components:{SVGIcon:A["a"]}},M=B,$=n("2877"),R=Object($["a"])(M,L,I,!1,null,null,null),D=R.exports,P=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"generic-file-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M8.033 1l3.967 4.015v7.985h-10v-12zM7.615 2h-4.615v10h8v-6.574z"}}),n("path",{attrs:{d:"M7 1h1v4h-1z"}}),n("path",{attrs:{d:"M7 5h5v1h-5z"}})])},F=[],H={name:"GenericFileIcon",components:{SVGIcon:A["a"]}},q=H,V=Object($["a"])(q,P,F,!1,null,null,null),U=V.exports,z={name:"CodeListingFileIcon",components:{SwiftFileIcon:D,GenericFileIcon:U},props:{fileType:String}},G=z,W=(n("e6db"),Object($["a"])(G,O,N,!1,null,"7c381064",null)),K=W.exports,Y={name:"CodeListingFilename",components:{FileIcon:K},props:{isActionable:{type:Boolean,default:()=>!1},fileType:String}},X=Y,Z=(n("8608"),Object($["a"])(X,C,S,!1,null,"c8c40662",null)),J=Z.exports,Q={name:"CodeListing",components:{Filename:J},data(){return{syntaxHighlightedLines:[]}},props:{fileName:String,isFileNameActionable:{type:Boolean,default:()=>!1},syntax:String,fileType:String,content:{type:Array,required:!0},startLineNumber:{type:Number,default:()=>1},highlights:{type:Array,default:()=>[]},showLineNumbers:{type:Boolean,default:()=>!1}},computed:{escapedContent:({content:e})=>e.map(r["c"]),highlightedLineNumbers(){return new Set(this.highlights.map(({line:e})=>e))},syntaxNameNormalized(){const e={occ:a["a"].objectiveC.key.url};return e[this.syntax]||this.syntax}},watch:{content:{handler:"syntaxHighlightLines",immediate:!0}},methods:{isHighlighted(e){return this.highlightedLineNumbers.has(this.lineNumberFor(e))},lineNumberFor(e){return this.startLineNumber+e},async syntaxHighlightLines(){let e;try{await b(this.syntaxNameNormalized),e=T(this.content,this.syntaxNameNormalized)}catch(t){e=this.escapedContent}this.syntaxHighlightedLines=e.map(e=>""===e?"\n":e)}}},ee=Q,te=(n("2d80"),Object($["a"])(ee,i,s,!1,null,"193a0b82",null));t["a"]=te.exports},"80c8":function(e,t,n){},"830f":function(e,t,n){"use strict";n("30b0")},8608:function(e,t,n){"use strict";n("a7f3")},8649:function(e,t,n){"use strict";t["a"]={objectiveC:{name:"Objective-C",key:{api:"occ",url:"objc"}},swift:{name:"Swift",key:{api:"swift",url:"swift"}}}},"86d8":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(e.refComponent,{tag:"component",attrs:{url:e.urlWithParams,"is-active":e.isActiveComputed}},[e._t("default")],2)},s=[],r=n("d26a"),a=n("66cd"),o=n("9895"),c=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.isActive?n("a",{attrs:{href:e.url}},[e._t("default")],2):n("span",[e._t("default")],2)},l=[],u={name:"ReferenceExternal",props:{url:{type:String,required:!0},isActive:{type:Boolean,default:!0}}},d=u,h=n("2877"),p=Object(h["a"])(d,c,l,!1,null,null,null),g=p.exports,f=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ReferenceInternal",e._b({},"ReferenceInternal",e.$props,!1),[n("CodeVoice",[e._t("default")],2)],1)},m=[],b=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.isActive?n("router-link",{attrs:{to:e.url}},[e._t("default")],2):n("span",[e._t("default")],2)},v=[],y={name:"ReferenceInternal",props:{url:{type:String,required:!0},isActive:{type:Boolean,default:!0}}},w=y,x=Object(h["a"])(w,b,v,!1,null,null,null),E=x.exports,_=n("52e4"),k={name:"ReferenceInternalSymbol",props:E.props,components:{ReferenceInternal:E,CodeVoice:_["a"]}},j=k,T=Object(h["a"])(j,f,m,!1,null,null,null),C=T.exports,S={name:"Reference",computed:{isInternal({url:e}){if(!e.startsWith("/")&&!e.startsWith("#"))return!1;const{resolved:{name:t}={}}=this.$router.resolve(e)||{};return t!==o["b"]},isSymbolReference(){return"symbol"===this.kind&&(this.role===a["a"].symbol||this.role===a["a"].dictionarySymbol)},isDisplaySymbol({isSymbolReference:e,titleStyle:t,ideTitle:n}){return n?e&&"symbol"===t:e},refComponent(){return this.isInternal?this.isDisplaySymbol?C:E:g},urlWithParams({isInternal:e}){return e?Object(r["b"])(this.url,this.$route.query):this.url},isActiveComputed({url:e,isActive:t}){return!(!e||!t)}},props:{url:{type:String,required:!0},kind:{type:String,required:!1},role:{type:String,required:!1},isActive:{type:Boolean,required:!1,default:!0},ideTitle:{type:String,required:!1},titleStyle:{type:String,required:!1}}},O=S,N=Object(h["a"])(O,i,s,!1,null,null,null);t["a"]=N.exports},"8a61":function(e,t,n){"use strict";t["a"]={methods:{scrollToElement(e){const t=this.$router.resolve({hash:e});return this.$router.options.scrollBehavior(t.route).then(({selector:e,offset:t})=>{const n=document.querySelector(e);return n?(n.scrollIntoView(),window.scrollBy(-t.x,-t.y),n):null})}}}},"8bd9":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("picture",[e.prefersAuto&&e.darkVariantAttributes?n("source",{attrs:{media:"(prefers-color-scheme: dark)",srcset:e.darkVariantAttributes.srcSet}}):e._e(),e.prefersDark&&e.darkVariantAttributes?n("img",e._b({attrs:{alt:e.alt}},"img",e.darkVariantAttributes,!1)):n("img",e._b({attrs:{alt:e.alt}},"img",e.defaultAttributes,!1))])},s=[],r=n("748c"),a={props:{variants:{type:Array,required:!0}},computed:{variantsGroupedByAppearance(){return Object(r["d"])(this.variants)},lightVariants(){return Object(r["a"])(this.variantsGroupedByAppearance.light)},darkVariants(){return Object(r["a"])(this.variantsGroupedByAppearance.dark)}}},o=n("e425"),c=n("821b");function l(e){if(!e.length)return null;const t=e.map(e=>`${Object(r["b"])(e.src)} ${e.density}`).join(", "),n=e[0],i={srcSet:t,src:Object(r["b"])(n.src)},{width:s}=n.size||{width:null};return s&&(i.width=s,i.height="auto"),i}var u={name:"ImageAsset",mixins:[a],data:()=>({appState:o["a"].state}),computed:{defaultAttributes:({lightVariantAttributes:e,darkVariantAttributes:t})=>e||t,darkVariantAttributes:({darkVariants:e})=>l(e),lightVariantAttributes:({lightVariants:e})=>l(e),preferredColorScheme:({appState:e})=>e.preferredColorScheme,prefersAuto:({preferredColorScheme:e})=>e===c["a"].auto.value,prefersDark:({preferredColorScheme:e})=>e===c["a"].dark.value},props:{alt:{type:String,default:""},variants:{type:Array,required:!0}}},d=u,h=n("2877"),p=Object(h["a"])(d,i,s,!1,null,null,null);t["a"]=p.exports},"8c92":function(e,t,n){"use strict";n("80c8")},"90f3":function(e,t,n){"use strict";n("6cc4")},9152:function(e,t,n){"use strict";n("50fc")},"95da":function(e,t,n){"use strict";function i(e,t){const n=document.body;let s=e,r=e;while(s=s.previousElementSibling)t(s);while(r=r.nextElementSibling)t(r);e.parentElement&&e.parentElement!==n&&i(e.parentElement,t)}const s="data-original-",r="aria-hidden",a=s+r,o=e=>{let t=e.getAttribute(a);t||(t=e.getAttribute(r)||"",e.setAttribute(a,t)),e.setAttribute(r,"true")},c=e=>{const t=e.getAttribute(a);"string"===typeof t&&(t.length?e.setAttribute(r,t):e.removeAttribute(r)),e.removeAttribute(a)};t["a"]={hide(e){i(e,o)},show(e){i(e,c)}}},"971b":function(e,t,n){},"9a2b":function(e,t,n){"use strict";n("dce7")},"9b30":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ul",{staticClass:"nav-menu-items",attrs:{"data-previous-menu-children-count":e.previousSiblingChildren}},[e._t("default")],2)},s=[],r={name:"NavMenuItems",props:{previousSiblingChildren:{type:Number,default:0}}},a=r,o=(n("502c"),n("2877")),c=Object(o["a"])(a,i,s,!1,null,"aa06bfc4",null);t["a"]=c.exports},"9bb2":function(e,t,n){"use strict";n("3b8f")},a1bd:function(e,t,n){},a7f3:function(e,t,n){},a97e:function(e,t,n){"use strict";var i=n("63b8");const s=e=>e?`(max-width: ${e}px)`:"",r=e=>e?`(min-width: ${e}px)`:"";function a({minWidth:e,maxWidth:t}){return["only screen",r(e),s(t)].filter(Boolean).join(" and ")}function o({maxWidth:e,minWidth:t}){return window.matchMedia(a({minWidth:t,maxWidth:e}))}var c,l,u={name:"BreakpointEmitter",constants:{BreakpointAttributes:i["a"],BreakpointName:i["b"],BreakpointScopes:i["c"]},props:{scope:{type:String,default:()=>i["c"].default,validator:e=>e in i["c"]}},render(){return this.$scopedSlots.default?this.$scopedSlots.default({matchingBreakpoint:this.matchingBreakpoint}):null},data:()=>({matchingBreakpoint:null}),methods:{initMediaQuery(e,t){const n=o(t),i=t=>this.handleMediaQueryChange(t,e);n.addListener(i),this.$once("hook:beforeDestroy",()=>{n.removeListener(i)}),i(n)},handleMediaQueryChange(e,t){e.matches&&(this.matchingBreakpoint=t,this.$emit("change",t))}},mounted(){const e=i["a"][this.scope]||{};Object.entries(e).forEach(([e,t])=>{this.initMediaQuery(e,t)})}},d=u,h=n("2877"),p=Object(h["a"])(d,c,l,!1,null,null,null);t["a"]=p.exports},b1d4:function(e,t,n){},b392:function(e,t,n){},bab1:function(e,t,n){"use strict";n("a1bd")},bb52:function(e,t,n){"use strict";t["a"]={inject:{performanceMetricsEnabled:{default:!1},isTargetIDE:{default:!1}},methods:{newContentMounted(){let e;this.performanceMetricsEnabled&&(e=Math.round(window.performance.now()),window.renderedTimes||(window.renderedTimes=[]),window.renderedTimes.push(e)),this.$bridge.send({type:"rendered",data:{time:e}})}}}},be08:function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("svg",{staticClass:"svg-icon",attrs:{"aria-hidden":"true",xmlns:"http://www.w3.org/2000/svg"}},[e._t("default")],2)},s=[],r={name:"SVGIcon"},a=r,o=(n("9bb2"),n("2877")),c=Object(o["a"])(a,i,s,!1,null,"0137d411",null);t["a"]=c.exports},c064:function(e,t,n){"use strict";n("ca8c")},c081:function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.action?n("DestinationDataProvider",{attrs:{destination:e.action},scopedSlots:e._u([{key:"default",fn:function(t){var i=t.url,s=t.title;return n("ButtonLink",{attrs:{url:i,isDark:e.isDark}},[e._v(" "+e._s(s)+" ")])}}],null,!1,1264376715)}):e._e()},s=[],r=n("76ab"),a=n("c7ea"),o={name:"CallToActionButton",components:{DestinationDataProvider:a["a"],ButtonLink:r["a"]},props:{action:{type:Object,required:!0},isDark:{type:Boolean,default:!1}}},c=o,l=n("2877"),u=Object(l["a"])(c,i,s,!1,null,null,null);t["a"]=u.exports},c7ea:function(e,t,n){"use strict";const i={link:"link",reference:"reference",text:"text"};var s,r,a={name:"DestinationDataProvider",props:{destination:{type:Object,required:!0,default:()=>({})}},inject:{references:{default:()=>({})},isTargetIDE:{default:()=>!1}},constants:{DestinationType:i},computed:{isExternal:({reference:e,destination:t})=>e.type===i.link||t.type===i.link,shouldAppendOpensInBrowser:({isExternal:e,isTargetIDE:t})=>e&&t,reference:({references:e,destination:t})=>e[t.identifier]||{},linkUrl:({destination:e,reference:t})=>({[i.link]:e.destination,[i.reference]:t.url,[i.text]:e.text}[e.type]),linkTitle:({reference:e,destination:t})=>({[i.link]:t.title,[i.reference]:t.overridingTitle||e.title,[i.text]:""}[t.type])},methods:{formatAriaLabel(e){return this.shouldAppendOpensInBrowser?e+" (opens in browser)":e}},render(){return this.$scopedSlots.default({url:this.linkUrl||"",title:this.linkTitle||"",formatAriaLabel:this.formatAriaLabel,isExternal:this.isExternal})}},o=a,c=n("2877"),l=Object(c["a"])(o,s,r,!1,null,null,null);t["a"]=l.exports},c8e2:function(e,t,n){"use strict";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.d(t,"a",(function(){return o}));const s=["input","select","textarea","button","optgroup","option","menuitem","fieldset","object","a[href]","*[tabindex]","*[contenteditable]"],r=s.join(",");var a={getTabbableElements(e){const t=e.querySelectorAll(r),n=t.length;let i;const s=[];for(i=0;i=0},isFocusableElement(e){const t=e.nodeName.toLowerCase(),n=s.includes(t);return!("a"!==t||!e.getAttribute("href"))||(n?!e.disabled:"true"===e.getAttribute("contenteditable")||!Number.isNaN(parseFloat(e.getAttribute("tabindex"))))}};class o{constructor(e){i(this,"focusContainer",null),i(this,"tabTargets",[]),i(this,"firstTabTarget",null),i(this,"lastTabTarget",null),i(this,"lastFocusedElement",null),this.focusContainer=e,this.onFocus=this.onFocus.bind(this)}updateFocusContainer(e){this.focusContainer=e}start(){this.collectTabTargets(),this.firstTabTarget?this.focusContainer.contains(document.activeElement)||this.firstTabTarget.focus():console.warn("There are no focusable elements. FocusTrap needs at least one."),this.lastFocusedElement=document.activeElement,document.addEventListener("focus",this.onFocus,!0)}stop(){document.removeEventListener("focus",this.onFocus,!0)}collectTabTargets(){this.tabTargets=a.getTabbableElements(this.focusContainer),this.firstTabTarget=this.tabTargets[0],this.lastTabTarget=this.tabTargets[this.tabTargets.length-1]}onFocus(e){if(this.focusContainer.contains(e.target))this.lastFocusedElement=e.target;else{if(e.preventDefault(),this.collectTabTargets(),this.lastFocusedElement===this.lastTabTarget||!this.lastFocusedElement)return this.firstTabTarget.focus(),void(this.lastFocusedElement=this.firstTabTarget);this.lastFocusedElement===this.firstTabTarget&&(this.lastTabTarget.focus(),this.lastFocusedElement=this.lastTabTarget)}}destroy(){this.stop(),this.focusContainer=null,this.tabTargets=[],this.firstTabTarget=null,this.lastTabTarget=null,this.lastFocusedElement=null}}},c919:function(e,t,n){"use strict";n("e5ca")},ca8c:function(e,t,n){},cb92:function(e,t,n){"use strict";n("598a")},cbcf:function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("nav",{ref:"nav",staticClass:"nav",class:e.rootClasses,attrs:{role:"navigation"}},[n("div",{ref:"wrapper",staticClass:"nav__wrapper"},[n("div",{staticClass:"nav__background"}),e.hasOverlay?n("div",{staticClass:"nav-overlay",on:{click:e.closeNav}}):e._e(),n("div",{staticClass:"nav-content"},[e.$slots.default?n("div",{staticClass:"nav-title"},[e._t("default")],2):e._e(),e._t("after-title"),n("div",{staticClass:"nav-menu"},[n("a",{ref:"axToggle",staticClass:"nav-ax-toggle",attrs:{href:"#",role:"button"},on:{click:function(t){return t.preventDefault(),e.toggleNav.apply(null,arguments)}}},[n("span",{staticClass:"visuallyhidden"},[e.isOpen?[e._v("Close Menu")]:[e._v("Open Menu")]],2)]),n("div",{ref:"tray",staticClass:"nav-menu-tray",on:{transitionend:function(t){return t.target!==t.currentTarget?null:e.onTransitionEnd.apply(null,arguments)},click:e.handleTrayClick}},[e._t("tray",(function(){return[n("NavMenuItems",[e._t("menu-items")],2)]}))],2)]),n("div",{staticClass:"nav-actions"},[n("a",{staticClass:"nav-menucta",attrs:{href:"#",tabindex:"-1","aria-hidden":"true"},on:{click:function(t){return t.preventDefault(),e.toggleNav.apply(null,arguments)}}},[n("span",{staticClass:"nav-menucta-chevron"})])])],2),e._t("after-content")],2),n("BreakpointEmitter",{attrs:{scope:e.BreakpointScopes.nav},on:{change:e.onBreakpointChange}})],1)},s=[],r=n("72e7"),a=n("9b30"),o=n("a97e"),c=n("c8e2"),l=n("f2af"),u=n("942d"),d=n("63b8"),h=n("95da");const{BreakpointName:p,BreakpointScopes:g}=o["a"].constants,f={isDark:"theme-dark",isOpen:"nav--is-open",inBreakpoint:"nav--in-breakpoint-range",isTransitioning:"nav--is-opening",isSticking:"nav--is-sticking",hasSolidBackground:"nav--solid-background",hasNoBorder:"nav--noborder",hasFullWidthBorder:"nav--fullwidth-border"};var m={name:"NavBase",components:{NavMenuItems:a["a"],BreakpointEmitter:o["a"]},constants:{NavStateClasses:f},props:{breakpoint:{type:String,default:p.small},hasOverlay:{type:Boolean,default:!0},hasSolidBackground:{type:Boolean,default:!1},hasNoBorder:{type:Boolean,default:!1},hasFullWidthBorder:{type:Boolean,default:!1},isDark:{type:Boolean,default:!1}},mixins:[r["a"]],data(){return{isOpen:!1,inBreakpoint:!1,isTransitioning:!1,isSticking:!1,focusTrapInstance:null}},computed:{BreakpointScopes:()=>g,rootClasses:({isOpen:e,inBreakpoint:t,isTransitioning:n,isSticking:i,hasSolidBackground:s,hasNoBorder:r,hasFullWidthBorder:a,isDark:o})=>({[f.isDark]:o,[f.isOpen]:e,[f.inBreakpoint]:t,[f.isTransitioning]:n,[f.isSticking]:i,[f.hasSolidBackground]:s,[f.hasNoBorder]:r,[f.hasFullWidthBorder]:a})},watch:{isOpen(e){this.$emit("change",e),e?this.onExpand():this.onClose()}},async mounted(){window.addEventListener("keydown",this.onEscape),window.addEventListener("popstate",this.closeNav),window.addEventListener("orientationchange",this.closeNav),document.addEventListener("click",this.handleClickOutside),await this.$nextTick(),this.focusTrapInstance=new c["a"](this.$refs.wrapper)},beforeDestroy(){window.removeEventListener("keydown",this.onEscape),window.removeEventListener("popstate",this.closeNav),window.removeEventListener("orientationchange",this.closeNav),document.removeEventListener("click",this.handleClickOutside),this.isOpen&&this.toggleScrollLock(!1),this.focusTrapInstance.destroy()},methods:{getIntersectionTargets(){return[document.getElementById(u["c"])||this.$el]},toggleNav(){this.isOpen=!this.isOpen,this.isTransitioning=!0},closeNav(){this.isOpen=!1},async onTransitionEnd({propertyName:e}){"max-height"===e&&(this.$emit("changed",this.isOpen),this.isTransitioning=!1,this.isOpen?(this.$emit("opened"),this.toggleScrollLock(!0)):this.$emit("closed"))},onBreakpointChange(e){const t=Object(d["d"])(e,this.breakpoint);this.inBreakpoint=!t,t&&this.closeNav()},onIntersect({intersectionRatio:e}){window.scrollY<0||(this.isSticking=1!==e)},onEscape({key:e}){"Escape"===e&&this.isOpen&&(this.closeNav(),this.$refs.axToggle.focus())},handleTrayClick({target:e}){e.href&&this.closeNav()},handleClickOutside({target:e}){this.$refs.nav.contains(e)||this.closeNav()},toggleScrollLock(e){e?l["a"].lockScroll(this.$refs.tray):l["a"].unlockScroll(this.$refs.tray)},onExpand(){this.$emit("open"),this.focusTrapInstance.start(),h["a"].hide(this.$refs.wrapper)},onClose(){this.$emit("close"),this.toggleScrollLock(!1),this.focusTrapInstance.stop(),h["a"].show(this.$refs.wrapper)}}},b=m,v=(n("d020"),n("2877")),y=Object(v["a"])(b,i,s,!1,null,"489e6297",null);t["a"]=y.exports},d020:function(e,t,n){"use strict";n("787d")},d541:function(e,t,n){},d8ce:function(e,t,n){"use strict";var i=n("6842");t["a"]={created(){if(this.pageTitle){const e=Object(i["c"])(["meta","title"],"Documentation"),t=[this.pageTitle,e].filter(Boolean);document.title=t.join(" | ")}}}},dce7:function(e,t,n){},e1d1:function(e,t,n){},e3ab:function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("aside",{class:e.kind,attrs:{"aria-label":e.kind}},[n("p",{staticClass:"label"},[e._v(e._s(e.label))]),e._t("default")],2)},s=[];const r={deprecated:"deprecated",experiment:"experiment",important:"important",note:"note",tip:"tip",warning:"warning"};var a={name:"Aside",props:{kind:{type:String,required:!0,validator:e=>Object.prototype.hasOwnProperty.call(r,e)},name:{type:String,required:!1}},computed:{label:({kind:e,name:t})=>t||{[r.deprecated]:"Deprecated",[r.experiment]:"Experiment",[r.important]:"Important",[r.note]:"Note",[r.tip]:"Tip",[r.warning]:"Warning"}[e]}},o=a,c=(n("9152"),n("2877")),l=Object(c["a"])(o,i,s,!1,null,"5117d474",null);t["a"]=l.exports},e5ca:function(e,t,n){},e6db:function(e,t,n){"use strict";n("47cc")},e7fb:function(e,t,n){"use strict";n("4c7a")},f2af:function(e,t,n){"use strict";let i=!1,s=-1,r=0;const a=()=>window.navigator&&window.navigator.platform&&(/iP(ad|hone|od)/.test(window.navigator.platform)||"MacIntel"===window.navigator.platform&&window.navigator.maxTouchPoints>1);function o(e){e.touches.length>1||e.preventDefault()}const c=e=>!!e&&e.scrollHeight-e.scrollTop<=e.clientHeight;function l(){r=document.body.getBoundingClientRect().top,document.body.style.overflow="hidden scroll",document.body.style.top=r+"px",document.body.style.position="fixed",document.body.style.width="100%"}function u(e){e.ontouchstart=null,e.ontouchmove=null,document.removeEventListener("touchmove",o)}function d(e,t){const n=e.targetTouches[0].clientY-s;return 0===t.scrollTop&&n>0||c(t)&&n<0?o(e):(e.stopPropagation(),!0)}function h(e){e.ontouchstart=e=>{1===e.targetTouches.length&&(s=e.targetTouches[0].clientY)},e.ontouchmove=t=>{1===t.targetTouches.length&&d(t,e)},document.addEventListener("touchmove",o,{passive:!1})}t["a"]={lockScroll(e){i||(a()?h(e):l(),i=!0)},unlockScroll(e){i&&(a()?u(e):(document.body.style.cssText="",window.scrollTo(0,Math.abs(r))),i=!1)}}}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/highlight-js-bash.1b52852f.js b/docs/swift-docc-render/js/highlight-js-bash.1b52852f.js new file mode 100644 index 00000000..6db17786 --- /dev/null +++ b/docs/swift-docc-render/js/highlight-js-bash.1b52852f.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-bash"],{f0f8:function(e,s){function t(e){const s=e.regex,t={},n={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{className:"variable",variants:[{begin:s.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},n]});const a={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},i={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t,a]};a.contains.push(c);const o={className:"",begin:/\\"/},r={className:"string",begin:/'/,end:/'/},l={begin:/\$\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t]},p=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],d=e.SHEBANG({binary:`(${p.join("|")})`,relevance:10}),h={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},m=["if","then","else","elif","fi","for","while","in","do","done","case","esac","function"],u=["true","false"],b={match:/(\/[a-z._-]+)+/},g=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],f=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias"],w=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],k=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z._-]+\b/,keyword:m,literal:u,built_in:[...g,...f,"set","shopt",...w,...k]},contains:[d,e.SHEBANG(),h,l,e.HASH_COMMENT_MODE,i,b,c,o,r,t]}}e.exports=t}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/highlight-js-c.d1db3f17.js b/docs/swift-docc-render/js/highlight-js-c.d1db3f17.js new file mode 100644 index 00000000..3bc41acb --- /dev/null +++ b/docs/swift-docc-render/js/highlight-js-c.d1db3f17.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-c"],{"1fe5":function(e,n){function s(e){const n=e.regex,s=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),t="decltype\\(auto\\)",a="[a-zA-Z_]\\w*::",i="<[^<>]+>",r="("+t+"|"+n.optional(a)+"[a-zA-Z_]\\w*"+n.optional(i)+")",l={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},o="\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)",c={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+o+"|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},d={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},u={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(c,{className:"string"}),{className:"string",begin:/<.*?>/},s,e.C_BLOCK_COMMENT_MODE]},g={className:"title",begin:n.optional(a)+e.IDENT_RE,relevance:0},p=n.optional(a)+e.IDENT_RE+"\\s*\\(",m=["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],_=["float","double","signed","unsigned","int","short","long","char","void","_Bool","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal128","const","static","complex","bool","imaginary"],f={keyword:m,type:_,literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},b=[u,l,s,e.C_BLOCK_COMMENT_MODE,d,c],w={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:f,contains:b.concat([{begin:/\(/,end:/\)/,keywords:f,contains:b.concat(["self"]),relevance:0}]),relevance:0},h={begin:"("+r+"[\\*&\\s]+)+"+p,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:f,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:t,keywords:f,relevance:0},{begin:p,returnBegin:!0,contains:[e.inherit(g,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:f,relevance:0,contains:[s,e.C_BLOCK_COMMENT_MODE,c,d,l,{begin:/\(/,end:/\)/,keywords:f,relevance:0,contains:["self",s,e.C_BLOCK_COMMENT_MODE,c,d,l]}]},l,s,e.C_BLOCK_COMMENT_MODE,u]};return{name:"C",aliases:["h"],keywords:f,disableAutodetect:!0,illegal:"=]/,contains:[{beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:u,strings:c,keywords:f}}}e.exports=s}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/highlight-js-cpp.eaddddbe.js b/docs/swift-docc-render/js/highlight-js-cpp.eaddddbe.js new file mode 100644 index 00000000..db9fd820 --- /dev/null +++ b/docs/swift-docc-render/js/highlight-js-cpp.eaddddbe.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-cpp"],{"0209":function(e,t){function n(e){const t=e.regex,n=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),a="decltype\\(auto\\)",i="[a-zA-Z_]\\w*::",r="<[^<>]+>",s="(?!struct)("+a+"|"+t.optional(i)+"[a-zA-Z_]\\w*"+t.optional(r)+")",c={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},o="\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)",l={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+o+"|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},d={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},u={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(l,{className:"string"}),{className:"string",begin:/<.*?>/},n,e.C_BLOCK_COMMENT_MODE]},p={className:"title",begin:t.optional(i)+e.IDENT_RE,relevance:0},_=t.optional(i)+e.IDENT_RE+"\\s*\\(",m=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],g=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],f=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],b=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],h=["NULL","false","nullopt","nullptr","true"],w=["_Pragma"],y={type:g,keyword:m,literal:h,built_in:w,_type_hints:f},v={className:"function.dispatch",relevance:0,keywords:{_hint:b},begin:t.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,t.lookahead(/(<[^<>]+>|)\s*\(/))},k=[v,u,c,n,e.C_BLOCK_COMMENT_MODE,d,l],x={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:y,contains:k.concat([{begin:/\(/,end:/\)/,keywords:y,contains:k.concat(["self"]),relevance:0}]),relevance:0},E={className:"function",begin:"("+s+"[\\*&\\s]+)+"+_,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:y,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:a,keywords:y,relevance:0},{begin:_,returnBegin:!0,contains:[p],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[l,d]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:y,relevance:0,contains:[n,e.C_BLOCK_COMMENT_MODE,l,d,c,{begin:/\(/,end:/\)/,keywords:y,relevance:0,contains:["self",n,e.C_BLOCK_COMMENT_MODE,l,d,c]}]},c,n,e.C_BLOCK_COMMENT_MODE,u]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:y,illegal:"",keywords:y,contains:["self",c]},{begin:e.IDENT_RE+"::",keywords:y},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}e.exports=n}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/highlight-js-css.75eab1fe.js b/docs/swift-docc-render/js/highlight-js-css.75eab1fe.js new file mode 100644 index 00000000..3d507d0b --- /dev/null +++ b/docs/swift-docc-render/js/highlight-js-css.75eab1fe.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-css"],{ee8c:function(e,t){const o=e=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/}}),i=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],r=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],a=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],n=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],l=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-height","max-width","min-height","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse();function s(e){const t=e.regex,s=o(e),d={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},c="and or not only",g=/@-?\w[\w]*(-\w+)*/,m="[a-zA-Z-][a-zA-Z0-9_-]*",p=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[s.BLOCK_COMMENT,d,s.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+m,relevance:0},s.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+a.join("|")+")"},{begin:":(:)?("+n.join("|")+")"}]},s.CSS_VARIABLE,{className:"attribute",begin:"\\b("+l.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[s.BLOCK_COMMENT,s.HEXCOLOR,s.IMPORTANT,s.CSS_NUMBER_MODE,...p,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},s.FUNCTION_DISPATCH]},{begin:t.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:g},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:c,attribute:r.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...p,s.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+i.join("|")+")\\b"}]}}e.exports=s}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/highlight-js-custom-markdown.7cffc4b3.js b/docs/swift-docc-render/js/highlight-js-custom-markdown.7cffc4b3.js new file mode 100644 index 00000000..5271416e --- /dev/null +++ b/docs/swift-docc-render/js/highlight-js-custom-markdown.7cffc4b3.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-custom-markdown","highlight-js-markdown"],{"04b0":function(n,e){function a(n){const e=n.regex,a={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},i={begin:"^[-\\*]{3,}",end:"$"},s={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},t={className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},c={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},d=/[A-Za-z][A-Za-z0-9+.-]*/,l={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:e.concat(/\[.+?\]\(/,d,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},g={className:"strong",contains:[],variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},o={className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{begin:/_(?!_)/,end:/_/,relevance:0}]};g.contains.push(o),o.contains.push(g);let r=[a,l];g.contains=g.contains.concat(r),o.contains=o.contains.concat(r),r=r.concat(g,o);const b={className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:r},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:r}]}]},u={className:"quote",begin:"^>\\s+",contains:r,end:"$"};return{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[b,a,t,g,o,u,s,i,l,c]}}n.exports=a},"84cb":function(n,e,a){"use strict";a.r(e);var i=a("04b0"),s=a.n(i);const t={begin:"",returnBegin:!0,contains:[{className:"link",begin:"doc:",end:">",excludeEnd:!0}]},c={className:"link",begin:/`{2}(?!`)/,end:/`{2}(?!`)/,excludeBegin:!0,excludeEnd:!0},d={begin:"^>\\s+[Note:|Tip:|Important:|Experiment:|Warning:]",end:"$",returnBegin:!0,contains:[{className:"quote",begin:"^>",end:"\\s+"},{className:"type",begin:"Note|Tip|Important|Experiment|Warning",end:":"},{className:"quote",begin:".*",end:"$",endsParent:!0}]},l={begin:"@",end:"[{\\)\\s]",returnBegin:!0,contains:[{className:"title",begin:"@",end:"[\\s+(]",excludeEnd:!0},{begin:":",end:"[,\\)\n\t]",excludeBegin:!0,keywords:{literal:"true false null undefined"},contains:[{className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",endsWithParent:!0,excludeEnd:!0},{className:"string",variants:[{begin:/"""/,end:/"""/},{begin:/"/,end:/"/}],endsParent:!0},{className:"link",begin:"http|https",endsWithParent:!0,excludeEnd:!0}]}]};e["default"]=function(n){const e=s()(n),a=e.contains.find(({className:n})=>"code"===n);a.variants=a.variants.filter(({begin:n})=>!n.includes("( {4}|\\t)"));const i=[...e.contains.filter(({className:n})=>"code"!==n),a];return{...e,contains:[c,t,d,l,...i]}}}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/highlight-js-custom-swift.886dc05e.js b/docs/swift-docc-render/js/highlight-js-custom-swift.886dc05e.js new file mode 100644 index 00000000..4009d3ad --- /dev/null +++ b/docs/swift-docc-render/js/highlight-js-custom-swift.886dc05e.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-custom-swift","highlight-js-swift"],{"2a39":function(e,n){function t(e){return e?"string"===typeof e?e:e.source:null}function a(e){return i("(?=",e,")")}function i(...e){const n=e.map(e=>t(e)).join("");return n}function s(e){const n=e[e.length-1];return"object"===typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{}}function c(...e){const n=s(e),a="("+(n.capture?"":"?:")+e.map(e=>t(e)).join("|")+")";return a}const u=e=>i(/\b/,e,/\w$/.test(e)?/\b/:/\B/),o=["Protocol","Type"].map(u),r=["init","self"].map(u),l=["Any","Self"],m=["actor","associatedtype","async","await",/as\?/,/as!/,"as","break","case","catch","class","continue","convenience","default","defer","deinit","didSet","do","dynamic","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],p=["false","nil","true"],d=["assignment","associativity","higherThan","left","lowerThan","none","right"],b=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warn_unqualified_access","#warning"],F=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],f=c(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),h=c(f,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),w=i(f,h,"*"),y=c(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),g=c(y,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),E=i(y,g,"*"),v=i(/[A-Z]/,g,"*"),A=["autoclosure",i(/convention\(/,c("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",i(/objc\(/,E,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","testable","UIApplicationMain","unknown","usableFromInline"],N=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function C(e){const n={match:/\s+/,relevance:0},t=e.COMMENT("/\\*","\\*/",{contains:["self"]}),s=[e.C_LINE_COMMENT_MODE,t],f={match:[/\./,c(...o,...r)],className:{2:"keyword"}},y={match:i(/\./,c(...m)),relevance:0},C=m.filter(e=>"string"===typeof e).concat(["_|0"]),k=m.filter(e=>"string"!==typeof e).concat(l).map(u),D={variants:[{className:"keyword",match:c(...k,...r)}]},B={$pattern:c(/\b\w+/,/#\w+/),keyword:C.concat(b),literal:p},_=[f,y,D],S={match:i(/\./,c(...F)),relevance:0},x={className:"built_in",match:i(/\b/,c(...F),/(?=\()/)},M=[S,x],I={match:/->/,relevance:0},O={className:"operator",relevance:0,variants:[{match:w},{match:`\\.(\\.|${h})+`}]},$=[I,O],L="([0-9]_*)+",j="([0-9a-fA-F]_*)+",T={className:"number",relevance:0,variants:[{match:`\\b(${L})(\\.(${L}))?([eE][+-]?(${L}))?\\b`},{match:`\\b0x(${j})(\\.(${j}))?([pP][+-]?(${L}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},K=(e="")=>({className:"subst",variants:[{match:i(/\\/,e,/[0\\tnr"']/)},{match:i(/\\/,e,/u\{[0-9a-fA-F]{1,8}\}/)}]}),P=(e="")=>({className:"subst",match:i(/\\/,e,/[\t ]*(?:[\r\n]|\r\n)/)}),z=(e="")=>({className:"subst",label:"interpol",begin:i(/\\/,e,/\(/),end:/\)/}),Z=(e="")=>({begin:i(e,/"""/),end:i(/"""/,e),contains:[K(e),P(e),z(e)]}),q=(e="")=>({begin:i(e,/"/),end:i(/"/,e),contains:[K(e),z(e)]}),U={className:"string",variants:[Z(),Z("#"),Z("##"),Z("###"),q(),q("#"),q("##"),q("###")]},V={match:i(/`/,E,/`/)},W={className:"variable",match:/\$\d+/},G={className:"variable",match:`\\$${g}+`},J=[V,W,G],R={match:/(@|#)available/,className:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:N,contains:[...$,T,U]}]}},X={className:"keyword",match:i(/@/,c(...A))},H={className:"meta",match:i(/@/,E)},Q=[R,X,H],Y={match:a(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:i(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,g,"+")},{className:"type",match:v,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:i(/\s+&\s+/,a(v)),relevance:0}]},ee={begin://,keywords:B,contains:[...s,..._,...Q,I,Y]};Y.contains.push(ee);const ne={match:i(E,/\s*:/),keywords:"_|0",relevance:0},te={begin:/\(/,end:/\)/,relevance:0,keywords:B,contains:["self",ne,...s,..._,...M,...$,T,U,...J,...Q,Y]},ae={begin://,contains:[...s,Y]},ie={begin:c(a(i(E,/\s*:/)),a(i(E,/\s+/,E,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:E}]},se={begin:/\(/,end:/\)/,keywords:B,contains:[ie,...s,..._,...$,T,U,...Q,Y,te],endsParent:!0,illegal:/["']/},ce={match:[/func/,/\s+/,c(V.match,E,w)],className:{1:"keyword",3:"title.function"},contains:[ae,se,n],illegal:[/\[/,/%/]},ue={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[ae,se,n],illegal:/\[|%/},oe={match:[/operator/,/\s+/,w],className:{1:"keyword",3:"title"}},re={begin:[/precedencegroup/,/\s+/,v],className:{1:"keyword",3:"title"},contains:[Y],keywords:[...d,...p],end:/}/};for(const a of U.variants){const e=a.contains.find(e=>"interpol"===e.label);e.keywords=B;const n=[..._,...M,...$,T,U,...J];e.contains=[...n,{begin:/\(/,end:/\)/,contains:["self",...n]}]}return{name:"Swift",keywords:B,contains:[...s,ce,ue,{beginKeywords:"struct protocol class extension enum actor",end:"\\{",excludeEnd:!0,keywords:B,contains:[e.inherit(e.TITLE_MODE,{className:"title.class",begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/}),..._]},oe,re,{beginKeywords:"import",end:/$/,contains:[...s],relevance:0},..._,...M,...$,T,U,...J,...Q,Y,te]}}e.exports=C},"81c8":function(e,n,t){"use strict";t.r(n),t.d(n,"either",(function(){return s})),t.d(n,"concat",(function(){return c}));var a=t("2a39"),i=t.n(a);function s(...e){const n=stripOptionsFromArgs(e),t="("+(n.capture?"":"?:")+e.map(e=>source(e)).join("|")+")";return t}function c(...e){const n=e.map(e=>source(e)).join("");return n}n["default"]=function(e){const n=i()(e),t=({beginKeywords:e=""})=>e.split(" ").includes("class"),a=n.contains.findIndex(t);if(a>=0){const{beginKeywords:e,...t}=n.contains[a];n.contains[a]={...t,begin:/\b(struct\b|protocol\b|extension\b|enum\b|actor\b|class\b(?!.*\bfunc\b))/}}return n.contains.push({className:"function",match:/\b[a-zA-Z_]\w*(?=\()/}),n}}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/highlight-js-diff.62d66733.js b/docs/swift-docc-render/js/highlight-js-diff.62d66733.js new file mode 100644 index 00000000..64337fa8 --- /dev/null +++ b/docs/swift-docc-render/js/highlight-js-diff.62d66733.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-diff"],{"48b8":function(e,n){function a(e){const n=e.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:n.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:n.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}e.exports=a}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/highlight-js-http.163e45b6.js b/docs/swift-docc-render/js/highlight-js-http.163e45b6.js new file mode 100644 index 00000000..14f39a9f --- /dev/null +++ b/docs/swift-docc-render/js/highlight-js-http.163e45b6.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-http"],{c01d:function(e,n){function a(e){const n=e.regex,a="HTTP/(2|1\\.[01])",s=/[A-Za-z][A-Za-z0-9-]*/,t={className:"attribute",begin:n.concat("^",s,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},i=[t,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})",end:/$/,contains:[{className:"meta",begin:a},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:i}},{begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:i}},e.inherit(t,{relevance:0})]}}e.exports=a}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/highlight-js-java.8326d9d8.js b/docs/swift-docc-render/js/highlight-js-java.8326d9d8.js new file mode 100644 index 00000000..f11ca2a2 --- /dev/null +++ b/docs/swift-docc-render/js/highlight-js-java.8326d9d8.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-java"],{"332f":function(e,a){var n="[0-9](_*[0-9])*",s=`\\.(${n})`,i="[0-9a-fA-F](_*[0-9a-fA-F])*",t={className:"number",variants:[{begin:`(\\b(${n})((${s})|\\.)?|(${s}))[eE][+-]?(${n})[fFdD]?\\b`},{begin:`\\b(${n})((${s})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${s})[fFdD]?\\b`},{begin:`\\b(${n})[fFdD]\\b`},{begin:`\\b0[xX]((${i})\\.?|(${i})?\\.(${i}))[pP][+-]?(${n})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${i})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function r(e,a,n){return-1===n?"":e.replace(a,s=>r(e,a,n-1))}function c(e){e.regex;const a="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",n=a+r("(?:<"+a+"~~~(?:\\s*,\\s*"+a+"~~~)*>)?",/~~~/g,2),s=["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do"],i=["super","this"],c=["false","true","null"],l=["char","boolean","long","float","int","byte","short","double"],o={keyword:s,literal:c,type:l,built_in:i},b={className:"meta",begin:"@"+a,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},_={className:"params",begin:/\(/,end:/\)/,keywords:o,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:o,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[e.BACKSLASH_ESCAPE]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,a],className:{1:"keyword",3:"title.class"}},{begin:[a,/\s+/,a,/\s+/,/=/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,a],className:{1:"keyword",3:"title.class"},contains:[_,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+n+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:o,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:o,relevance:0,contains:[b,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,t,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},t,b]}}e.exports=c}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/highlight-js-javascript.acb8a8eb.js b/docs/swift-docc-render/js/highlight-js-javascript.acb8a8eb.js new file mode 100644 index 00000000..ac843fc0 --- /dev/null +++ b/docs/swift-docc-render/js/highlight-js-javascript.acb8a8eb.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-javascript"],{"4dd1":function(e,n){const a="[A-Za-z$_][0-9A-Za-z$_]*",t=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],s=["true","false","null","undefined","NaN","Infinity"],c=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],r=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],i=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],o=["arguments","this","super","console","window","document","localStorage","module","global"],l=[].concat(i,c,r);function b(e){const n=e.regex,b=(e,{after:n})=>{const a="",end:""},u=/<[A-Za-z0-9\\._:-]+\s*\/>/,m={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,t=e.input[a];if("<"===t||","===t)return void n.ignoreMatch();let s;">"===t&&(b(e,{after:a})||n.ignoreMatch());const c=e.input.substr(a);(s=c.match(/^\s+extends\s+/))&&0===s.index&&n.ignoreMatch()}},E={$pattern:a,keyword:t,literal:s,built_in:l,"variable.language":o},A="[0-9](_?[0-9])*",y=`\\.(${A})`,N="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",f={className:"number",variants:[{begin:`(\\b(${N})((${y})|\\.)?|(${y}))[eE][+-]?(${A})\\b`},{begin:`\\b(${N})\\b((${y})\\b|\\.)?|(${y})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},h={className:"subst",begin:"\\$\\{",end:"\\}",keywords:E,contains:[]},_={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,h],subLanguage:"xml"}},p={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,h],subLanguage:"css"}},v={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,h]},w=e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:d+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),S={className:"comment",variants:[w,e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},R=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,_,p,v,f];h.contains=R.concat({begin:/\{/,end:/\}/,keywords:E,contains:["self"].concat(R)});const k=[].concat(S,h.contains),O=k.concat([{begin:/\(/,end:/\)/,keywords:E,contains:["self"].concat(k)}]),I={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:E,contains:O},x={variants:[{match:[/class/,/\s+/,d,/\s+/,/extends/,/\s+/,n.concat(d,"(",n.concat(/\./,d),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,d],scope:{1:"keyword",3:"title.class"}}]},T={relevance:0,match:n.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]+|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+/),className:"title.class",keywords:{_:[...c,...r]}},C={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},M={variants:[{match:[/function/,/\s+/,d,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[I],illegal:/%/},B={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function $(e){return n.concat("(?!",e.join("|"),")")}const D={match:n.concat(/\b/,$([...i,"super"]),d,n.lookahead(/\(/)),className:"title.function",relevance:0},U={begin:n.concat(/\./,n.lookahead(n.concat(d,/(?![0-9A-Za-z$_(])/))),end:d,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Z={match:[/get|set/,/\s+/,d,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},I]},z="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",F={match:[/const|var|let/,/\s+/,d,/\s*/,/=\s*/,n.lookahead(z)],className:{1:"keyword",3:"title.function"},contains:[I]};return{name:"Javascript",aliases:["js","jsx","mjs","cjs"],keywords:E,exports:{PARAMS_CONTAINS:O,CLASS_REFERENCE:T},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),C,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,_,p,v,S,f,T,{className:"attr",begin:d+n.lookahead(":"),relevance:0},F,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[S,e.REGEXP_MODE,{className:"function",begin:z,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:E,contains:O}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:g.begin,end:g.end},{match:u},{begin:m.begin,"on:begin":m.isTrulyOpeningTag,end:m.end}],subLanguage:"xml",contains:[{begin:m.begin,end:m.end,skip:!0,contains:["self"]}]}]},M,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[I,e.inherit(e.TITLE_MODE,{begin:d,className:"title.function"})]},{match:/\.\.\./,relevance:0},U,{match:"\\$"+d,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[I]},D,B,x,Z,{match:/\$[(.]/}]}}e.exports=b}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/highlight-js-json.471128d2.js b/docs/swift-docc-render/js/highlight-js-json.471128d2.js new file mode 100644 index 00000000..c87d3c3b --- /dev/null +++ b/docs/swift-docc-render/js/highlight-js-json.471128d2.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-json"],{"5ad2":function(n,e){function a(n){const e={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},a={match:/[{}[\],:]/,className:"punctuation",relevance:0},s={beginKeywords:["true","false","null"].join(" ")};return{name:"JSON",contains:[e,a,n.QUOTE_STRING_MODE,s,n.C_NUMBER_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}n.exports=a}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/highlight-js-llvm.6100b125.js b/docs/swift-docc-render/js/highlight-js-llvm.6100b125.js new file mode 100644 index 00000000..0beb806e --- /dev/null +++ b/docs/swift-docc-render/js/highlight-js-llvm.6100b125.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-llvm"],{"7c30":function(e,n){function a(e){const n=e.regex,a=/([-a-zA-Z$._][\w$.-]*)/,t={className:"type",begin:/\bi\d+(?=\s|\b)/},i={className:"operator",relevance:0,begin:/=/},c={className:"punctuation",relevance:0,begin:/,/},l={className:"number",variants:[{begin:/0[xX][a-fA-F0-9]+/},{begin:/-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?/}],relevance:0},r={className:"symbol",variants:[{begin:/^\s*[a-z]+:/}],relevance:0},s={className:"variable",variants:[{begin:n.concat(/%/,a)},{begin:/%\d+/},{begin:/#\d+/}]},o={className:"title",variants:[{begin:n.concat(/@/,a)},{begin:/@\d+/},{begin:n.concat(/!/,a)},{begin:n.concat(/!\d+/,a)},{begin:/!\d+/}]};return{name:"LLVM IR",keywords:"begin end true false declare define global constant private linker_private internal available_externally linkonce linkonce_odr weak weak_odr appending dllimport dllexport common default hidden protected extern_weak external thread_local zeroinitializer undef null to tail target triple datalayout volatile nuw nsw nnan ninf nsz arcp fast exact inbounds align addrspace section alias module asm sideeffect gc dbg linker_private_weak attributes blockaddress initialexec localdynamic localexec prefix unnamed_addr ccc fastcc coldcc x86_stdcallcc x86_fastcallcc arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ptx_kernel intel_ocl_bicc msp430_intrcc spir_func spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc cc c signext zeroext inreg sret nounwind noreturn noalias nocapture byval nest readnone readonly inlinehint noinline alwaysinline optsize ssp sspreq noredzone noimplicitfloat naked builtin cold nobuiltin noduplicate nonlazybind optnone returns_twice sanitize_address sanitize_memory sanitize_thread sspstrong uwtable returned type opaque eq ne slt sgt sle sge ult ugt ule uge oeq one olt ogt ole oge ord uno ueq une x acq_rel acquire alignstack atomic catch cleanup filter inteldialect max min monotonic nand personality release seq_cst singlethread umax umin unordered xchg add fadd sub fsub mul fmul udiv sdiv fdiv urem srem frem shl lshr ashr and or xor icmp fcmp phi call trunc zext sext fptrunc fpext uitofp sitofp fptoui fptosi inttoptr ptrtoint bitcast addrspacecast select va_arg ret br switch invoke unwind unreachable indirectbr landingpad resume malloc alloca free load store getelementptr extractelement insertelement shufflevector getresult extractvalue insertvalue atomicrmw cmpxchg fence argmemonly double",contains:[t,e.COMMENT(/;\s*$/,null,{relevance:0}),e.COMMENT(/;/,/$/),e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:/"/,end:/[^\\]"/}]},o,c,i,s,r,l]}}e.exports=a}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/highlight-js-markdown.90077643.js b/docs/swift-docc-render/js/highlight-js-markdown.90077643.js new file mode 100644 index 00000000..dc8d097c --- /dev/null +++ b/docs/swift-docc-render/js/highlight-js-markdown.90077643.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-markdown"],{"04b0":function(n,e){function a(n){const e=n.regex,a={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},i={begin:"^[-\\*]{3,}",end:"$"},s={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},c={className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},t={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},g=/[A-Za-z][A-Za-z0-9+.-]*/,d={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:e.concat(/\[.+?\]\(/,g,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},l={className:"strong",contains:[],variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},o={className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{begin:/_(?!_)/,end:/_/,relevance:0}]};l.contains.push(o),o.contains.push(l);let b=[a,d];l.contains=l.contains.concat(b),o.contains=o.contains.concat(b),b=b.concat(l,o);const r={className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:b},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:b}]}]},m={className:"quote",begin:"^>\\s+",contains:b,end:"$"};return{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[r,a,c,l,o,m,s,i,d,t]}}n.exports=a}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/highlight-js-objectivec.bcdf5156.js b/docs/swift-docc-render/js/highlight-js-objectivec.bcdf5156.js new file mode 100644 index 00000000..2456ffc8 --- /dev/null +++ b/docs/swift-docc-render/js/highlight-js-objectivec.bcdf5156.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-objectivec"],{"9bf2":function(e,n){function _(e){const n={className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},_=/[a-zA-Z@][a-zA-Z0-9_]*/,i=["int","float","while","char","export","sizeof","typedef","const","struct","for","union","unsigned","long","volatile","static","bool","mutable","if","do","return","goto","void","enum","else","break","extern","asm","case","short","default","double","register","explicit","signed","typename","this","switch","continue","wchar_t","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","super","unichar","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],t=["false","true","FALSE","TRUE","nil","YES","NO","NULL"],a=["BOOL","dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"],o={$pattern:_,keyword:i,literal:t,built_in:a},s={$pattern:_,keyword:["@interface","@class","@protocol","@implementation"]};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:o,illegal:"/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+s.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:s,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}}e.exports=_}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/highlight-js-perl.757d7b6f.js b/docs/swift-docc-render/js/highlight-js-perl.757d7b6f.js new file mode 100644 index 00000000..a4c74d11 --- /dev/null +++ b/docs/swift-docc-render/js/highlight-js-perl.757d7b6f.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-perl"],{"6a51":function(e,n){function t(e){const n=e.regex,t=["abs","accept","alarm","and","atan2","bind","binmode","bless","break","caller","chdir","chmod","chomp","chop","chown","chr","chroot","close","closedir","connect","continue","cos","crypt","dbmclose","dbmopen","defined","delete","die","do","dump","each","else","elsif","endgrent","endhostent","endnetent","endprotoent","endpwent","endservent","eof","eval","exec","exists","exit","exp","fcntl","fileno","flock","for","foreach","fork","format","formline","getc","getgrent","getgrgid","getgrnam","gethostbyaddr","gethostbyname","gethostent","getlogin","getnetbyaddr","getnetbyname","getnetent","getpeername","getpgrp","getpriority","getprotobyname","getprotobynumber","getprotoent","getpwent","getpwnam","getpwuid","getservbyname","getservbyport","getservent","getsockname","getsockopt","given","glob","gmtime","goto","grep","gt","hex","if","index","int","ioctl","join","keys","kill","last","lc","lcfirst","length","link","listen","local","localtime","log","lstat","lt","ma","map","mkdir","msgctl","msgget","msgrcv","msgsnd","my","ne","next","no","not","oct","open","opendir","or","ord","our","pack","package","pipe","pop","pos","print","printf","prototype","push","q|0","qq","quotemeta","qw","qx","rand","read","readdir","readline","readlink","readpipe","recv","redo","ref","rename","require","reset","return","reverse","rewinddir","rindex","rmdir","say","scalar","seek","seekdir","select","semctl","semget","semop","send","setgrent","sethostent","setnetent","setpgrp","setpriority","setprotoent","setpwent","setservent","setsockopt","shift","shmctl","shmget","shmread","shmwrite","shutdown","sin","sleep","socket","socketpair","sort","splice","split","sprintf","sqrt","srand","stat","state","study","sub","substr","symlink","syscall","sysopen","sysread","sysseek","system","syswrite","tell","telldir","tie","tied","time","times","tr","truncate","uc","ucfirst","umask","undef","unless","unlink","unpack","unshift","untie","until","use","utime","values","vec","wait","waitpid","wantarray","warn","when","while","write","x|0","xor","y|0"],s=/[dualxmsipngr]{0,12}/,r={$pattern:/[\w.]+/,keyword:t.join(" ")},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:r},a={begin:/->\{/,end:/\}/},o={variants:[{begin:/\$\d/},{begin:n.concat(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])")},{begin:/[$%@][^\s\w{]/,relevance:0}]},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,r="\\1")=>{const i="\\1"===r?r:n.concat(r,t);return n.concat(n.concat("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,r,s)},d=(e,t,r)=>n.concat(n.concat("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,r,s),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{endsWithParent:!0}),a,{className:"string",contains:c,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{begin:"-?\\w+\\s*=>",relevance:0}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[e.HASH_COMMENT_MODE,{className:"regexp",variants:[{begin:l("s|tr|y",n.either(...g,{capture:!0}))},{begin:l("s|tr|y","\\(","\\)")},{begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",n.either(...g,{capture:!0}),/\1/)},{begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{begin:d("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:r,contains:p}}e.exports=t}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/highlight-js-php.cc8d6c27.js b/docs/swift-docc-render/js/highlight-js-php.cc8d6c27.js new file mode 100644 index 00000000..3d12a9c9 --- /dev/null +++ b/docs/swift-docc-render/js/highlight-js-php.cc8d6c27.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-php"],{2907:function(e,r){function t(e){const r={className:"variable",begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*(?![A-Za-z0-9])(?![$])"},t={className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/,contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string",contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'"}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={className:"number",variants:[{begin:"\\b0b[01]+(?:_[01]+)*\\b"},{begin:"\\b0o[0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0x[\\da-f]+(?:_[\\da-f]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:e[+-]?\\d+)?"}],relevance:0},s={keyword:"__CLASS__ __DIR__ __FILE__ __FUNCTION__ __LINE__ __METHOD__ __NAMESPACE__ __TRAIT__ die echo exit include include_once print require require_once array abstract and as binary bool boolean break callable case catch class clone const continue declare default do double else elseif empty enddeclare endfor endforeach endif endswitch endwhile enum eval extends final finally float for foreach from global goto if implements instanceof insteadof int integer interface isset iterable list match|0 mixed new object or private protected public real return string switch throw trait try unset use var void while xor yield",literal:"false null true",built_in:"Error|0 AppendIterator ArgumentCountError ArithmeticError ArrayIterator ArrayObject AssertionError BadFunctionCallException BadMethodCallException CachingIterator CallbackFilterIterator CompileError Countable DirectoryIterator DivisionByZeroError DomainException EmptyIterator ErrorException Exception FilesystemIterator FilterIterator GlobIterator InfiniteIterator InvalidArgumentException IteratorIterator LengthException LimitIterator LogicException MultipleIterator NoRewindIterator OutOfBoundsException OutOfRangeException OuterIterator OverflowException ParentIterator ParseError RangeException RecursiveArrayIterator RecursiveCachingIterator RecursiveCallbackFilterIterator RecursiveDirectoryIterator RecursiveFilterIterator RecursiveIterator RecursiveIteratorIterator RecursiveRegexIterator RecursiveTreeIterator RegexIterator RuntimeException SeekableIterator SplDoublyLinkedList SplFileInfo SplFileObject SplFixedArray SplHeap SplMaxHeap SplMinHeap SplObjectStorage SplObserver SplObserver SplPriorityQueue SplQueue SplStack SplSubject SplSubject SplTempFileObject TypeError UnderflowException UnexpectedValueException UnhandledMatchError ArrayAccess Closure Generator Iterator IteratorAggregate Serializable Stringable Throwable Traversable WeakReference WeakMap Directory __PHP_Incomplete_Class parent php_user_filter self static stdClass"};return{case_insensitive:!0,keywords:s,contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[t]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler"}),t,{className:"keyword",begin:/\$this\b/},r,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}e.exports=t}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/highlight-js-python.c214ed92.js b/docs/swift-docc-render/js/highlight-js-python.c214ed92.js new file mode 100644 index 00000000..c8d2ed8d --- /dev/null +++ b/docs/swift-docc-render/js/highlight-js-python.c214ed92.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-python"],{9510:function(e,n){function a(e){const n=e.regex,a=/[\p{XID_Start}_]\p{XID_Continue}*/u,i=["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],s=["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],t=["__debug__","Ellipsis","False","None","NotImplemented","True"],r=["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"],l={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:i,built_in:s,literal:t,type:r},o={className:"meta",begin:/^(>>>|\.\.\.) /},b={className:"subst",begin:/\{/,end:/\}/,keywords:l,illegal:/#/},c={begin:/\{\{/,relevance:0},d={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,o],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,o],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,o,c,b]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,o,c,b]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,c,b]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,c,b]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},p="[0-9](_?[0-9])*",g=`(\\b(${p}))?\\.(${p})|\\b(${p})\\.`,m={className:"number",relevance:0,variants:[{begin:`(\\b(${p})|(${g}))[eE][+-]?(${p})[jJ]?\\b`},{begin:`(${g})[jJ]?`},{begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${p})[jJ]\\b`}]},_={className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:l,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},u={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:["self",o,m,d,e.HASH_COMMENT_MODE]}]};return b.contains=[d,m,o],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:l,illegal:/(<\/|->|\?)|=>/,contains:[o,m,{begin:/\bself\b/},{beginKeywords:"if",relevance:0},d,_,e.HASH_COMMENT_MODE,{match:[/def/,/\s+/,a],scope:{1:"keyword",3:"title.function"},contains:[u]},{variants:[{match:[/class/,/\s+/,a,/\s*/,/\(\s*/,a,/\s*\)/]},{match:[/class/,/\s+/,a]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[m,u,d]}]}}e.exports=a}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/highlight-js-ruby.f889d392.js b/docs/swift-docc-render/js/highlight-js-ruby.f889d392.js new file mode 100644 index 00000000..a8355da1 --- /dev/null +++ b/docs/swift-docc-render/js/highlight-js-ruby.f889d392.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-ruby"],{"82cb":function(e,n){function a(e){const n=e.regex,a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor __FILE__",built_in:"proc lambda",literal:"true false nil"},s={className:"doctag",begin:"@[A-Za-z]+"},b={begin:"#<",end:">"},c=[e.COMMENT("#","$",{contains:[s]}),e.COMMENT("^=begin","^=end",{contains:[s],relevance:10}),e.COMMENT("^__END__","\\n$")],r={className:"subst",begin:/#\{/,end:/\}/,keywords:i},d={className:"string",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:n.concat(/<<[-~]?'?/,n.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,r]})]}]},t="[1-9](_?[0-9])*|0",o="[0-9](_?[0-9])*",g={className:"number",relevance:0,variants:[{begin:`\\b(${t})(\\.(${o}))?([eE][+-]?(${o})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:i},_=[d,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE,relevance:0}]}].concat(c)},{className:"function",begin:n.concat(/def\s+/,n.lookahead(a+"\\s*(\\(|;|$)")),relevance:0,keywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:a}),l].concat(c)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[d,{begin:a}],relevance:0},g,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,r],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(b,c),relevance:0}].concat(b,c);r.contains=_,l.contains=_;const w="[>?]>",E="[\\w#]+\\(\\w+\\):\\d+:\\d+>",u="(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>",N=[{begin:/^\s*=>/,starts:{end:"$",contains:_}},{className:"meta",begin:"^("+w+"|"+E+"|"+u+")(?=[ ])",starts:{end:"$",contains:_}}];return c.unshift(b),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/,contains:[e.SHEBANG({binary:"ruby"})].concat(N).concat(c).concat(_)}}e.exports=a}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/highlight-js-scss.62ee18da.js b/docs/swift-docc-render/js/highlight-js-scss.62ee18da.js new file mode 100644 index 00000000..8f46244f --- /dev/null +++ b/docs/swift-docc-render/js/highlight-js-scss.62ee18da.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-scss"],{6113:function(e,t){const i=e=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/}}),o=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],r=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],a=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],n=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],l=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-height","max-width","min-height","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse();function s(e){const t=i(e),s=n,d=a,c="@[a-z-]+",p="and or not only",g="[a-zA-Z-][a-zA-Z0-9_-]*",m={className:"variable",begin:"(\\$"+g+")\\b"};return{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,t.CSS_NUMBER_MODE,{className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},t.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag",begin:"\\b("+o.join("|")+")\\b",relevance:0},{className:"selector-pseudo",begin:":("+d.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+s.join("|")+")"},m,{begin:/\(/,end:/\)/,contains:[t.CSS_NUMBER_MODE]},t.CSS_VARIABLE,{className:"attribute",begin:"\\b("+l.join("|")+")\\b"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:/:/,end:/[;}{]/,contains:[t.BLOCK_COMMENT,m,t.HEXCOLOR,t.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,t.IMPORTANT]},{begin:"@(page|font-face)",keywords:{$pattern:c,keyword:"@page @font-face"}},{begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,keyword:p,attribute:r.join(" ")},contains:[{begin:c,className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute"},m,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,t.HEXCOLOR,t.CSS_NUMBER_MODE]},t.FUNCTION_DISPATCH]}}e.exports=s}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/highlight-js-shell.dd7f411f.js b/docs/swift-docc-render/js/highlight-js-shell.dd7f411f.js new file mode 100644 index 00000000..999f4527 --- /dev/null +++ b/docs/swift-docc-render/js/highlight-js-shell.dd7f411f.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-shell"],{b65b:function(s,n){function e(s){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}s.exports=e}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/highlight-js-swift.84f3e88c.js b/docs/swift-docc-render/js/highlight-js-swift.84f3e88c.js new file mode 100644 index 00000000..89d1daf1 --- /dev/null +++ b/docs/swift-docc-render/js/highlight-js-swift.84f3e88c.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-swift"],{"2a39":function(e,n){function a(e){return e?"string"===typeof e?e:e.source:null}function t(e){return i("(?=",e,")")}function i(...e){const n=e.map(e=>a(e)).join("");return n}function s(e){const n=e[e.length-1];return"object"===typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{}}function u(...e){const n=s(e),t="("+(n.capture?"":"?:")+e.map(e=>a(e)).join("|")+")";return t}const c=e=>i(/\b/,e,/\w$/.test(e)?/\b/:/\B/),o=["Protocol","Type"].map(c),r=["init","self"].map(c),l=["Any","Self"],m=["actor","associatedtype","async","await",/as\?/,/as!/,"as","break","case","catch","class","continue","convenience","default","defer","deinit","didSet","do","dynamic","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],p=["false","nil","true"],d=["assignment","associativity","higherThan","left","lowerThan","none","right"],F=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warn_unqualified_access","#warning"],b=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],h=u(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),f=u(h,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),w=i(h,f,"*"),y=u(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),g=u(y,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),E=i(y,g,"*"),v=i(/[A-Z]/,g,"*"),A=["autoclosure",i(/convention\(/,u("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",i(/objc\(/,E,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","testable","UIApplicationMain","unknown","usableFromInline"],N=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function C(e){const n={match:/\s+/,relevance:0},a=e.COMMENT("/\\*","\\*/",{contains:["self"]}),s=[e.C_LINE_COMMENT_MODE,a],h={match:[/\./,u(...o,...r)],className:{2:"keyword"}},y={match:i(/\./,u(...m)),relevance:0},C=m.filter(e=>"string"===typeof e).concat(["_|0"]),k=m.filter(e=>"string"!==typeof e).concat(l).map(c),D={variants:[{className:"keyword",match:u(...k,...r)}]},B={$pattern:u(/\b\w+/,/#\w+/),keyword:C.concat(F),literal:p},_=[h,y,D],S={match:i(/\./,u(...b)),relevance:0},M={className:"built_in",match:i(/\b/,u(...b),/(?=\()/)},x=[S,M],$={match:/->/,relevance:0},I={className:"operator",relevance:0,variants:[{match:w},{match:`\\.(\\.|${f})+`}]},O=[$,I],L="([0-9]_*)+",T="([0-9a-fA-F]_*)+",j={className:"number",relevance:0,variants:[{match:`\\b(${L})(\\.(${L}))?([eE][+-]?(${L}))?\\b`},{match:`\\b0x(${T})(\\.(${T}))?([pP][+-]?(${L}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},P=(e="")=>({className:"subst",variants:[{match:i(/\\/,e,/[0\\tnr"']/)},{match:i(/\\/,e,/u\{[0-9a-fA-F]{1,8}\}/)}]}),K=(e="")=>({className:"subst",match:i(/\\/,e,/[\t ]*(?:[\r\n]|\r\n)/)}),z=(e="")=>({className:"subst",label:"interpol",begin:i(/\\/,e,/\(/),end:/\)/}),q=(e="")=>({begin:i(e,/"""/),end:i(/"""/,e),contains:[P(e),K(e),z(e)]}),U=(e="")=>({begin:i(e,/"/),end:i(/"/,e),contains:[P(e),z(e)]}),Z={className:"string",variants:[q(),q("#"),q("##"),q("###"),U(),U("#"),U("##"),U("###")]},V={match:i(/`/,E,/`/)},W={className:"variable",match:/\$\d+/},G={className:"variable",match:`\\$${g}+`},J=[V,W,G],R={match:/(@|#)available/,className:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:N,contains:[...O,j,Z]}]}},X={className:"keyword",match:i(/@/,u(...A))},H={className:"meta",match:i(/@/,E)},Q=[R,X,H],Y={match:t(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:i(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,g,"+")},{className:"type",match:v,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:i(/\s+&\s+/,t(v)),relevance:0}]},ee={begin://,keywords:B,contains:[...s,..._,...Q,$,Y]};Y.contains.push(ee);const ne={match:i(E,/\s*:/),keywords:"_|0",relevance:0},ae={begin:/\(/,end:/\)/,relevance:0,keywords:B,contains:["self",ne,...s,..._,...x,...O,j,Z,...J,...Q,Y]},te={begin://,contains:[...s,Y]},ie={begin:u(t(i(E,/\s*:/)),t(i(E,/\s+/,E,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:E}]},se={begin:/\(/,end:/\)/,keywords:B,contains:[ie,...s,..._,...O,j,Z,...Q,Y,ae],endsParent:!0,illegal:/["']/},ue={match:[/func/,/\s+/,u(V.match,E,w)],className:{1:"keyword",3:"title.function"},contains:[te,se,n],illegal:[/\[/,/%/]},ce={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[te,se,n],illegal:/\[|%/},oe={match:[/operator/,/\s+/,w],className:{1:"keyword",3:"title"}},re={begin:[/precedencegroup/,/\s+/,v],className:{1:"keyword",3:"title"},contains:[Y],keywords:[...d,...p],end:/}/};for(const t of Z.variants){const e=t.contains.find(e=>"interpol"===e.label);e.keywords=B;const n=[..._,...x,...O,j,Z,...J];e.contains=[...n,{begin:/\(/,end:/\)/,contains:["self",...n]}]}return{name:"Swift",keywords:B,contains:[...s,ue,ce,{beginKeywords:"struct protocol class extension enum actor",end:"\\{",excludeEnd:!0,keywords:B,contains:[e.inherit(e.TITLE_MODE,{className:"title.class",begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/}),..._]},oe,re,{beginKeywords:"import",end:/$/,contains:[...s],relevance:0},..._,...x,...O,j,Z,...J,...Q,Y,ae]}}e.exports=C}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/highlight-js-xml.9c3688c7.js b/docs/swift-docc-render/js/highlight-js-xml.9c3688c7.js new file mode 100644 index 00000000..55cc1e27 --- /dev/null +++ b/docs/swift-docc-render/js/highlight-js-xml.9c3688c7.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-xml"],{"8dcb":function(e,n){function a(e){const n=e.regex,a=n.concat(/[A-Z_]/,n.optional(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),s=/[A-Za-z0-9._:-]+/,t={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},i={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},c=e.inherit(i,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{className:"string"}),r=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),g={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin://,relevance:10,contains:[i,r,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[i,c,r,l]}]}]},e.COMMENT(//,{relevance:10}),{begin://,relevance:10},t,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[g],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[g],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:n.concat(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:a,relevance:0,starts:g}]},{className:"tag",begin:n.concat(/<\//,n.lookahead(n.concat(a,/>/))),contains:[{className:"name",begin:a,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}e.exports=a}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/js/index.891036dc.js b/docs/swift-docc-render/js/index.891036dc.js new file mode 100644 index 00000000..5c7c290b --- /dev/null +++ b/docs/swift-docc-render/js/index.891036dc.js @@ -0,0 +1,9 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */(function(e){function t(t){for(var i,n,h=t[0],a=t[1],c=t[2],l=0,u=[];l])/g,n=/^-+/,r=/["'&<>]/g;function s(e){return e.trim().replace(i,"-").replace(n,"").toLowerCase()}function h(e){const t=e=>({'"':""","'":"'","&":"&","<":"<",">":">"}[e]||e);return e.replace(r,t)}const a={zero:"zero",one:"one",two:"two",few:"few",many:"many",other:"other"},c={cardinal:"cardinal",ordinal:"ordinal"};function l(e,t){const{cardinal:o}=c,{one:i,other:n}=a,r="en",s=1===t?i:n;if(!e[r]||!e[r][s])throw new Error("No default choices provided to pluralize using default locale "+r);let h=r,l=s;if("Intl"in window&&"PluralRules"in window.Intl){const i=navigator.languages?navigator.languages:[navigator.language],n=new Intl.PluralRules(i,{type:o}),r=n.select(t),s=n.resolvedOptions().locale;e[s]&&e[s][r]&&(h=s,l=r)}return e[h][l]}function u(e){const t=/#(\d)(.*)/.exec(e);if(null===t)return e;const[o,i]=t.slice(1),n=`\\3${o} `;return`#${n}${i}`}},"1b02":function(e,t,o){"use strict";o("a6ff")},"2be1":function(e,t,o){"use strict";o("9b4f")},3908:function(e,t,o){"use strict";function i(e){let t=null,o=e-1;const i=new Promise(e=>{t=e});return requestAnimationFrame((function e(){o-=1,o<=0?t():requestAnimationFrame(e)})),i}o.d(t,"a",(function(){return i}))},"5c0b":function(e,t,o){"use strict";o("9c0c")},"63b8":function(e,t,o){"use strict";o.d(t,"b",(function(){return i})),o.d(t,"c",(function(){return n})),o.d(t,"a",(function(){return r})),o.d(t,"d",(function(){return h}));const i={large:"large",medium:"medium",small:"small"},n={default:"default",nav:"nav"},r={[n.default]:{[i.large]:{minWidth:1069,contentWidth:980},[i.medium]:{minWidth:736,maxWidth:1068,contentWidth:692},[i.small]:{minWidth:320,maxWidth:735,contentWidth:280}},[n.nav]:{[i.large]:{minWidth:1024},[i.medium]:{minWidth:768,maxWidth:1023},[i.small]:{minWidth:320,maxWidth:767}}},s={[i.small]:0,[i.medium]:1,[i.large]:2};function h(e,t){return s[e]>s[t]}},6842:function(e,t,o){"use strict";function i(e,t,o){let i,n=e,r=t;for("string"===typeof r&&(r=[r]),i=0;ie.json()).catch(()=>({}))}const h=(e,t)=>i(n,e,t)},7138:function(e,t,o){"use strict";o("813c")},"813c":function(e,t,o){},"821b":function(e,t,o){"use strict";t["a"]={auto:{label:"Auto",value:"auto"},dark:{label:"Dark",value:"dark"},light:{label:"Light",value:"light"}}},"942d":function(e,t,o){"use strict";o.d(t,"a",(function(){return i})),o.d(t,"b",(function(){return n})),o.d(t,"c",(function(){return r}));const i=52,n=48,r="nav-sticky-anchor"},9895:function(e,t,o){"use strict";o.d(t,"b",(function(){return i})),o.d(t,"a",(function(){return n}));const i="not-found",n="documentation-topic"},"9b4f":function(e,t,o){},"9c0c":function(e,t,o){},a6aa:function(e,t,o){"use strict";o("d964")},a6ff:function(e,t,o){},d26a:function(e,t,o){"use strict";o.d(t,"c",(function(){return n})),o.d(t,"b",(function(){return r})),o.d(t,"a",(function(){return s}));var i={input:"input",tags:"tags"};function n(e={}){return Object.entries(e).reduce((e,[t,o])=>o?e.concat(`${encodeURIComponent(t)}=${encodeURIComponent(o)}`):e,[]).join("&")}function r(e,{changes:t,language:o,context:i}={}){const[r,s]=e.split("#"),h=r.match(/\?.*/),a=n({changes:t,language:o,context:i}),c=h?"&":"?",l=s?r:e,u=a?`${c}${a}`:"",d=s?"#"+s:"";return`${l}${u}${d}`}function s(e,t){const{query:{changes:o,[i.input]:n,[i.tags]:r,...s}={}}=e,{query:{changes:h,[i.input]:a,[i.tags]:c,...l}={}}=t;return e.name===t.name&&JSON.stringify({path:e.path,query:s})===JSON.stringify({path:t.path,query:l})}},d369:function(e,t,o){"use strict";const i={getItem:e=>{try{return localStorage.getItem(e)}catch(t){return null}},setItem:(e,t)=>{try{localStorage.setItem(e,t)}catch(o){}}},n={preferredColorScheme:"developer.setting.preferredColorScheme",preferredLanguage:"docs.setting.preferredLanguage"},r={preferredColorScheme:"docs.setting.preferredColorScheme"};t["a"]=Object.defineProperties({},Object.keys(n).reduce((e,t)=>({...e,[t]:{get:()=>{const e=r[t],o=i.getItem(n[t]);return e?o||i.getItem(e):o},set:e=>i.setItem(n[t],e)}}),{}))},d964:function(e,t,o){},e425:function(e,t,o){"use strict";var i=o("821b"),n=o("d369");const r="undefined"!==typeof window.matchMedia&&[i["a"].light.value,i["a"].dark.value,"no-preference"].some(e=>window.matchMedia(`(prefers-color-scheme: ${e})`).matches),s=r?i["a"].auto:i["a"].light;t["a"]={state:{preferredColorScheme:n["a"].preferredColorScheme||s.value,supportsAutoColorScheme:r,systemColorScheme:i["a"].light.value},setPreferredColorScheme(e){this.state.preferredColorScheme=e,n["a"].preferredColorScheme=e},setSystemColorScheme(e){this.state.systemColorScheme=e},syncPreferredColorScheme(){n["a"].preferredColorScheme&&n["a"].preferredColorScheme!==this.state.preferredColorScheme&&(this.state.preferredColorScheme=n["a"].preferredColorScheme)}}},e4ca:function(e,t,o){},e51f:function(e,t,o){"use strict";o("e4ca")},ed96:function(e,t,o){o.p=window.baseUrl},f161:function(e,t,o){"use strict";o.r(t);o("ed96");var i=o("2b0e"),n=o("8c4f"),r=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{class:{fromkeyboard:e.fromKeyboard,hascustomheader:e.hasCustomHeader},attrs:{id:"app"}},[o("a",{attrs:{href:"#main",id:"skip-nav"}},[e._v("Skip Navigation")]),o("InitialLoadingPlaceholder"),e._t("header",(function(){return[e.hasCustomHeader?o("custom-header",{attrs:{"data-color-scheme":e.preferredColorScheme}}):e._e()]}),{isTargetIDE:e.isTargetIDE}),o("div",{attrs:{id:e.baseNavStickyAnchorId}}),e._t("default",(function(){return[o("router-view"),e.hasCustomFooter?o("custom-footer",{attrs:{"data-color-scheme":e.preferredColorScheme}}):o("Footer")]}),{isTargetIDE:e.isTargetIDE}),e._t("footer",null,{isTargetIDE:e.isTargetIDE})],2)},s=[],h=o("e425"),a=o("821b"),c=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("footer",{staticClass:"footer"},[o("div",{staticClass:"row"},[o("ColorSchemeToggle")],1)])},l=[],u=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{staticClass:"color-scheme-toggle",attrs:{"aria-label":"Select a color scheme preference",role:"radiogroup",tabindex:"0"}},e._l(e.options,(function(t){return o("label",{key:t.value},[o("input",{attrs:{type:"radio"},domProps:{checked:t.value==e.preferredColorScheme,value:t.value},on:{input:e.setPreferredColorScheme}}),o("div",{staticClass:"text"},[e._v(e._s(t.label))])])})),0)},d=[],g={name:"ColorSchemeToggle",data:()=>({appState:h["a"].state}),computed:{options:({supportsAutoColorScheme:e})=>[a["a"].light,a["a"].dark,...e?[a["a"].auto]:[]],preferredColorScheme:({appState:e})=>e.preferredColorScheme,supportsAutoColorScheme:({appState:e})=>e.supportsAutoColorScheme},methods:{setPreferredColorScheme:e=>{h["a"].setPreferredColorScheme(e.target.value)}},watch:{preferredColorScheme:{immediate:!0,handler(e){document.body.dataset.colorScheme=e}}}},f=g,m=(o("2be1"),o("2877")),p=Object(m["a"])(f,u,d,!1,null,"4472ec1e",null),j=p.exports,v={name:"Footer",components:{ColorSchemeToggle:j}},w=v,b=(o("1b02"),Object(m["a"])(w,c,l,!1,null,"67c823d8",null)),y=b.exports,S=function(){var e=this,t=e.$createElement,o=e._self._c||t;return e.loaded?e._e():o("div",{staticClass:"InitialLoadingPlaceholder",attrs:{id:"loading-placeholder"}})},E=[],C={name:"InitialLoadingPlaceholder",data(){return{loaded:!1}},created(){this.$router.onReady(()=>{this.loaded=!0})}},_=C,P=(o("e51f"),Object(m["a"])(_,S,E,!1,null,"47e4ace8",null)),T=P.exports,k=o("942d"),A=o("6842");function O(e,t){return e&&"object"===typeof e&&Object.prototype.hasOwnProperty.call(e,t)&&"string"===typeof e[t]}function x(e,t,o,i){if(!t||"object"!==typeof t||i&&(O(t,"light")||O(t,"dark"))){let n=t;if(O(t,i)&&(n=t[i]),"object"===typeof n)return;o[e]=n}else Object.entries(t).forEach(([t,n])=>{const r=[e,t].join("-");x(r,n,o,i)})}function L(e,t="light"){const o={},i=e||{};return x("-",i,o,t),o}var D={name:"CoreApp",components:{Footer:y,InitialLoadingPlaceholder:T},provide(){return{isTargetIDE:this.isTargetIDE,performanceMetricsEnabled:"true"===Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_PERFORMANCE_ENABLED}},data(){return{appState:h["a"].state,fromKeyboard:!1,isTargetIDE:"ide"===Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET,themeSettings:A["d"],baseNavStickyAnchorId:k["c"]}},computed:{currentColorScheme:({appState:e})=>e.systemColorScheme,preferredColorScheme:({appState:e})=>e.preferredColorScheme,CSSCustomProperties:({themeSettings:e,currentColorScheme:t})=>L(e.theme,t),hasCustomHeader:()=>!!window.customElements.get("custom-header"),hasCustomFooter:()=>!!window.customElements.get("custom-footer")},props:{enableThemeSettings:{type:Boolean,default:!0}},watch:{CSSCustomProperties:{immediate:!0,handler(e){this.detachStylesFromRoot(e),this.attachStylesToRoot(e)}}},async created(){window.addEventListener("keydown",this.onKeyDown),this.$bridge.on("navigation",this.handleNavigationRequest),this.enableThemeSettings&&Object.assign(this.themeSettings,await Object(A["b"])()),window.addEventListener("pageshow",this.syncPreferredColorScheme),this.$once("hook:beforeDestroy",()=>{window.removeEventListener("pageshow",this.syncPreferredColorScheme)})},mounted(){(document.querySelector(".footer-current-year")||{}).innerText=(new Date).getFullYear(),this.attachColorSchemeListeners()},beforeDestroy(){this.fromKeyboard?window.removeEventListener("mousedown",this.onMouseDown):window.removeEventListener("keydown",this.onKeyDown),this.$bridge.off("navigation",this.handleNavigationRequest),this.detachStylesFromRoot(this.CSSCustomProperties)},methods:{onKeyDown(){this.fromKeyboard=!0,window.addEventListener("mousedown",this.onMouseDown),window.removeEventListener("keydown",this.onKeyDown)},onMouseDown(){this.fromKeyboard=!1,window.addEventListener("keydown",this.onKeyDown),window.removeEventListener("mousedown",this.onMouseDown)},handleNavigationRequest(e){this.$router.push(e)},attachColorSchemeListeners(){if(!window.matchMedia)return;const e=window.matchMedia("(prefers-color-scheme: dark)");e.addListener(this.onColorSchemePreferenceChange),this.$once("hook:beforeDestroy",()=>{e.removeListener(this.onColorSchemePreferenceChange)}),this.onColorSchemePreferenceChange(e)},onColorSchemePreferenceChange({matches:e}){const t=e?a["a"].dark:a["a"].light;h["a"].setSystemColorScheme(t.value)},attachStylesToRoot(e){const t=document.documentElement;Object.entries(e).filter(([,e])=>Boolean(e)).forEach(([e,o])=>{t.style.setProperty(e,o)})},detachStylesFromRoot(e){const t=document.documentElement;Object.entries(e).forEach(([e])=>{t.style.removeProperty(e)})},syncPreferredColorScheme(){h["a"].syncPreferredColorScheme()}}},I=D,$=(o("5c0b"),o("a6aa"),Object(m["a"])(I,r,s,!1,null,"bf0cd418",null)),N=$.exports;class R{constructor(){this.$send=()=>{}}send(e){this.$send(e)}}class U{constructor(){const{webkit:{messageHandlers:{bridge:e={}}={}}={}}=window;this.bridge=e;const{postMessage:t=(()=>{})}=e;this.$send=t.bind(e)}send(e){this.$send(e)}}class M{constructor(e=new R){this.backend=e,this.listeners={}}send(e){this.backend.send(e)}receive(e){this.emit(e.type,e.data)}emit(e,t){this.listeners[e]&&this.listeners[e].forEach(e=>e(t))}on(e,t){this.listeners[e]||(this.listeners[e]=new Set),this.listeners[e].add(t)}off(e,t){this.listeners[e]&&this.listeners[e].delete(t)}}var B={install(e,t){let o;o=t.performanceMetricsEnabled||"ide"===t.appTarget?new U:new R,e.prototype.$bridge=new M(o)}};function W(e){return"custom-"+e}function V(e){return class extends HTMLElement{constructor(){super();const t=this.attachShadow({mode:"open"}),o=e.content.cloneNode(!0);t.appendChild(o)}}}function q(e){const t=W(e),o=document.getElementById(t);o&&window.customElements.define(t,V(o))}function F(e,t={names:["header","footer"]}){const{names:o}=t;e.config.ignoredElements=/^custom-/,o.forEach(q)}function H(e,t){const{value:o=!1}=t;e.style.display=o?"none":""}var K={hide:H};function G(e,{performanceMetrics:t=!1}={}){e.config.productionTip=!1,e.use(F),e.directive("hide",K.hide),e.use(B,{appTarget:Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET,performanceMetricsEnabled:t}),window.bridge=e.prototype.$bridge,e.config.performance=t}var J=o("9895"),z=o("63b8"),Y=o("3908"),X=o("002d"),Q=o("d26a");function Z(){const{location:e}=window;return e.pathname+e.search+e.hash}function ee(){const e=Math.max(document.documentElement.clientWidth||0,window.innerWidth||0);return ePromise.all([o.e("documentation-topic~topic~tutorials-overview"),o.e("tutorials-overview")]).then(o.bind(null,"f025"))},{path:"/tutorials/:id/*",name:"topic",component:()=>Promise.all([o.e("documentation-topic~topic~tutorials-overview"),o.e("topic")]).then(o.bind(null,"3213"))},{path:"/documentation/*",name:J["a"],component:()=>Promise.all([o.e("documentation-topic~topic~tutorials-overview"),o.e("documentation-topic")]).then(o.bind(null,"f8ac"))},{path:"*",name:J["b"],component:ye},{path:"*",name:"server-error",component:me}];function Ee(e={}){const t=new n["a"]({mode:"history",base:A["a"],scrollBehavior:te,...e,routes:e.routes||Se});return t.onReady(()=>{"scrollRestoration"in window.history&&(window.history.scrollRestoration="manual"),oe()}),"ide"!==Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET&&t.onError(e=>{const{route:o={path:"/"}}=e;t.replace({name:"server-error",params:[o.path]})}),window.addEventListener("unload",ie),t}i["default"].use(G),i["default"].use(n["a"]),new i["default"]({router:Ee(),render:e=>e(N)}).$mount("#app")}}); \ No newline at end of file diff --git a/docs/swift-docc-render/js/topic.c4c8f983.js b/docs/swift-docc-render/js/topic.c4c8f983.js new file mode 100644 index 00000000..af534639 --- /dev/null +++ b/docs/swift-docc-render/js/topic.c4c8f983.js @@ -0,0 +1,20 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["topic"],{"00f4":function(e,t,n){"use strict";n("282f")},"0466":function(e,t,n){},"0530":function(e,t,n){"use strict";n("dbeb")},"0b61":function(e,t,n){},1006:function(e,t,n){"use strict";n("a95e")},"14b7":function(e,t,n){},"1aae":function(e,t,n){},"1d42":function(e,t,n){},"1dd5":function(e,t,n){"use strict";n("7b17")},"282f":function(e,t,n){},"2b88":function(e,t,n){"use strict"; +/*! + * portal-vue © Thorsten Lünborg, 2019 + * + * Version: 2.1.7 + * + * LICENCE: MIT + * + * https://github.com/linusborg/portal-vue + * + */function s(e){return e&&"object"===typeof e&&"default"in e?e["default"]:e}Object.defineProperty(t,"__esModule",{value:!0});var i=s(n("2b0e"));function r(e){return r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}function o(e){return a(e)||l(e)||c()}function a(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t1&&void 0!==arguments[1]?arguments[1]:{};return e.reduce((function(e,n){var s=n.passengers[0],i="function"===typeof s?s(t):n.passengers;return e.concat(i)}),[])}function h(e,t){return e.map((function(e,t){return[t,e]})).sort((function(e,n){return t(e[1],n[1])||e[0]-n[0]})).map((function(e){return e[1]}))}function m(e,t){return t.reduce((function(t,n){return e.hasOwnProperty(n)&&(t[n]=e[n]),t}),{})}var f={},v={},g={},y=i.extend({data:function(){return{transports:f,targets:v,sources:g,trackInstances:u}},methods:{open:function(e){if(u){var t=e.to,n=e.from,s=e.passengers,r=e.order,o=void 0===r?1/0:r;if(t&&n&&s){var a={to:t,from:n,passengers:d(s),order:o},l=Object.keys(this.transports);-1===l.indexOf(t)&&i.set(this.transports,t,[]);var c=this.$_getTransportIndex(a),p=this.transports[t].slice(0);-1===c?p.push(a):p[c]=a,this.transports[t]=h(p,(function(e,t){return e.order-t.order}))}}},close:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e.to,s=e.from;if(n&&(s||!1!==t)&&this.transports[n])if(t)this.transports[n]=[];else{var i=this.$_getTransportIndex(e);if(i>=0){var r=this.transports[n].slice(0);r.splice(i,1),this.transports[n]=r}}},registerTarget:function(e,t,n){u&&(this.trackInstances&&!n&&this.targets[e]&&console.warn("[portal-vue]: Target ".concat(e," already exists")),this.$set(this.targets,e,Object.freeze([t])))},unregisterTarget:function(e){this.$delete(this.targets,e)},registerSource:function(e,t,n){u&&(this.trackInstances&&!n&&this.sources[e]&&console.warn("[portal-vue]: source ".concat(e," already exists")),this.$set(this.sources,e,Object.freeze([t])))},unregisterSource:function(e){this.$delete(this.sources,e)},hasTarget:function(e){return!(!this.targets[e]||!this.targets[e][0])},hasSource:function(e){return!(!this.sources[e]||!this.sources[e][0])},hasContentFor:function(e){return!!this.transports[e]&&!!this.transports[e].length},$_getTransportIndex:function(e){var t=e.to,n=e.from;for(var s in this.transports[t])if(this.transports[t][s].from===n)return+s;return-1}}}),b=new y(f),C=1,w=i.extend({name:"portal",props:{disabled:{type:Boolean},name:{type:String,default:function(){return String(C++)}},order:{type:Number,default:0},slim:{type:Boolean},slotProps:{type:Object,default:function(){return{}}},tag:{type:String,default:"DIV"},to:{type:String,default:function(){return String(Math.round(1e7*Math.random()))}}},created:function(){var e=this;this.$nextTick((function(){b.registerSource(e.name,e)}))},mounted:function(){this.disabled||this.sendUpdate()},updated:function(){this.disabled?this.clear():this.sendUpdate()},beforeDestroy:function(){b.unregisterSource(this.name),this.clear()},watch:{to:function(e,t){t&&t!==e&&this.clear(t),this.sendUpdate()}},methods:{clear:function(e){var t={from:this.name,to:e||this.to};b.close(t)},normalizeSlots:function(){return this.$scopedSlots.default?[this.$scopedSlots.default]:this.$slots.default},normalizeOwnChildren:function(e){return"function"===typeof e?e(this.slotProps):e},sendUpdate:function(){var e=this.normalizeSlots();if(e){var t={from:this.name,to:this.to,passengers:o(e),order:this.order};b.open(t)}else this.clear()}},render:function(e){var t=this.$slots.default||this.$scopedSlots.default||[],n=this.tag;return t&&this.disabled?t.length<=1&&this.slim?this.normalizeOwnChildren(t)[0]:e(n,[this.normalizeOwnChildren(t)]):this.slim?e():e(n,{class:{"v-portal":!0},style:{display:"none"},key:"v-portal-placeholder"})}}),_=i.extend({name:"portalTarget",props:{multiple:{type:Boolean,default:!1},name:{type:String,required:!0},slim:{type:Boolean,default:!1},slotProps:{type:Object,default:function(){return{}}},tag:{type:String,default:"div"},transition:{type:[String,Object,Function]}},data:function(){return{transports:b.transports,firstRender:!0}},created:function(){var e=this;this.$nextTick((function(){b.registerTarget(e.name,e)}))},watch:{ownTransports:function(){this.$emit("change",this.children().length>0)},name:function(e,t){b.unregisterTarget(t),b.registerTarget(e,this)}},mounted:function(){var e=this;this.transition&&this.$nextTick((function(){e.firstRender=!1}))},beforeDestroy:function(){b.unregisterTarget(this.name)},computed:{ownTransports:function(){var e=this.transports[this.name]||[];return this.multiple?e:0===e.length?[]:[e[e.length-1]]},passengers:function(){return p(this.ownTransports,this.slotProps)}},methods:{children:function(){return 0!==this.passengers.length?this.passengers:this.$scopedSlots.default?this.$scopedSlots.default(this.slotProps):this.$slots.default||[]},noWrapper:function(){var e=this.slim&&!this.transition;return e&&this.children().length>1&&console.warn("[portal-vue]: PortalTarget with `slim` option received more than one child element."),e}},render:function(e){var t=this.noWrapper(),n=this.children(),s=this.transition||this.tag;return t?n[0]:this.slim&&!s?e():e(s,{props:{tag:this.transition&&this.tag?this.tag:void 0},class:{"vue-portal-target":!0}},n)}}),S=0,k=["disabled","name","order","slim","slotProps","tag","to"],x=["multiple","transition"],T=i.extend({name:"MountingPortal",inheritAttrs:!1,props:{append:{type:[Boolean,String]},bail:{type:Boolean},mountTo:{type:String,required:!0},disabled:{type:Boolean},name:{type:String,default:function(){return"mounted_"+String(S++)}},order:{type:Number,default:0},slim:{type:Boolean},slotProps:{type:Object,default:function(){return{}}},tag:{type:String,default:"DIV"},to:{type:String,default:function(){return String(Math.round(1e7*Math.random()))}},multiple:{type:Boolean,default:!1},targetSlim:{type:Boolean},targetSlotProps:{type:Object,default:function(){return{}}},targetTag:{type:String,default:"div"},transition:{type:[String,Object,Function]}},created:function(){if("undefined"!==typeof document){var e=document.querySelector(this.mountTo);if(e){var t=this.$props;if(b.targets[t.name])t.bail?console.warn("[portal-vue]: Target ".concat(t.name," is already mounted.\n Aborting because 'bail: true' is set")):this.portalTarget=b.targets[t.name];else{var n=t.append;if(n){var s="string"===typeof n?n:"DIV",i=document.createElement(s);e.appendChild(i),e=i}var r=m(this.$props,x);r.slim=this.targetSlim,r.tag=this.targetTag,r.slotProps=this.targetSlotProps,r.name=this.to,this.portalTarget=new _({el:e,parent:this.$parent||this,propsData:r})}}else console.error("[portal-vue]: Mount Point '".concat(this.mountTo,"' not found in document"))}},beforeDestroy:function(){var e=this.portalTarget;if(this.append){var t=e.$el;t.parentNode.removeChild(t)}e.$destroy()},render:function(e){if(!this.portalTarget)return console.warn("[portal-vue] Target wasn't mounted"),e();if(!this.$scopedSlots.manual){var t=m(this.$props,k);return e(w,{props:t,attrs:this.$attrs,on:this.$listeners,scopedSlots:this.$scopedSlots},this.$slots.default)}var n=this.$scopedSlots.manual({to:this.to});return Array.isArray(n)&&(n=n[0]),n||e()}});function A(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.component(t.portalName||"Portal",w),e.component(t.portalTargetName||"PortalTarget",_),e.component(t.MountingPortalName||"MountingPortal",T)}var $={install:A};t.default=$,t.Portal=w,t.PortalTarget=_,t.MountingPortal=T,t.Wormhole=b},"2f9d":function(e,t,n){"use strict";n("525c")},"2fac":function(e,t,n){"use strict";n("1d42")},3012:function(e,t,n){"use strict";n("a60e")},"311b":function(e,t,n){},3213:function(e,t,n){"use strict";n.r(t);var s=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[e.topicData?n(e.componentFor(e.topicData),e._b({key:e.topicKey,tag:"component",attrs:{hierarchy:e.hierarchy}},"component",e.propsFor(e.topicData),!1)):e._e()],1)},i=[],r=n("25a9"),o=n("a97e");const{BreakpointName:a}=o["a"].constants;var l,c,u={state:{linkableSections:[],breakpoint:a.large},addLinkableSection(e){const t={...e,visibility:0};t.sectionNumber=this.state.linkableSections.length,this.state.linkableSections.push(t)},reset(){this.state.linkableSections=[],this.state.breakpoint=a.large},updateLinkableSection(e){this.state.linkableSections=this.state.linkableSections.map(t=>e.anchor===t.anchor?{...t,visibility:e.visibility}:t)},updateBreakpoint(e){this.state.breakpoint=e}},d=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"article"},[e.isTargetIDE?e._e():n("NavigationBar",{attrs:{chapters:e.hierarchy.modules,technology:e.metadata.category,topic:e.heroTitle||"",rootReference:e.hierarchy.reference}}),n("main",{attrs:{id:"main",role:"main",tabindex:"0"}},[e._t("above-hero"),e._l(e.sections,(function(t,s){return n(e.componentFor(t),e._b({key:s,tag:"component"},"component",e.propsFor(t),!1))}))],2),n("PortalTarget",{attrs:{name:"modal-destination",multiple:""}})],1)},p=[],h=n("2b88"),m=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("NavBase",{attrs:{id:"nav","aria-label":e.technology,hasSolidBackground:""}},[n("template",{slot:"default"},[n("ReferenceUrlProvider",{attrs:{reference:e.rootReference},scopedSlots:e._u([{key:"default",fn:function(t){var s=t.urlWithParams;return n("NavTitleContainer",{attrs:{to:s}},[n("template",{slot:"default"},[e._v(e._s(e.technology))]),n("template",{slot:"subhead"},[e._v("Tutorials")])],2)}}])})],1),n("template",{slot:"after-title"},[n("div",{staticClass:"separator"})]),n("template",{slot:"tray"},[n("div",{staticClass:"mobile-dropdown-container"},[n("MobileDropdown",{attrs:{options:e.chapters,sections:e.optionsForSections,currentOption:e.currentSection?e.currentSection.title:""},on:{"select-section":e.onSelectSection}})],1),n("div",{staticClass:"dropdown-container"},[n("PrimaryDropdown",{staticClass:"primary-dropdown",attrs:{options:e.chapters,currentOption:e.topic}}),n("ChevronIcon",{staticClass:"icon-inline"}),e.currentSection?n("SecondaryDropdown",{staticClass:"secondary-dropdown",attrs:{options:e.optionsForSections,currentOption:e.currentSection.title,sectionTracker:e.sectionIndicatorText},on:{"select-section":e.onSelectSection}}):e._e()],1)])],2)},f=[],v=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"chevron-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M3.22 1.184l0.325-0.38 7.235 6.201-7.235 6.19-0.325-0.38 6.792-5.811-6.792-5.82z"}})])},g=[],y=n("be08"),b={name:"ChevronIcon",components:{SVGIcon:y["a"]}},C=b,w=n("2877"),_=Object(w["a"])(C,v,g,!1,null,null,null),S=_.exports,k=n("d26a"),x={name:"ReferenceUrlProvider",inject:{references:{default:()=>({})}},props:{reference:{type:String,required:!0}},computed:{resolvedReference:({references:e,reference:t})=>e[t]||{},url:({resolvedReference:e})=>e.url,title:({resolvedReference:e})=>e.title},render(){return this.$scopedSlots.default({url:this.url,urlWithParams:Object(k["b"])(this.url,this.$route.query),title:this.title,reference:this.resolvedReference})}},T=x,A=Object(w["a"])(T,l,c,!1,null,null,null),$=A.exports,I=n("8a61"),O=n("cbcf"),P=n("653a"),N=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("NavMenuItems",{staticClass:"mobile-dropdown"},e._l(e.options,(function(t){return n("ReferenceUrlProvider",{key:t.reference,attrs:{reference:t.reference},scopedSlots:e._u([{key:"default",fn:function(s){var i=s.title;return n("NavMenuItemBase",{staticClass:"chapter-list",attrs:{role:"group"}},[n("p",{staticClass:"chapter-name"},[e._v(e._s(i))]),n("ul",{staticClass:"tutorial-list"},e._l(t.projects,(function(t){return n("ReferenceUrlProvider",{key:t.reference,attrs:{reference:t.reference},scopedSlots:e._u([{key:"default",fn:function(t){var s=t.url,i=t.urlWithParams,r=t.title;return n("li",{staticClass:"tutorial-list-item"},[n("router-link",{staticClass:"option tutorial",attrs:{to:i,value:r}},[e._v(" "+e._s(r)+" ")]),s===e.$route.path?n("ul",{staticClass:"section-list",attrs:{role:"listbox"}},e._l(e.sections,(function(t){return n("li",{key:t.title},[n("router-link",{class:e.classesFor(t),attrs:{to:{path:t.path,query:e.$route.query},value:t.title},nativeOn:{click:function(n){return e.onClick(t)}}},[e._v(" "+e._s(t.title)+" ")])],1)})),0):e._e()],1)}}],null,!0)})})),1)])}}],null,!0)})})),1)},j=[],B=n("863d"),D=n("9b30"),M={name:"MobileDropdown",components:{NavMenuItems:D["a"],NavMenuItemBase:B["a"],ReferenceUrlProvider:$},props:{options:{type:Array,required:!0},currentOption:{type:String,required:!0},sections:{type:Array,required:!1,default:()=>[]}},methods:{classesFor(e){return["option","section",{active:this.currentOption===e.title},this.depthClass(e)]},depthClass(e){const{depth:t=0}=e;return"depth"+t},onClick(e){this.$emit("select-section",e.path)}}},q=M,E=(n("2fac"),Object(w["a"])(q,N,j,!1,null,"3d58f504",null)),R=E.exports,V=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("DropdownCustom",{staticClass:"tutorial-dropdown",attrs:{value:e.currentOption,"aria-label":"Current section",isSmall:""},scopedSlots:e._u([{key:"default",fn:function(t){var s=t.closeAndFocusToggler,i=t.contentClasses,r=t.navigateOverOptions,o=t.OptionClass,a=t.ActiveOptionClass;return[n("ul",{staticClass:"options",class:i,attrs:{role:"listbox",tabindex:"0"}},e._l(e.options,(function(t){return n("router-link",{key:t.title,attrs:{to:{path:t.path,query:e.$route.query},custom:""},scopedSlots:e._u([{key:"default",fn:function(i){var l,c=i.navigate;return[n("li",{class:[o,(l={},l[a]=e.currentOption===t.title,l)],attrs:{role:"option",value:t.title,"aria-selected":e.currentOption===t.title,"aria-current":e.ariaCurrent(t.title),tabindex:-1},on:{click:function(n){return e.setActive(t,c,s,n)},keydown:[function(n){return!n.type.indexOf("key")&&e._k(n.keyCode,"enter",13,n.key,"Enter")?null:e.setActive(t,c,s,n)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:s.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"tab",9,t.key,"Tab")?null:s.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.preventDefault(),r(t,1))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.preventDefault(),r(t,-1))}]}},[e._v(" "+e._s(t.title)+" ")])]}}],null,!0)})})),1)]}}])},[n("template",{slot:"toggle-post-content"},[n("span",{staticClass:"section-tracker"},[e._v(e._s(e.sectionTracker))])])],2)},L=[],F=function(){var e,t=this,n=t.$createElement,s=t._self._c||n;return s("BaseDropdown",{staticClass:"dropdown-custom",class:(e={},e[t.OpenedClass]=t.isOpen,e["dropdown-small"]=t.isSmall,e),attrs:{value:t.value},scopedSlots:t._u([{key:"dropdown",fn:function(e){var n=e.dropdownClasses;return[s("span",{staticClass:"visuallyhidden",attrs:{id:"DropdownLabel_"+t._uid}},[t._v(t._s(t.ariaLabel))]),s("button",{ref:"dropdownToggle",staticClass:"form-dropdown-toggle",class:n,attrs:{role:"button",id:"DropdownToggle_"+t._uid,"aria-labelledby":"DropdownLabel_"+t._uid+" DropdownToggle_"+t._uid,"aria-expanded":t.isOpen?"true":"false","aria-haspopup":"true"},on:{click:t.toggleDropdown,keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:(e.preventDefault(),t.openDropdown.apply(null,arguments))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"esc",27,e.key,["Esc","Escape"])?null:t.closeAndFocusToggler.apply(null,arguments)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"down",40,e.key,["Down","ArrowDown"])?null:(e.preventDefault(),t.openDropdown.apply(null,arguments))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"up",38,e.key,["Up","ArrowUp"])?null:(e.preventDefault(),t.openDropdown.apply(null,arguments))}]}},[s("span",{staticClass:"form-dropdown-title"},[t._v(t._s(t.value))]),t._t("toggle-post-content")],2)]}}],null,!0)},[s("template",{slot:"eyebrow"},[t._t("eyebrow")],2),s("template",{slot:"after"},[t._t("default",null,null,{value:t.value,isOpen:t.isOpen,contentClasses:["form-dropdown-content",{"is-open":t.isOpen}],closeDropdown:t.closeDropdown,onChangeAction:t.onChangeAction,closeAndFocusToggler:t.closeAndFocusToggler,navigateOverOptions:t.navigateOverOptions,OptionClass:t.OptionClass,ActiveOptionClass:t.ActiveOptionClass})],2)],2)},z=[],H=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"form-element"},[e._t("dropdown",(function(){return[n("select",e._b({directives:[{name:"model",rawName:"v-model",value:e.modelValue,expression:"modelValue"}],class:e.dropdownClasses,on:{change:function(t){var n=Array.prototype.filter.call(t.target.options,(function(e){return e.selected})).map((function(e){var t="_value"in e?e._value:e.value;return t}));e.modelValue=t.target.multiple?n:n[0]}}},"select",e.$attrs,!1),[e._t("default")],2)]}),{dropdownClasses:e.dropdownClasses,value:e.value}),n("InlineChevronDownIcon",{staticClass:"form-icon",attrs:{"aria-hidden":"true"}}),e.$slots.eyebrow?n("span",{staticClass:"form-label",attrs:{"aria-hidden":"true"}},[e._t("eyebrow")],2):e._e(),e._t("after")],2)},G=[],U=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"inline-chevron-down-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M12.634 2.964l0.76 0.649-6.343 7.426-6.445-7.423 0.755-0.655 5.683 6.545 5.59-6.542z"}})])},W=[],Q={name:"InlineChevronDownIcon",components:{SVGIcon:y["a"]}},K=Q,X=Object(w["a"])(K,U,W,!1,null,null,null),J=X.exports,Y={name:"BaseDropdown",inheritAttrs:!1,props:{value:{type:String,default:""}},components:{InlineChevronDownIcon:J},computed:{modelValue:{get:({value:e})=>e,set(e){this.$emit("input",e)}},dropdownClasses({value:e}){return["form-dropdown",{"form-dropdown-selectnone":""===e,"no-eyebrow":!this.$slots.eyebrow}]}}},Z=Y,ee=(n("ed71"),Object(w["a"])(Z,H,G,!1,null,"998803d8",null)),te=ee.exports;const ne="is-open",se="option",ie="option-active";var re={name:"DropdownCustom",components:{BaseDropdown:te},constants:{OpenedClass:ne,OptionClass:se,ActiveOptionClass:ie},props:{value:{type:String,default:""},ariaLabel:{type:String,default:""},isSmall:{type:Boolean,default:!1}},data(){return{isOpen:!1,OpenedClass:ne,OptionClass:se,ActiveOptionClass:ie}},mounted(){document.addEventListener("click",this.closeOnLoseFocus)},beforeDestroy(){document.removeEventListener("click",this.closeOnLoseFocus)},methods:{onChangeAction(e){this.$emit("input",e)},toggleDropdown(){this.isOpen?this.closeDropdown():this.openDropdown()},async closeAndFocusToggler(){this.closeDropdown(),await this.$nextTick(),this.$refs.dropdownToggle.focus({preventScroll:!0})},closeDropdown(){this.isOpen=!1,this.$emit("close")},openDropdown(){this.isOpen=!0,this.$emit("open"),this.focusActiveLink()},closeOnLoseFocus(e){!this.$el.contains(e.target)&&this.isOpen&&this.closeDropdown()},navigateOverOptions({target:e},t){const n=this.$el.querySelectorAll("."+se),s=Array.from(n),i=s.indexOf(e),r=s[i+t];r&&r.focus({preventScroll:!0})},async focusActiveLink(){const e=this.$el.querySelector("."+ie);e&&(await this.$nextTick(),e.focus({preventScroll:!0}))}}},oe=re,ae=(n("e84c"),Object(w["a"])(oe,F,z,!1,null,"12dd746a",null)),le=ae.exports,ce={name:"SecondaryDropdown",components:{DropdownCustom:le},props:{options:{type:Array,required:!0},currentOption:{type:String,required:!0},sectionTracker:{type:String,required:!1}},methods:{ariaCurrent(e){return this.currentOption===e&&"section"},setActive(e,t,n,s){t(s),this.$emit("select-section",e.path),n()}}},ue=ce,de=(n("5952"),Object(w["a"])(ue,V,L,!1,null,"4a151342",null)),pe=de.exports,he=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("DropdownCustom",{staticClass:"tutorial-dropdown",attrs:{value:e.currentOption,"aria-label":"Current tutorial",isSmall:""},scopedSlots:e._u([{key:"default",fn:function(t){var s=t.closeAndFocusToggler,i=t.contentClasses,r=t.closeDropdown,o=t.navigateOverOptions,a=t.OptionClass,l=t.ActiveOptionClass;return[n("ul",{staticClass:"options",class:i,attrs:{tabindex:"0"}},e._l(e.options,(function(t){return n("ReferenceUrlProvider",{key:t.reference,attrs:{reference:t.reference},scopedSlots:e._u([{key:"default",fn:function(i){var c=i.title;return n("li",{staticClass:"chapter-list",attrs:{role:"group"}},[n("p",{staticClass:"chapter-name"},[e._v(e._s(c))]),n("ul",{attrs:{role:"listbox"}},e._l(t.projects,(function(t){return n("ReferenceUrlProvider",{key:t.reference,attrs:{reference:t.reference},scopedSlots:e._u([{key:"default",fn:function(t){var i=t.urlWithParams,c=t.title;return[n("router-link",{attrs:{to:i,custom:""},scopedSlots:e._u([{key:"default",fn:function(t){var i,u=t.navigate,d=t.isActive;return[n("li",{class:(i={},i[a]=!0,i[l]=d,i),attrs:{role:"option",value:c,"aria-selected":d,"aria-current":!!d&&"tutorial",tabindex:-1},on:{click:function(t){return e.setActive(u,r,t)},keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.setActive(u,r,t)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:s.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"tab",9,t.key,"Tab")?null:s.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.preventDefault(),o(t,1))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.preventDefault(),o(t,-1))}]}},[e._v(" "+e._s(c)+" ")])]}}],null,!0)})]}}],null,!0)})})),1)])}}],null,!0)})})),1)]}}])})},me=[],fe={name:"PrimaryDropdown",components:{DropdownCustom:le,ReferenceUrlProvider:$},props:{options:{type:Array,required:!0},currentOption:{type:String,required:!0}},methods:{setActive(e,t,n){e(n),t()}}},ve=fe,ge=(n("e4e4"),Object(w["a"])(ve,he,me,!1,null,"78dc103f",null)),ye=ge.exports,be={name:"NavigationBar",components:{NavTitleContainer:P["a"],NavBase:O["a"],ReferenceUrlProvider:$,PrimaryDropdown:ye,SecondaryDropdown:pe,MobileDropdown:R,ChevronIcon:S},mixins:[I["a"]],inject:["store"],props:{chapters:{type:Array,required:!0},technology:{type:String,required:!0},topic:{type:String,required:!0},rootReference:{type:String,required:!0}},data(){return{currentSection:{sectionNumber:0,title:"Introduction"},tutorialState:this.store.state}},watch:{pageSectionWithHighestVisibility(e){e&&(this.currentSection=e)}},computed:{pageSections(){const e=this.$route.path.replace(/#$/,"");return this.tutorialState.linkableSections.map(t=>({...t,path:`${e}#${t.anchor}`}))},optionsForSections(){return this.pageSections.map(({depth:e,path:t,title:n})=>({depth:e,path:t,title:n}))},pageSectionWithHighestVisibility(){return[...this.pageSections].sort((e,t)=>t.visibility-e.visibility).find(e=>e.visibility>0)},sectionIndicatorText(){const e=this.tutorialState.linkableSections.length-1,{sectionNumber:t}=this.currentSection||{};if(0!==t)return`(${t} of ${e})`}},methods:{onSelectSection(e){const t="#"+e.split("#")[1];this.scrollToElement(t)}}},Ce=be,we=(n("6cd7"),Object(w["a"])(Ce,m,f,!1,null,"7138b5bf",null)),_e=we.exports,Se=n("d8ce"),ke=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"body"},[n("BodyContent",{attrs:{content:e.content}})],1)},xe=[],Te=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("article",{staticClass:"body-content"},e._l(e.content,(function(t,s){return n(e.componentFor(t),e._b({key:s,tag:"component",staticClass:"layout"},"component",e.propsFor(t),!1))})),1)},Ae=[],$e=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"columns",class:e.classes},[e._l(e.columns,(function(t,s){return[n("Asset",{key:t.media,attrs:{identifier:t.media,videoAutoplays:!1}}),t.content?n("ContentNode",{key:s,attrs:{content:t.content}}):e._e()]}))],2)},Ie=[],Oe=n("80e4"),Pe=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("BaseContentNode",{attrs:{content:e.articleContent}})},Ne=[],je=n("5677"),Be={name:"ContentNode",components:{BaseContentNode:je["a"]},props:je["a"].props,computed:{articleContent(){return this.map(e=>{switch(e.type){case je["a"].BlockType.codeListing:return{...e,showLineNumbers:!0};case je["a"].BlockType.heading:{const{anchor:t,...n}=e;return n}default:return e}})}},methods:je["a"].methods,BlockType:je["a"].BlockType,InlineType:je["a"].InlineType},De=Be,Me=(n("cb8d"),Object(w["a"])(De,Pe,Ne,!1,null,"3cfe1c35",null)),qe=Me.exports,Ee={name:"Columns",components:{Asset:Oe["a"],ContentNode:qe},props:{columns:{type:Array,required:!0}},computed:{classes(){return{"cols-2":2===this.columns.length,"cols-3":3===this.columns.length}}}},Re=Ee,Ve=(n("e9b0"),Object(w["a"])(Re,$e,Ie,!1,null,"30edf911",null)),Le=Ve.exports,Fe=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"content-and-media",class:e.classes},[n("ContentNode",{attrs:{content:e.content}}),n("Asset",{attrs:{identifier:e.media}})],1)},ze=[];const He={leading:"leading",trailing:"trailing"};var Ge={name:"ContentAndMedia",components:{Asset:Oe["a"],ContentNode:qe},props:{content:qe.props.content,media:Oe["a"].props.identifier,mediaPosition:{type:String,default:()=>He.trailing,validator:e=>Object.prototype.hasOwnProperty.call(He,e)}},computed:{classes(){return{"media-leading":this.mediaPosition===He.leading,"media-trailing":this.mediaPosition===He.trailing}}},MediaPosition:He},Ue=Ge,We=(n("1006"),Object(w["a"])(Ue,Fe,ze,!1,null,"3fa44f9e",null)),Qe=We.exports,Ke=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"full-width"},e._l(e.groups,(function(t,s){return n(e.componentFor(t),e._b({key:s,tag:"component",staticClass:"group"},"component",e.propsFor(t),!1),[n("ContentNode",{attrs:{content:t.content}})],1)})),1)},Xe=[],Je=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(e.tag,{tag:"component",attrs:{id:e.anchor}},[e._t("default")],2)},Ye=[],Ze=n("72e7"),et={name:"LinkableElement",mixins:[Ze["a"]],inject:{navigationBarHeight:{default(){}},store:{default(){return{addLinkableSection(){},updateLinkableSection(){}}}}},props:{anchor:{type:String,required:!0},depth:{type:Number,default:()=>0},tag:{type:String,default:()=>"div"},title:{type:String,required:!0}},computed:{intersectionRootMargin(){const e=this.navigationBarHeight?`-${this.navigationBarHeight}px`:"0%";return e+" 0% -50% 0%"}},created(){this.store.addLinkableSection({anchor:this.anchor,depth:this.depth,title:this.title,visibility:0})},methods:{onIntersect(e){const t=Math.min(1,e.intersectionRatio);this.store.updateLinkableSection({anchor:this.anchor,depth:this.depth,title:this.title,visibility:t})}}},tt=et,nt=Object(w["a"])(tt,Je,Ye,!1,null,null,null),st=nt.exports;const{BlockType:it}=qe;var rt={name:"FullWidth",components:{ContentNode:qe,LinkableElement:st},props:qe.props,computed:{groups:({content:e})=>e.reduce((e,t)=>0===e.length||t.type===it.heading?[...e,{heading:t.type===it.heading?t:null,content:[t]}]:[...e.slice(0,e.length-1),{heading:e[e.length-1].heading,content:e[e.length-1].content.concat(t)}],[])},methods:{componentFor(e){return e.heading?st:"div"},depthFor(e){switch(e.level){case 1:case 2:return 0;default:return 1}},propsFor(e){return e.heading?{anchor:e.heading.anchor,depth:this.depthFor(e.heading),title:e.heading.text}:{}}}},ot=rt,at=(n("aece"),Object(w["a"])(ot,Ke,Xe,!1,null,"1f2be54b",null)),lt=at.exports;const ct={columns:"columns",contentAndMedia:"contentAndMedia",fullWidth:"fullWidth"};var ut={name:"BodyContent",props:{content:{type:Array,required:!0,validator:e=>e.every(({kind:e})=>Object.prototype.hasOwnProperty.call(ct,e))}},methods:{componentFor(e){return{[ct.columns]:Le,[ct.contentAndMedia]:Qe,[ct.fullWidth]:lt}[e.kind]},propsFor(e){const{content:t,kind:n,media:s,mediaPosition:i}=e;return{[ct.columns]:{columns:t},[ct.contentAndMedia]:{content:t,media:s,mediaPosition:i},[ct.fullWidth]:{content:t}}[n]}},LayoutKind:ct},dt=ut,pt=(n("1dd5"),Object(w["a"])(dt,Te,Ae,!1,null,"4d5a806e",null)),ht=pt.exports,mt={name:"Body",components:{BodyContent:ht},props:ht.props},ft=mt,vt=(n("5237"),Object(w["a"])(ft,ke,xe,!1,null,"6499e2f2",null)),gt=vt.exports,yt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("TutorialCTA",e._b({},"TutorialCTA",e.$props,!1))},bt=[],Ct=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("BaseCTA",e._b({attrs:{label:"Next"}},"BaseCTA",e.baseProps,!1))},wt=[],_t=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"call-to-action"},[n("Row",[n("LeftColumn",[n("span",{staticClass:"label"},[e._v(e._s(e.label))]),n("h2",[e._v(" "+e._s(e.title)+" ")]),e.abstract?n("ContentNode",{staticClass:"description",attrs:{content:[e.abstractParagraph]}}):e._e(),e.action?n("Button",{attrs:{action:e.action}}):e._e()],1),n("RightColumn",{staticClass:"right-column"},[e.media?n("Asset",{staticClass:"media",attrs:{identifier:e.media}}):e._e()],1)],1)],1)},St=[],kt=n("0f00"),xt=n("620a"),Tt=n("c081"),At={name:"CallToAction",components:{Asset:Oe["a"],Button:Tt["a"],ContentNode:je["a"],LeftColumn:{render(e){return e(xt["a"],{props:{span:{large:5,small:12}}},this.$slots.default)}},RightColumn:{render(e){return e(xt["a"],{props:{span:{large:6,small:12}}},this.$slots.default)}},Row:kt["a"]},props:{title:{type:String,required:!0},label:{type:String,required:!0},abstract:{type:Array,required:!1},action:{type:Object,required:!1},media:{type:String,required:!1}},computed:{abstractParagraph(){return{type:"paragraph",inlineContent:this.abstract}}}},$t=At,It=(n("80f7"),Object(w["a"])($t,_t,St,!1,null,"2016b288",null)),Ot=It.exports,Pt={name:"CallToAction",components:{BaseCTA:Ot},computed:{baseProps(){return{title:this.title,abstract:this.abstract,action:this.action,media:this.media}}},props:{title:{type:String,required:!0},abstract:{type:Array,required:!1},action:{type:Object,required:!1},media:{type:String,required:!1}}},Nt=Pt,jt=Object(w["a"])(Nt,Ct,wt,!1,null,null,null),Bt=jt.exports,Dt={name:"CallToAction",components:{TutorialCTA:Bt},props:Bt.props},Mt=Dt,qt=(n("3e1b"),Object(w["a"])(Mt,yt,bt,!1,null,"426a965c",null)),Et=qt.exports,Rt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("TutorialHero",e._b({},"TutorialHero",e.$props,!1))},Vt=[],Lt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("LinkableSection",{staticClass:"tutorial-hero",attrs:{anchor:"introduction",title:e.sectionTitle}},[n("div",{staticClass:"hero dark"},[e.backgroundImageUrl?n("div",{staticClass:"bg",style:e.bgStyle}):e._e(),e._t("above-title"),n("Row",[n("Column",[n("Headline",{attrs:{level:1}},[e.chapter?n("template",{slot:"eyebrow"},[e._v(e._s(e.chapter))]):e._e(),e._v(" "+e._s(e.title)+" ")],2),e.content||e.video?n("div",{staticClass:"intro"},[e.content?n("ContentNode",{attrs:{content:e.content}}):e._e(),e.video?[n("p",[n("a",{staticClass:"call-to-action",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.toggleCallToActionModal.apply(null,arguments)}}},[e._v(" Watch intro video "),n("PlayIcon",{staticClass:"cta-icon icon-inline"})],1)]),n("GenericModal",{attrs:{visible:e.callToActionModalVisible,isFullscreen:"",theme:"dark"},on:{"update:visible":function(t){e.callToActionModalVisible=t}}},[n("Asset",{directives:[{name:"show",rawName:"v-show",value:e.callToActionModalVisible,expression:"callToActionModalVisible"}],ref:"asset",staticClass:"video-asset",attrs:{identifier:e.video},on:{videoEnded:e.handleVideoEnd}})],1)]:e._e()],2):e._e(),n("Metadata",{staticClass:"metadata",attrs:{projectFilesUrl:e.projectFilesUrl,estimatedTimeInMinutes:e.estimatedTimeInMinutes,xcodeRequirement:e.xcodeRequirementData}})],1)],1)],2)])},Ft=[],zt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"headline"},[e.$slots.eyebrow?n("span",{staticClass:"eyebrow"},[e._t("eyebrow")],2):e._e(),n("Heading",{staticClass:"heading",attrs:{level:e.level}},[e._t("default")],2)],1)},Ht=[];const Gt=1,Ut=6,Wt={type:Number,required:!0,validator:e=>e>=Gt&&e<=Ut},Qt={name:"Heading",render:function(e){return e("h"+this.level,this.$slots.default)},props:{level:Wt}};var Kt={name:"Headline",components:{Heading:Qt},props:{level:Wt}},Xt=Kt,Jt=(n("323a"),Object(w["a"])(Xt,zt,Ht,!1,null,"1898f592",null)),Yt=Jt.exports,Zt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("PortalSource",{attrs:{to:"modal-destination",disabled:!e.isVisible}},[n("div",{directives:[{name:"show",rawName:"v-show",value:e.isVisible,expression:"isVisible"}],staticClass:"generic-modal",class:[e.stateClasses,e.themeClass],style:e.modalColors,attrs:{role:"dialog"}},[n("div",{staticClass:"backdrop",on:{click:e.onClickOutside}}),n("div",{ref:"container",staticClass:"container",style:{width:e.width}},[e.showClose?n("button",{ref:"close",staticClass:"close",attrs:{"aria-label":"Close"},on:{click:function(t){return t.preventDefault(),e.closeModal.apply(null,arguments)}}},[n("CloseIcon")],1):e._e(),n("div",{staticClass:"modal-content"},[e._t("default")],2)])])])},en=[],tn=n("f2af"),nn=n("c8e2"),sn=n("95da"),rn=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"close-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"m10.3772239 3.1109127.7266116.7266116-3.27800002 3.2763884 3.27072752 3.2703884-.7266116.7266116-3.27011592-3.271-3.26211596 3.2637276-.7266116-.7266116 3.26272756-3.263116-3.27-3.26911596.72661159-.72661159 3.26938841 3.26972755z","fill-rule":"evenodd"}})])},on=[],an={name:"CloseIcon",components:{SVGIcon:y["a"]}},ln=an,cn=Object(w["a"])(ln,rn,on,!1,null,null,null),un=cn.exports;const dn={light:"light",dark:"dark",dynamic:"dynamic",code:"code"};var pn={name:"GenericModal",model:{prop:"visible",event:"update:visible"},components:{CloseIcon:un,PortalSource:h["Portal"]},props:{visible:{type:Boolean,default:!1},isFullscreen:{type:Boolean,default:!1},theme:{type:String,validator:e=>Object.keys(dn).includes(e),default:dn.light},codeBackgroundColorOverride:{type:String,default:""},width:{type:String,default:null},showClose:{type:Boolean,default:!0}},data(){return{lastFocusItem:null,prefersDarkStyle:!1,focusTrapInstance:null}},computed:{isVisible:{get:({visible:e})=>e,set(e){this.$emit("update:visible",e)}},modalColors(){return{"--background":this.codeBackgroundColorOverride}},themeClass({theme:e,prefersDarkStyle:t,isThemeDynamic:n}){let s={};return n&&(s={"theme-light":!t,"theme-dark":t}),["theme-"+e,s]},stateClasses:({isFullscreen:e,isVisible:t,showClose:n})=>({"modal-fullscreen":e,"modal-standard":!e,"modal-open":t,"modal-with-close":n}),isThemeDynamic:({theme:e})=>e===dn.dynamic||e===dn.code},watch:{isVisible(e){e?this.onShow():this.onHide()}},mounted(){if(this.focusTrapInstance=new nn["a"],document.addEventListener("keydown",this.onEscapeClick),this.isThemeDynamic){const e=window.matchMedia("(prefers-color-scheme: dark)");e.addListener(this.onColorSchemePreferenceChange),this.$once("hook:beforeDestroy",()=>{e.removeListener(this.onColorSchemePreferenceChange)}),this.onColorSchemePreferenceChange(e)}},beforeDestroy(){this.isVisible&&tn["a"].unlockScroll(this.$refs.container),document.removeEventListener("keydown",this.onEscapeClick),this.focusTrapInstance.destroy()},methods:{async onShow(){await this.$nextTick(),tn["a"].lockScroll(this.$refs.container),await this.focusCloseButton(),this.focusTrapInstance.updateFocusContainer(this.$refs.container),this.focusTrapInstance.start(),sn["a"].hide(this.$refs.container)},onHide(){tn["a"].unlockScroll(this.$refs.container),this.focusTrapInstance.stop(),this.lastFocusItem&&(this.lastFocusItem.focus({preventScroll:!0}),this.lastFocusItem=null),this.$emit("close"),sn["a"].show(this.$refs.container)},closeModal(){this.isVisible=!1},onClickOutside(){this.closeModal()},onEscapeClick({key:e}){this.isVisible&&"Escape"===e&&this.closeModal()},onColorSchemePreferenceChange({matches:e}){this.prefersDarkStyle=e},async focusCloseButton(){this.lastFocusItem=document.activeElement,await this.$nextTick(),this.$refs.close&&this.$refs.close.focus(),this.$emit("open")}}},hn=pn,mn=(n("bd7a"),Object(w["a"])(hn,Zt,en,!1,null,"0e383dfa",null)),fn=mn.exports,vn=n("c4dd"),gn=n("748c"),yn=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"metadata"},[e.estimatedTimeInMinutes?n("div",{staticClass:"item",attrs:{"aria-label":e.estimatedTimeInMinutes+" minutes estimated time"}},[n("div",{staticClass:"content",attrs:{"aria-hidden":"true"}},[n("div",{staticClass:"duration"},[e._v(" "+e._s(e.estimatedTimeInMinutes)+" "),n("div",{staticClass:"minutes"},[e._v("min")])])]),n("div",{staticClass:"bottom",attrs:{"aria-hidden":"true"}},[e._v("Estimated Time")])]):e._e(),e.projectFilesUrl?n("div",{staticClass:"item"},[n("DownloadIcon",{staticClass:"item-large-icon icon-inline"}),n("div",{staticClass:"content bottom"},[n("a",{staticClass:"content-link project-download",attrs:{href:e.projectFilesUrl}},[e._v(" Project files "),n("InlineDownloadIcon",{staticClass:"small-icon icon-inline"})],1)])],1):e._e(),e.xcodeRequirement?n("div",{staticClass:"item"},[n("XcodeIcon",{staticClass:"item-large-icon icon-inline"}),n("div",{staticClass:"content bottom"},[e.isTargetIDE?n("span",[e._v(e._s(e.xcodeRequirement.title))]):n("a",{staticClass:"content-link",attrs:{href:e.xcodeRequirement.url}},[e._v(" "+e._s(e.xcodeRequirement.title)+" "),n("InlineChevronRightIcon",{staticClass:"icon-inline small-icon xcode-icon"})],1)])],1):e._e()])},bn=[],Cn=n("de60"),wn=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"xcode-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M2.668 4.452l-1.338-2.229 0.891-0.891 2.229 1.338 1.338 2.228 3.667 3.666 0.194-0.194 2.933 2.933c0.13 0.155 0.209 0.356 0.209 0.576 0 0.497-0.403 0.9-0.9 0.9-0.22 0-0.421-0.079-0.577-0.209l0.001 0.001-2.934-2.933 0.181-0.181-3.666-3.666z"}}),n("path",{attrs:{d:"M11.824 1.277l-0.908 0.908c-0.091 0.091-0.147 0.216-0.147 0.354 0 0.106 0.033 0.205 0.090 0.286l-0.001-0.002 0.058 0.069 0.185 0.185c0.090 0.090 0.215 0.146 0.353 0.146 0.107 0 0.205-0.033 0.286-0.090l-0.002 0.001 0.069-0.057 0.909-0.908c0.118 0.24 0.187 0.522 0.187 0.82 0 1.045-0.848 1.893-1.893 1.893-0.296 0-0.577-0.068-0.826-0.189l0.011 0.005-5.5 5.5c0.116 0.238 0.184 0.518 0.184 0.813 0 1.045-0.848 1.893-1.893 1.893-0.296 0-0.576-0.068-0.826-0.189l0.011 0.005 0.908-0.909c0.090-0.090 0.146-0.215 0.146-0.353 0-0.107-0.033-0.205-0.090-0.286l0.001 0.002-0.057-0.069-0.185-0.185c-0.091-0.091-0.216-0.147-0.354-0.147-0.106 0-0.205 0.033-0.286 0.090l0.002-0.001-0.069 0.058-0.908 0.908c-0.116-0.238-0.184-0.518-0.184-0.813 0-1.045 0.847-1.892 1.892-1.892 0.293 0 0.571 0.067 0.819 0.186l-0.011-0.005 5.5-5.5c-0.116-0.238-0.184-0.519-0.184-0.815 0-1.045 0.847-1.892 1.892-1.892 0.296 0 0.577 0.068 0.827 0.19l-0.011-0.005z"}})])},_n=[],Sn={name:"XcodeIcon",components:{SVGIcon:y["a"]}},kn=Sn,xn=Object(w["a"])(kn,wn,_n,!1,null,null,null),Tn=xn.exports,An=n("34b0"),$n=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"inline-download-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5s2.91-6.5 6.5-6.5zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5s-2.462-5.5-5.5-5.5z"}}),n("path",{attrs:{d:"M7.51 2.964l-0.001 5.431 1.308-2.041 0.842 0.539-2.664 4.162-2.633-4.164 0.845-0.534 1.303 2.059 0.001-5.452z"}})])},In=[],On={name:"InlineDownloadIcon",components:{SVGIcon:y["a"]}},Pn=On,Nn=Object(w["a"])(Pn,$n,In,!1,null,null,null),jn=Nn.exports,Bn={name:"HeroMetadata",components:{InlineDownloadIcon:jn,InlineChevronRightIcon:An["a"],DownloadIcon:Cn["a"],XcodeIcon:Tn},inject:["isTargetIDE"],props:{projectFilesUrl:{type:String},estimatedTimeInMinutes:{type:Number},xcodeRequirement:{type:Object,required:!1}}},Dn=Bn,Mn=(n("5356"),Object(w["a"])(Dn,yn,bn,!1,null,"2fa6f125",null)),qn=Mn.exports,En={name:"Hero",components:{PlayIcon:vn["a"],GenericModal:fn,Column:{render(e){return e(xt["a"],{props:{span:{large:7,medium:9,small:12}}},this.$slots.default)}},ContentNode:je["a"],Headline:Yt,Metadata:qn,Row:kt["a"],Asset:Oe["a"],LinkableSection:st},inject:["references"],props:{title:{type:String,required:!0},chapter:{type:String},content:{type:Array},projectFiles:{type:String},estimatedTimeInMinutes:{type:Number},xcodeRequirement:{type:String,required:!1},video:{type:String},backgroundImage:{type:String}},computed:{backgroundImageUrl(){const e=this.references[this.backgroundImage]||{},{variants:t=[]}=e,n=t.find(e=>e.traits.includes("light"));return n?Object(gn["b"])(n.url):""},projectFilesUrl(){return this.projectFiles?Object(gn["b"])(this.references[this.projectFiles].url):null},bgStyle(){return{backgroundImage:`url('${this.backgroundImageUrl}')`}},xcodeRequirementData(){return this.references[this.xcodeRequirement]},sectionTitle(){return"Introduction"}},data(){return{callToActionModalVisible:!1}},methods:{async toggleCallToActionModal(){this.callToActionModalVisible=!0,await this.$nextTick();const e=this.$refs.asset.$el.querySelector("video");if(e)try{await e.play(),e.muted=!1}catch(t){}},handleVideoEnd(){this.callToActionModalVisible=!1}}},Rn=En,Vn=(n("3c4b"),Object(w["a"])(Rn,Lt,Ft,!1,null,"cb87b2d0",null)),Ln=Vn.exports,Fn={name:"Hero",components:{TutorialHero:Ln},props:Ln.props},zn=Fn,Hn=(n("2f9d"),Object(w["a"])(zn,Rt,Vt,!1,null,"35a9482f",null)),Gn=Hn.exports,Un=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("TutorialAssessments",e._b({},"TutorialAssessments",e.$props,!1),[n("p",{attrs:{slot:"success"},slot:"success"},[e._v("Great job, you've answered all the questions for this article.")])])},Wn=[],Qn=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("LinkableSection",{staticClass:"assessments-wrapper",attrs:{anchor:e.anchor,title:e.title}},[n("Row",{ref:"assessments",staticClass:"assessments"},[n("MainColumn",[n("Row",{staticClass:"banner"},[n("HeaderColumn",[n("h2",{staticClass:"title"},[e._v(e._s(e.title))])])],1),e.completed?n("div",{staticClass:"success"},[e._t("success",(function(){return[n("p",[e._v(e._s(e.SuccessMessage))])]}))],2):n("div",[n("Progress",e._b({ref:"progress"},"Progress",e.progress,!1)),n("Quiz",{key:e.activeIndex,attrs:{choices:e.activeAssessment.choices,content:e.activeAssessment.content,isLast:e.isLast,title:e.activeAssessment.title},on:{submit:e.onSubmit,advance:e.onAdvance,"see-results":e.onSeeResults}})],1),n("div",{staticClass:"visuallyhidden",attrs:{"aria-live":"assertive"}},[e.completed?e._t("success",(function(){return[e._v(" "+e._s(e.SuccessMessage)+" ")]})):e._e()],2)],1)],1)],1)},Kn=[],Xn=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("Row",[n("p",{staticClass:"title"},[e._v("Question "+e._s(e.index)+" of "+e._s(e.total))])])},Jn=[],Yn={name:"AssessmentsProgress",components:{Row:kt["a"]},props:{index:{type:Number,required:!0},total:{type:Number,required:!0}}},Zn=Yn,es=(n("0530"),Object(w["a"])(Zn,Xn,Jn,!1,null,"8ec95972",null)),ts=es.exports,ns=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"quiz"},[n("ContentNode",{staticClass:"title",attrs:{content:e.title}}),e.content?n("ContentNode",{staticClass:"question-content",attrs:{content:e.content}}):e._e(),n("div",{staticClass:"choices"},[e._l(e.choices,(function(t,s){return n("label",{key:s,class:e.choiceClasses[s]},[n(e.getIconComponent(s),{tag:"component",staticClass:"choice-icon"}),n("input",{directives:[{name:"model",rawName:"v-model",value:e.selectedIndex,expression:"selectedIndex"}],attrs:{type:"radio",name:"assessment"},domProps:{value:s,checked:e._q(e.selectedIndex,s)},on:{change:function(t){e.selectedIndex=s}}}),n("ContentNode",{staticClass:"question",attrs:{content:t.content}}),e.userChoices[s].checked?[n("ContentNode",{staticClass:"answer",attrs:{content:t.justification}}),t.reaction?n("p",{staticClass:"answer"},[e._v(e._s(t.reaction))]):e._e()]:e._e()],2)})),n("div",{staticClass:"visuallyhidden",attrs:{"aria-live":"assertive"}},[e._v(" "+e._s(e.ariaLiveText)+" ")])],2),n("div",{staticClass:"controls"},[n("ButtonLink",{staticClass:"check",attrs:{disabled:null===e.selectedIndex||e.showNextQuestion},nativeOn:{click:function(t){return e.submit.apply(null,arguments)}}},[e._v(" Submit ")]),e.isLast?n("ButtonLink",{staticClass:"results",attrs:{disabled:!e.showNextQuestion},nativeOn:{click:function(t){return e.seeResults.apply(null,arguments)}}},[e._v(" Next ")]):n("ButtonLink",{staticClass:"next",attrs:{disabled:!e.showNextQuestion},nativeOn:{click:function(t){return e.advance.apply(null,arguments)}}},[e._v(" Next Question ")])],1)],1)},ss=[],is=n("76ab"),rs=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"reset-circle-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5v0c0-3.59 2.91-6.5 6.5-6.5v0zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5v0c0-3.038-2.462-5.5-5.5-5.5v0z"}}),n("path",{attrs:{d:"M3.828 4.539l0.707-0.707 5.657 5.657-0.707 0.707-5.657-5.657z"}}),n("path",{attrs:{d:"M3.828 9.489l5.657-5.657 0.707 0.707-5.657 5.657-0.707-0.707z"}})])},os=[],as={name:"ResetCircleIcon",components:{SVGIcon:y["a"]}},ls=as,cs=Object(w["a"])(ls,rs,os,!1,null,null,null),us=cs.exports,ds=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"check-circle-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5v0c0-3.59 2.91-6.5 6.5-6.5v0zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5v0c0-3.038-2.462-5.5-5.5-5.5v0z"}}),n("path",{attrs:{d:"M9.626 3.719l0.866 0.5-3.5 6.062-3.464-2 0.5-0.866 2.6 1.5z"}})])},ps=[],hs={name:"CheckCircleIcon",components:{SVGIcon:y["a"]}},ms=hs,fs=Object(w["a"])(ms,ds,ps,!1,null,null,null),vs=fs.exports,gs={name:"Quiz",components:{CheckCircleIcon:vs,ResetCircleIcon:us,ContentNode:je["a"],ButtonLink:is["a"]},props:{content:{type:Array,required:!1},choices:{type:Array,required:!0},isLast:{type:Boolean,default:!1},title:{type:Array,required:!0}},data(){return{userChoices:this.choices.map(()=>({checked:!1})),selectedIndex:null,checkedIndex:null}},computed:{correctChoices(){return this.choices.reduce((e,t,n)=>t.isCorrect?e.add(n):e,new Set)},choiceClasses(){return this.userChoices.map((e,t)=>({choice:!0,active:this.selectedIndex===t,disabled:e.checked||this.showNextQuestion,correct:e.checked&&this.choices[t].isCorrect,incorrect:e.checked&&!this.choices[t].isCorrect}))},showNextQuestion(){return Array.from(this.correctChoices).every(e=>this.userChoices[e].checked)},ariaLiveText:({checkedIndex:e,choices:t})=>{if(null===e)return"";const{isCorrect:n}=t[e];return`Answer number ${e+1} is ${n?"correct":"incorrect"}`}},methods:{getIconComponent(e){const t=this.userChoices[e];if(t&&t.checked)return this.choices[e].isCorrect?vs:us},submit(){this.$set(this.userChoices,this.selectedIndex,{checked:!0}),this.checkedIndex=this.selectedIndex,this.$emit("submit")},advance(){this.$emit("advance")},seeResults(){this.$emit("see-results")}}},ys=gs,bs=(n("76be"),Object(w["a"])(ys,ns,ss,!1,null,"4d37a428",null)),Cs=bs.exports;const ws=12,_s="Great job, you've answered all the questions for this tutorial.";var Ss={name:"Assessments",constants:{SuccessMessage:_s},components:{LinkableSection:st,Quiz:Cs,Progress:ts,Row:kt["a"],HeaderColumn:{render(e){return e(xt["a"],{props:{isCentered:{large:!0},span:{large:10}}},this.$slots.default)}},MainColumn:{render(e){return e(xt["a"],{props:{isCentered:{large:!0},span:{large:10,medium:10,small:12}}},this.$slots.default)}}},props:{assessments:{type:Array,required:!0},anchor:{type:String,required:!0}},inject:["navigationBarHeight"],data(){return{activeIndex:0,completed:!1,SuccessMessage:_s}},computed:{activeAssessment(){return this.assessments[this.activeIndex]},isLast(){return this.activeIndex===this.assessments.length-1},progress(){return{index:this.activeIndex+1,total:this.assessments.length}},title(){return"Check Your Understanding"}},methods:{scrollTo(e,t=0){e.scrollIntoView(!0),window.scrollBy(0,-this.navigationBarHeight-t)},onSubmit(){this.$nextTick(()=>{this.scrollTo(this.$refs.progress.$el,ws)})},onAdvance(){this.activeIndex+=1,this.$nextTick(()=>{this.scrollTo(this.$refs.progress.$el,ws)})},onSeeResults(){this.completed=!0,this.$nextTick(()=>{this.scrollTo(this.$refs.assessments.$el,ws)})}}},ks=Ss,xs=(n("53b5"),Object(w["a"])(ks,Qn,Kn,!1,null,"c1de71de",null)),Ts=xs.exports,As={name:"Assessments",components:{TutorialAssessments:Ts},props:Ts.props},$s=As,Is=(n("f264"),Object(w["a"])($s,Un,Wn,!1,null,"3c94366b",null)),Os=Is.exports;const Ps={articleBody:"articleBody",callToAction:"callToAction",hero:"hero",assessments:"assessments"};var Ns={name:"Article",components:{NavigationBar:_e,PortalTarget:h["PortalTarget"]},mixins:[Se["a"]],inject:{isTargetIDE:{default:!1},store:{default(){return{reset(){}}}}},props:{hierarchy:{type:Object,required:!0},metadata:{type:Object,required:!0},references:{type:Object,required:!0},sections:{type:Array,required:!0,validator:e=>e.every(({kind:e})=>Object.prototype.hasOwnProperty.call(Ps,e))}},computed:{heroSection(){return this.sections.find(this.isHero)},heroTitle(){return(this.heroSection||{}).title},pageTitle(){return this.heroTitle?`${this.heroTitle} — ${this.metadata.category} Tutorials`:void 0}},methods:{componentFor(e){const{kind:t}=e;return{[Ps.articleBody]:gt,[Ps.callToAction]:Et,[Ps.hero]:Gn,[Ps.assessments]:Os}[t]},isHero(e){return e.kind===Ps.hero},propsFor(e){const{abstract:t,action:n,anchor:s,assessments:i,backgroundImage:r,chapter:o,content:a,estimatedTimeInMinutes:l,kind:c,media:u,projectFiles:d,title:p,video:h,xcodeRequirement:m}=e;return{[Ps.articleBody]:{content:a},[Ps.callToAction]:{abstract:t,action:n,media:u,title:p},[Ps.hero]:{backgroundImage:r,chapter:o,content:a,estimatedTimeInMinutes:l,projectFiles:d,title:p,video:h,xcodeRequirement:m},[Ps.assessments]:{anchor:s,assessments:i}}[c]}},provide(){return{references:this.references}},created(){this.store.reset()},SectionKind:Ps},js=Ns,Bs=(n("ee73"),Object(w["a"])(js,d,p,!1,null,"5f5888a5",null)),Ds=Bs.exports,Ms=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"tutorial"},[e.isTargetIDE?e._e():n("NavigationBar",{attrs:{technology:e.metadata.category,chapters:e.hierarchy.modules,topic:e.tutorialTitle||"",rootReference:e.hierarchy.reference}}),n("main",{attrs:{id:"main",role:"main",tabindex:"0"}},[e._l(e.sections,(function(e,t){return n("Section",{key:t,attrs:{section:e}})})),n("BreakpointEmitter",{on:{change:e.handleBreakpointChange}})],2),n("PortalTarget",{attrs:{name:"modal-destination",multiple:""}})],1)},qs=[],Es=n("66c9"),Rs={computed:{isClientMobile(){let e=!1;return e="maxTouchPoints"in navigator||"msMaxTouchPoints"in navigator?Boolean(navigator.maxTouchPoints||navigator.msMaxTouchPoints):window.matchMedia?window.matchMedia("(pointer:coarse)").matches:"orientation"in window,e}}},Vs=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"sections"},e._l(e.tasks,(function(t,s){return n("Section",e._b({key:s,attrs:{id:t.anchor,sectionNumber:s+1,isRuntimePreviewVisible:e.isRuntimePreviewVisible},on:{"runtime-preview-toggle":e.onRuntimePreviewToggle}},"Section",t,!1))})),1)},Ls=[],Fs=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("LinkableSection",{staticClass:"section",attrs:{anchor:e.anchor,title:e.introProps.title}},[n("Intro",e._b({},"Intro",e.introProps,!1)),e.stepsSection.length>0?n("Steps",{attrs:{content:e.stepsSection,isRuntimePreviewVisible:e.isRuntimePreviewVisible,sectionNumber:e.sectionNumber},on:{"runtime-preview-toggle":e.onRuntimePreviewToggle}}):e._e()],1)},zs=[],Hs=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"intro-container"},[n("Row",{class:["intro","intro-"+e.sectionNumber,{ide:e.isTargetIDE}]},[n("Column",{staticClass:"left"},[n("Headline",{attrs:{level:2}},[n("router-link",{attrs:{slot:"eyebrow",to:e.sectionLink},slot:"eyebrow"},[e._v(" Section "+e._s(e.sectionNumber)+" ")]),e._v(" "+e._s(e.title)+" ")],1),n("ContentNode",{attrs:{content:e.content}})],1),n("Column",{staticClass:"right"},[n("div",{staticClass:"media"},[e.media?n("Asset",{attrs:{identifier:e.media,showsReplayButton:!e.isClientMobile,showsVideoControls:e.isClientMobile,videoAutoplays:!e.isClientMobile}}):e._e()],1)])],1),e.expandedSections.length>0?n("ExpandedIntro",{staticClass:"expanded-intro",attrs:{content:e.expandedSections}}):e._e()],1)},Gs=[],Us={name:"SectionIntro",inject:{isClientMobile:{default:()=>!1},isTargetIDE:{default:()=>!1}},components:{Asset:Oe["a"],ContentNode:je["a"],ExpandedIntro:ht,Headline:Yt,Row:kt["a"],Column:{render(e){return e(xt["a"],{props:{span:{large:6,small:12}}},this.$slots.default)}}},props:{sectionAnchor:{type:String,required:!0},content:{type:Array,required:!0},media:{type:String,required:!0},title:{type:String,required:!0},sectionNumber:{type:Number,required:!0},expandedSections:{type:Array,default:()=>[]}},methods:{focus(){this.$emit("focus",this.media)}},computed:{sectionLink(){return{path:this.$route.path,hash:this.sectionAnchor,query:this.$route.query}}}},Ws=Us,Qs=(n("4896"),Object(w["a"])(Ws,Hs,Gs,!1,null,"54daa228",null)),Ks=Qs.exports,Xs=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"steps"},[n("div",{staticClass:"content-container"},e._l(e.contentNodes,(function(t,s){return n(t.component,e._b({key:s,ref:"contentNodes",refInFor:!0,tag:"component",class:e.contentClass(s),attrs:{currentIndex:e.activeStep}},"component",t.props,!1))})),1),e.isBreakpointSmall?e._e():n("BackgroundTheme",{staticClass:"asset-container",class:e.assetContainerClasses},[n("transition",{attrs:{name:"fade"}},[e.visibleAsset.media?n("div",{key:e.visibleAsset.media,class:["asset-wrapper",{ide:e.isTargetIDE}]},[n("Asset",{ref:"asset",staticClass:"step-asset",attrs:{identifier:e.visibleAsset.media,showsReplayButton:"",showsVideoControls:!1}})],1):e._e(),e.visibleAsset.code?n("CodePreview",{attrs:{code:e.visibleAsset.code,preview:e.visibleAsset.runtimePreview,isRuntimePreviewVisible:e.isRuntimePreviewVisible},on:{"runtime-preview-toggle":e.onRuntimePreviewToggle}},[e.visibleAsset.runtimePreview?n("transition",{attrs:{name:"fade"}},[n("Asset",{key:e.visibleAsset.runtimePreview,attrs:{identifier:e.visibleAsset.runtimePreview}})],1):e._e()],1):e._e()],1)],1)],1)},Js=[],Ys=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{class:["code-preview",{ide:e.isTargetIDE}]},[n("CodeTheme",[e.code?n("CodeListing",e._b({attrs:{showLineNumbers:""}},"CodeListing",e.codeProps,!1)):e._e()],1),n("div",{staticClass:"runtime-preview",class:e.runtimePreviewClasses,style:e.previewStyles},[n("button",{staticClass:"header",attrs:{disabled:!e.hasRuntimePreview,title:e.runtimePreviewTitle},on:{click:e.togglePreview}},[n("span",{staticClass:"runtime-preview-label",attrs:{"aria-label":e.textAriaLabel}},[e._v(e._s(e.togglePreviewText))]),n("DiagonalArrowIcon",{staticClass:"icon-inline preview-icon",class:[e.shouldDisplayHideLabel?"preview-hide":"preview-show"]})],1),n("transition",{on:{leave:e.handleLeave}},[n("div",{directives:[{name:"show",rawName:"v-show",value:e.shouldDisplayHideLabel,expression:"shouldDisplayHideLabel"}],staticClass:"runtime-preview-asset"},[e._t("default")],2)])],1)],1)},Zs=[],ei=n("7b69"),ti=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"diagonal-arrow",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M0.010 12.881l10.429-10.477-3.764 0.824-0.339-1.549 7.653-1.679-1.717 7.622-1.546-0.349 0.847-3.759-10.442 10.487z"}})])},ni=[],si={name:"DiagonalArrowIcon",components:{SVGIcon:y["a"]}},ii=si,ri=Object(w["a"])(ii,ti,ni,!1,null,null,null),oi=ri.exports,ai=n("8590");const{BreakpointName:li}=o["a"].constants;function ci({width:e,height:t},n=1){const s=400,i=e<=s?1.75:3;return{width:e/(i/n),height:t/(i/n)}}var ui={name:"CodePreview",inject:["references","isTargetIDE","store"],components:{DiagonalArrowIcon:oi,CodeListing:ei["a"],CodeTheme:ai["a"]},props:{code:{type:String,required:!0},preview:{type:String,required:!1},isRuntimePreviewVisible:{type:Boolean,required:!0}},data(){return{tutorialState:this.store.state}},computed:{currentBreakpoint(){return this.tutorialState.breakpoint},hasRuntimePreview(){return!!this.preview},previewAssetSize(){const e=this.hasRuntimePreview?this.references[this.preview]:{},t=(e.variants||[{}])[0]||{},n={width:900};let s=t.size||{};s.width||s.height||(s=n);const i=this.currentBreakpoint===li.medium?.8:1;return ci(s,i)},previewSize(){const e={width:102,height:32};return this.shouldDisplayHideLabel&&this.previewAssetSize?{width:this.previewAssetSize.width,height:this.previewAssetSize.height+e.height}:e},previewStyles(){const{width:e,height:t}=this.previewSize;return{width:e+"px",height:t+"px"}},codeProps(){return this.references[this.code]},runtimePreviewClasses(){return{collapsed:!this.shouldDisplayHideLabel,disabled:!this.hasRuntimePreview,"runtime-preview-ide":this.isTargetIDE}},shouldDisplayHideLabel(){return this.hasRuntimePreview&&this.isRuntimePreviewVisible},runtimePreviewTitle(){return this.hasRuntimePreview?null:"No preview available for this step."},togglePreviewText(){return this.hasRuntimePreview?"Preview":"No Preview"},textAriaLabel:({shouldDisplayHideLabel:e,togglePreviewText:t})=>`${t}, ${e?"Hide":"Show"}`},methods:{handleLeave(e,t){setTimeout(t,200)},togglePreview(){this.hasRuntimePreview&&this.$emit("runtime-preview-toggle",!this.isRuntimePreviewVisible)}}},di=ui,pi=(n("7bc6"),Object(w["a"])(di,Ys,Zs,!1,null,"1890a2ba",null)),hi=pi.exports,mi=n("3908"),fi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{style:e.backgroundStyle},[e._t("default")],2)},vi=[],gi={name:"BackgroundTheme",data(){return{codeThemeState:Es["a"].state}},computed:{backgroundStyle(){const{codeColors:e}=this.codeThemeState;return e?{"--background":e.background}:null}}},yi=gi,bi=Object(w["a"])(yi,fi,vi,!1,null,null,null),Ci=bi.exports,wi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{class:["step-container","step-"+e.stepNumber]},[n("div",{ref:"step",staticClass:"step",class:{focused:e.isActive},attrs:{"data-index":e.index}},[n("p",{staticClass:"step-label"},[e._v("Step "+e._s(e.stepNumber))]),n("ContentNode",{attrs:{content:e.content}}),e.caption&&e.caption.length>0?n("ContentNode",{staticClass:"caption",attrs:{content:e.caption}}):e._e()],1),e.isBreakpointSmall||!e.isTargetIDE?n("div",{staticClass:"media-container"},[e.media?n("Asset",{attrs:{identifier:e.media,showsReplayButton:!e.isClientMobile,showsVideoControls:e.isClientMobile,videoAutoplays:!e.isClientMobile}}):e._e(),e.code?n("MobileCodePreview",{attrs:{code:e.code}},[e.runtimePreview?n("Asset",{staticClass:"preview",attrs:{identifier:e.runtimePreview}}):e._e()],1):e._e()],1):e._e()])},_i=[],Si=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("BackgroundTheme",{staticClass:"mobile-code-preview"},[e.code?n("GenericModal",{staticClass:"full-code-listing-modal",attrs:{theme:e.isTargetIDE?"code":"light",codeBackgroundColorOverride:e.modalBackgroundColor,isFullscreen:"",visible:e.fullCodeIsVisible},on:{"update:visible":function(t){e.fullCodeIsVisible=t}}},[n("div",{staticClass:"full-code-listing-modal-content"},[n("CodeTheme",[n("CodeListing",e._b({staticClass:"full-code-listing",attrs:{showLineNumbers:""}},"CodeListing",e.codeProps,!1))],1)],1)]):e._e(),n("CodeTheme",[e.code?n("MobileCodeListing",e._b({attrs:{showLineNumbers:""},on:{"file-name-click":e.toggleFullCode}},"MobileCodeListing",e.codeProps,!1)):e._e()],1),n("CodeTheme",{staticClass:"preview-toggle-container"},[n("PreviewToggle",{attrs:{isActionable:!!e.$slots.default},on:{click:e.togglePreview}})],1),e.$slots.default?n("GenericModal",{staticClass:"runtime-preview-modal",attrs:{theme:e.isTargetIDE?"dynamic":"light",isFullscreen:"",visible:e.previewIsVisible},on:{"update:visible":function(t){e.previewIsVisible=t}}},[n("div",{staticClass:"runtime-preview-modal-content"},[n("span",{staticClass:"runtime-preview-label"},[e._v("Preview")]),e._t("default")],2)]):e._e()],1)},ki=[],xi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"code-listing-preview",attrs:{"data-syntax":e.syntax}},[n("CodeListing",{attrs:{fileName:e.fileName,syntax:e.syntax,fileType:e.fileType,content:e.previewedLines,startLineNumber:e.displayedRange.start,highlights:e.highlights,showLineNumbers:"",isFileNameActionable:""},on:{"file-name-click":function(t){return e.$emit("file-name-click")}}})],1)},Ti=[],Ai={name:"MobileCodeListing",components:{CodeListing:ei["a"]},props:{fileName:String,syntax:String,fileType:String,content:{type:Array,required:!0},highlights:{type:Array,default:()=>[]}},computed:{highlightedLineNumbers(){return new Set(this.highlights.map(({line:e})=>e))},firstHighlightRange(){if(0===this.highlightedLineNumbers.size)return{start:1,end:this.content.length};const e=Math.min(...this.highlightedLineNumbers.values());let t=e;while(this.highlightedLineNumbers.has(t+1))t+=1;return{start:e,end:t}},displayedRange(){const e=this.firstHighlightRange,t=e.start-2<1?1:e.start-2,n=e.end+3>=this.content.length+1?this.content.length+1:e.end+3;return{start:t,end:n}},previewedLines(){return this.content.slice(this.displayedRange.start-1,this.displayedRange.end-1)}}},$i=Ai,Ii=(n("fae5"),Object(w["a"])($i,xi,Ti,!1,null,"5ad4e037",null)),Oi=Ii.exports,Pi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("span",{staticClass:"toggle-preview"},[e.isActionable?n("a",{staticClass:"toggle-text",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.$emit("click")}}},[e._v(" Preview "),n("InlinePlusCircleIcon",{staticClass:"toggle-icon icon-inline"})],1):n("span",{staticClass:"toggle-text"},[e._v(" No preview ")])])},Ni=[],ji=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"inline-plus-circle-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5v0c0-3.59 2.91-6.5 6.5-6.5v0zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5v0c0-3.038-2.462-5.5-5.5-5.5v0z"}}),n("path",{attrs:{d:"M4 6.52h6v1h-6v-1z"}}),n("path",{attrs:{d:"M6.5 4.010h1v6h-1v-6z"}})])},Bi=[],Di={name:"InlinePlusCircleIcon",components:{SVGIcon:y["a"]}},Mi=Di,qi=Object(w["a"])(Mi,ji,Bi,!1,null,null,null),Ei=qi.exports,Ri={name:"MobileCodePreviewToggle",components:{InlinePlusCircleIcon:Ei},props:{isActionable:{type:Boolean,required:!0}}},Vi=Ri,Li=(n("e97b"),Object(w["a"])(Vi,Pi,Ni,!1,null,"d0709828",null)),Fi=Li.exports,zi={name:"MobileCodePreview",inject:["references","isTargetIDE","store"],components:{GenericModal:fn,CodeListing:ei["a"],MobileCodeListing:Oi,PreviewToggle:Fi,CodeTheme:ai["a"],BackgroundTheme:Ci},props:{code:{type:String,required:!0}},computed:{codeProps(){return this.references[this.code]},modalBackgroundColor(){const{codeColors:e}=this.store.state;return e?e.background:null}},data(){return{previewIsVisible:!1,fullCodeIsVisible:!1}},methods:{togglePreview(){this.previewIsVisible=!this.previewIsVisible},toggleFullCode(){this.fullCodeIsVisible=!this.fullCodeIsVisible}}},Hi=zi,Gi=(n("3012"),Object(w["a"])(Hi,Si,ki,!1,null,"b130569c",null)),Ui=Gi.exports;const{BreakpointName:Wi}=o["a"].constants;var Qi={name:"Step",components:{Asset:Oe["a"],MobileCodePreview:Ui,ContentNode:je["a"]},inject:["isTargetIDE","isClientMobile","store"],props:{code:{type:String,required:!1},content:{type:Array,required:!0},caption:{type:Array,required:!1},media:{type:String,required:!1},runtimePreview:{type:String,required:!1},sectionNumber:{type:Number,required:!0},stepNumber:{type:Number,required:!0},numberOfSteps:{type:Number,required:!0},index:{type:Number,required:!0},currentIndex:{type:Number,required:!0}},data(){return{tutorialState:this.store.state}},computed:{isBreakpointSmall(){return this.tutorialState.breakpoint===Wi.small},isActive:({index:e,currentIndex:t})=>e===t}},Ki=Qi,Xi=(n("bc03"),Object(w["a"])(Ki,wi,_i,!1,null,"4abdd121",null)),Ji=Xi.exports;const{BreakpointName:Yi}=o["a"].constants,{IntersectionDirections:Zi}=Ze["a"].constants,er="-35% 0% -65% 0%";var tr={name:"SectionSteps",components:{ContentNode:je["a"],Step:Ji,Asset:Oe["a"],CodePreview:hi,BackgroundTheme:Ci},mixins:[Ze["a"]],constants:{IntersectionMargins:er},inject:["isTargetIDE","store"],data(){const e=this.content.findIndex(this.isStepNode),{code:t,media:n,runtimePreview:s}=this.content[e]||{};return{tutorialState:this.store.state,visibleAsset:{media:n,code:t,runtimePreview:s},activeStep:e}},computed:{assetContainerClasses(){return{"for-step-code":!!this.visibleAsset.code,ide:this.isTargetIDE}},numberOfSteps(){return this.content.filter(this.isStepNode).length},contentNodes(){return this.content.reduce(({stepCounter:e,nodes:t},n,s)=>{const{type:i,...r}=n,o=this.isStepNode(n),a=o?e+1:e;return o?{stepCounter:e+1,nodes:t.concat({component:Ji,type:i,props:{...r,stepNumber:a,index:s,numberOfSteps:this.numberOfSteps,sectionNumber:this.sectionNumber}})}:{stepCounter:e,nodes:t.concat({component:je["a"],type:i,props:{content:[n]}})}},{stepCounter:0,nodes:[]}).nodes},isBreakpointSmall(){return this.tutorialState.breakpoint===Yi.small},stepNodes:({contentNodes:e,isStepNode:t})=>e.filter(t),intersectionRootMargin:()=>er},async mounted(){await Object(mi["a"])(8),this.findClosestStepNode()},methods:{isStepNode({type:e}){return"step"===e},contentClass(e){return{["interstitial interstitial-"+(e+1)]:!this.isStepNode(this.content[e])}},onReverseIntoLastStep(){const{asset:e}=this.$refs;if(e){const t=e.$el.querySelector("video");t&&(t.currentTime=0,t.play().catch(()=>{}))}},onFocus(e){const{code:t,media:n,runtimePreview:s}=this.content[e];this.activeStep=e,this.visibleAsset={code:t,media:n,runtimePreview:s}},onRuntimePreviewToggle(e){this.$emit("runtime-preview-toggle",e)},findClosestStepNode(){const e=.333*window.innerHeight;let t=null,n=0;this.stepNodes.forEach(s=>{const{index:i}=s.props,r=this.$refs.contentNodes[i].$refs.step;if(!r)return;const{top:o,bottom:a}=r.getBoundingClientRect(),l=o-e,c=a-e,u=Math.abs(l+c);(0===n||u<=n)&&(n=u,t=i)}),null!==t&&this.onFocus(t)},getIntersectionTargets(){const{stepNodes:e,$refs:t}=this;return e.map(({props:{index:e}})=>t.contentNodes[e].$refs.step)},onIntersect(e){const{target:t,isIntersecting:n}=e;if(!n)return;const s=parseFloat(t.getAttribute("data-index"));this.intersectionScrollDirection===Zi.down&&s===this.stepNodes[this.stepNodes.length-1].props.index&&this.onReverseIntoLastStep(),this.onFocus(s)}},props:{content:{type:Array,required:!0},isRuntimePreviewVisible:{type:Boolean,require:!0},sectionNumber:{type:Number,required:!0}}},nr=tr,sr=(n("00f4"),Object(w["a"])(nr,Xs,Js,!1,null,"25d30c2c",null)),ir=sr.exports,rr={name:"Section",components:{Intro:Ks,LinkableSection:st,Steps:ir},computed:{introProps(){const[{content:e,media:t},...n]=this.contentSection;return{content:e,expandedSections:n,media:t,sectionAnchor:this.anchor,sectionNumber:this.sectionNumber,title:this.title}}},props:{anchor:{type:String,required:!0},title:{type:String,required:!0},contentSection:{type:Array,required:!0},stepsSection:{type:Array,required:!0},sectionNumber:{type:Number,required:!0},isRuntimePreviewVisible:{type:Boolean,required:!0}},methods:{onRuntimePreviewToggle(e){this.$emit("runtime-preview-toggle",e)}}},or=rr,ar=(n("9dc4"),Object(w["a"])(or,Fs,zs,!1,null,"6b3a0b3a",null)),lr=ar.exports,cr={name:"SectionList",components:{Section:lr},data(){return{isRuntimePreviewVisible:!0}},props:{tasks:{type:Array,required:!0}},methods:{onRuntimePreviewToggle(e){this.isRuntimePreviewVisible=e}}},ur=cr,dr=(n("4d07"),Object(w["a"])(ur,Vs,Ls,!1,null,"79a75e9e",null)),pr=dr.exports;const hr={assessments:Ts,hero:Ln,tasks:pr,callToAction:Bt},mr=new Set(Object.keys(hr)),fr={name:"TutorialSection",render:function(e){const{kind:t,...n}=this.section,s=hr[t];return s?e(s,{props:n}):null},props:{section:{type:Object,required:!0,validator:e=>mr.has(e.kind)}}};var vr={name:"Tutorial",mixins:[Se["a"],Rs],components:{NavigationBar:_e,Section:fr,PortalTarget:h["PortalTarget"],BreakpointEmitter:o["a"]},inject:["isTargetIDE","store"],computed:{heroSection(){return this.sections.find(({kind:e})=>"hero"===e)},tutorialTitle(){return(this.heroSection||{}).title},pageTitle(){return this.tutorialTitle?`${this.tutorialTitle} — ${this.metadata.category} Tutorials`:void 0}},props:{sections:{type:Array,required:!0},references:{type:Object,required:!0},hierarchy:{type:Object,required:!0},metadata:{type:Object,required:!0}},methods:{handleBreakpointChange(e){this.store.updateBreakpoint(e)},handleCodeColorsChange(e){Es["a"].updateCodeColors(e)}},created(){this.store.reset()},mounted(){this.$bridge.on("codeColors",this.handleCodeColorsChange),this.$bridge.send({type:"requestCodeColors"})},provide(){return{references:this.references,isClientMobile:this.isClientMobile}},beforeDestroy(){this.$bridge.off("codeColors",this.handleCodeColorsChange)}},gr=vr,yr=(n("3d7d"),Object(w["a"])(gr,Ms,qs,!1,null,"6e17d3d0",null)),br=yr.exports,Cr=n("bb52"),wr=n("146e");const _r={article:"article",tutorial:"project"};var Sr={name:"Topic",inject:{isTargetIDE:{default:!1}},mixins:[Cr["a"],wr["a"]],data(){return{topicData:null}},computed:{navigationBarHeight(){return this.isTargetIDE?0:52},store(){return u},hierarchy(){const{hierarchy:e={}}=this.topicData,{technologyNavigation:t=["overview","tutorials","resources"]}=e||{};return{...e,technologyNavigation:t}},topicKey:({$route:e,topicData:t})=>[e.path,t.identifier.interfaceLanguage].join()},beforeRouteEnter(e,t,n){Object(r["b"])(e,t,n).then(e=>n(t=>{t.topicData=e})).catch(n)},beforeRouteUpdate(e,t,n){Object(r["c"])(e,t)?Object(r["b"])(e,t,n).then(e=>{this.topicData=e,n()}).catch(n):n()},created(){this.store.reset()},mounted(){this.$bridge.on("contentUpdate",e=>{this.topicData=e})},methods:{componentFor(e){const{kind:t}=e;return{[_r.article]:Ds,[_r.tutorial]:br}[t]},propsFor(e){const{hierarchy:t,kind:n,metadata:s,references:i,sections:r}=e;return{[_r.article]:{hierarchy:t,metadata:s,references:i,sections:r},[_r.tutorial]:{hierarchy:t,metadata:s,references:i,sections:r}}[n]}},provide(){return{navigationBarHeight:this.navigationBarHeight,store:this.store}},watch:{topicData(){this.$nextTick(()=>{this.newContentMounted()})}}},kr=Sr,xr=Object(w["a"])(kr,s,i,!1,null,null,null);t["default"]=xr.exports},"323a":function(e,t,n){"use strict";n("0b61")},"32b1":function(e,t,n){},"385e":function(e,t,n){},"39d2":function(e,t,n){},"3c4b":function(e,t,n){"use strict";n("1aae")},"3d7d":function(e,t,n){"use strict";n("311b")},"3e1b":function(e,t,n){"use strict";n("c5c1")},"3f84":function(e,t,n){"use strict";n("bc48")},4896:function(e,t,n){"use strict";n("fa9c")},"4b4a":function(e,t,n){},"4d07":function(e,t,n){"use strict";n("b52e")},"4eea":function(e,t,n){},5237:function(e,t,n){"use strict";n("4b4a")},"525c":function(e,t,n){},5356:function(e,t,n){"use strict";n("7e3c")},"53b5":function(e,t,n){"use strict";n("a662")},5952:function(e,t,n){"use strict";n("14b7")},"5da4":function(e,t,n){},"63a8":function(e,t,n){},"64fc":function(e,t,n){},"653a":function(e,t,n){"use strict";var s=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("router-link",{staticClass:"nav-title-content",attrs:{to:e.to}},[n("span",{staticClass:"title"},[e._t("default")],2),n("span",{staticClass:"subhead"},[e._v(" "),e._t("subhead")],2)])},i=[],r={name:"NavTitleContainer",props:{to:{type:[String,Object],required:!0}}},o=r,a=(n("a497"),n("2877")),l=Object(a["a"])(o,s,i,!1,null,"60ea3af8",null);t["a"]=l.exports},"66c9":function(e,t,n){"use strict";t["a"]={state:{codeColors:null},reset(){this.state.codeColors=null},updateCodeColors(e){const t=e=>e?`rgba(${e.red}, ${e.green}, ${e.blue}, ${e.alpha})`:null;this.state.codeColors=Object.entries(e).reduce((e,[n,s])=>({...e,[n]:t(s)}),{})}}},"6cd7":function(e,t,n){"use strict";n("a59d")},7096:function(e,t,n){},"76be":function(e,t,n){"use strict";n("cf62")},7839:function(e,t,n){"use strict";n("385e")},"78b2":function(e,t,n){},"7b17":function(e,t,n){},"7bc6":function(e,t,n){"use strict";n("b5e5")},"7e3c":function(e,t,n){},"80e4":function(e,t,n){"use strict";var s=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"asset"},[n(e.assetComponent,e._g(e._b({tag:"component"},"component",e.assetProps,!1),e.assetListeners))],1)},i=[],r=n("8bd9"),o=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("video",{attrs:{controls:e.showsControls,autoplay:e.autoplays,poster:e.normalizeAssetUrl(e.defaultPosterAttributes.url),muted:"",playsinline:""},domProps:{muted:!0},on:{playing:function(t){return e.$emit("playing")},ended:function(t){return e.$emit("ended")}}},[n("source",{attrs:{src:e.normalizeAssetUrl(e.videoAttributes.url)}})])},a=[],l=n("748c"),c=n("e425"),u=n("821b"),d={name:"VideoAsset",props:{variants:{type:Array,required:!0},showsControls:{type:Boolean,default:()=>!0},autoplays:{type:Boolean,default:()=>!0},posterVariants:{type:Array,required:!1,default:()=>[]}},data:()=>({appState:c["a"].state}),computed:{preferredColorScheme:({appState:e})=>e.preferredColorScheme,systemColorScheme:({appState:e})=>e.systemColorScheme,userPrefersDark:({preferredColorScheme:e,systemColorScheme:t})=>e===u["a"].dark.value||e===u["a"].auto.value&&t===u["a"].dark.value,shouldShowDarkVariant:({darkVideoVariantAttributes:e,userPrefersDark:t})=>e&&t,defaultVideoAttributes(){return this.videoVariantsGroupedByAppearance.light[0]||this.darkVideoVariantAttributes||{}},darkVideoVariantAttributes(){return this.videoVariantsGroupedByAppearance.dark[0]},videoVariantsGroupedByAppearance(){return Object(l["d"])(this.variants)},posterVariantsGroupedByAppearance(){return Object(l["d"])(this.posterVariants)},defaultPosterAttributes:({posterVariantsGroupedByAppearance:e,userPrefersDark:t})=>t&&e.dark.length?e.dark[0]:e.light[0]||{},videoAttributes:({darkVideoVariantAttributes:e,defaultVideoAttributes:t,shouldShowDarkVariant:n})=>n?e:t},methods:{normalizeAssetUrl:l["b"]}},p=d,h=n("2877"),m=Object(h["a"])(p,o,a,!1,null,null,null),f=m.exports,v=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"video-replay-container"},[n("VideoAsset",{ref:"asset",attrs:{variants:e.variants,showsControls:e.showsControls,autoplays:e.autoplays},on:{ended:e.onVideoEnd}}),n("a",{staticClass:"replay-button",class:{visible:this.showsReplayButton},attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.replay.apply(null,arguments)}}},[e._v(" Replay "),n("InlineReplayIcon",{staticClass:"replay-icon icon-inline"})],1)],1)},g=[],y=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"inline-replay-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M2.254 10.201c-1.633-2.613-0.838-6.056 1.775-7.689 2.551-1.594 5.892-0.875 7.569 1.592l0.12 0.184-0.848 0.53c-1.34-2.145-4.166-2.797-6.311-1.457s-2.797 4.166-1.457 6.311 4.166 2.797 6.311 1.457c1.006-0.629 1.71-1.603 2.003-2.723l0.056-0.242 0.98 0.201c-0.305 1.487-1.197 2.792-2.51 3.612-2.613 1.633-6.056 0.838-7.689-1.775z"}}),n("path",{attrs:{d:"M10.76 1.355l0.984-0.18 0.851 4.651-4.56-1.196 0.254-0.967 3.040 0.796z"}})])},b=[],C=n("be08"),w={name:"InlineReplayIcon",components:{SVGIcon:C["a"]}},_=w,S=Object(h["a"])(_,y,b,!1,null,null,null),k=S.exports,x={name:"ReplayableVideoAsset",components:{InlineReplayIcon:k,VideoAsset:f},props:{variants:{type:Array,required:!0},showsControls:{type:Boolean,default:()=>!0},autoplays:{type:Boolean,default:()=>!0}},data(){return{showsReplayButton:!1}},methods:{async replay(){const e=this.$refs.asset.$el;e&&(this.showsReplayButton=!1,e.currentTime=0,await e.play())},onVideoEnd(){this.showsReplayButton=!0}}},T=x,A=(n("3f84"),Object(h["a"])(T,v,g,!1,null,"7335dbb2",null)),$=A.exports;const I={video:"video",image:"image"};var O={name:"Asset",components:{ImageAsset:r["a"],VideoAsset:f},constants:{AssetTypes:I},inject:["references"],props:{identifier:{type:String,required:!0},showsReplayButton:{type:Boolean,default:()=>!1},showsVideoControls:{type:Boolean,default:()=>!0},videoAutoplays:{type:Boolean,default:()=>!0}},computed:{rawAsset(){return this.references[this.identifier]||{}},isRawAssetVideo:({rawAsset:e})=>e.type===I.video,videoPoster(){return this.isRawAssetVideo&&this.references[this.rawAsset.poster]},asset(){return this.isRawAssetVideo&&this.prefersReducedMotion&&this.videoPoster||this.rawAsset},assetComponent(){switch(this.asset.type){case I.image:return r["a"];case I.video:return this.showsReplayButton?$:f;default:return}},prefersReducedMotion(){return window.matchMedia("(prefers-reduced-motion)").matches},assetProps(){return{[I.image]:this.imageProps,[I.video]:this.videoProps}[this.asset.type]},imageProps(){return{alt:this.asset.alt,variants:this.asset.variants}},videoProps(){return{variants:this.asset.variants,showsControls:this.showsVideoControls,autoplays:!this.prefersReducedMotion&&this.videoAutoplays,posterVariants:this.videoPoster?this.videoPoster.variants:[]}},assetListeners(){return{[I.image]:null,[I.video]:{ended:()=>this.$emit("videoEnded")}}[this.asset.type]}}},P=O,N=(n("7839"),Object(h["a"])(P,s,i,!1,null,"1b5cc854",null));t["a"]=N.exports},"80f7":function(e,t,n){"use strict";n("4eea")},8590:function(e,t,n){"use strict";var s=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{style:e.codeStyle},[e._t("default")],2)},i=[],r=n("66c9");const o=0,a=255;function l(e){const t=e.match(/rgba\((\d+),\s*(\d+),\s*(\d+),\s*(\d+\.?\d*|\.\d+)\s*\)/);if(!t)throw new Error("invalid rgba() input");const n=10;return{r:parseInt(t[1],n),g:parseInt(t[2],n),b:parseInt(t[3],n),a:parseFloat(t[4])}}function c(e){const{r:t,g:n,b:s}=l(e);return.2126*t+.7152*n+.0722*s}function u(e,t){const n=Math.round(a*t),s=l(e),{a:i}=s,[r,c,u]=[s.r,s.g,s.b].map(e=>Math.max(o,Math.min(a,e+n)));return`rgba(${r}, ${c}, ${u}, ${i})`}function d(e,t){return u(e,t)}function p(e,t){return u(e,-1*t)}var h={name:"CodeTheme",data(){return{codeThemeState:r["a"].state}},computed:{codeStyle(){const{codeColors:e}=this.codeThemeState;return e?{"--text":e.text,"--background":e.background,"--line-highlight":e.lineHighlight,"--url":e.commentURL,"--syntax-comment":e.comment,"--syntax-quote":e.comment,"--syntax-keyword":e.keyword,"--syntax-literal":e.keyword,"--syntax-selector-tag":e.keyword,"--syntax-string":e.stringLiteral,"--syntax-bullet":e.stringLiteral,"--syntax-meta":e.keyword,"--syntax-number":e.stringLiteral,"--syntax-symbol":e.stringLiteral,"--syntax-tag":e.stringLiteral,"--syntax-attr":e.typeAnnotation,"--syntax-built_in":e.typeAnnotation,"--syntax-builtin-name":e.typeAnnotation,"--syntax-class":e.typeAnnotation,"--syntax-params":e.typeAnnotation,"--syntax-section":e.typeAnnotation,"--syntax-title":e.typeAnnotation,"--syntax-type":e.typeAnnotation,"--syntax-attribute":e.keyword,"--syntax-identifier":e.text,"--syntax-subst":e.text,"--color-syntax-param-internal-name":this.internalParamNameColor}:null},internalParamNameColor(){const{background:e,text:t}=this.codeThemeState.codeColors;try{const n=c(e),s=n!0},autoplays:{type:Boolean,default:()=>!0},posterVariants:{type:Array,required:!1,default:()=>[]}},data:()=>({appState:l["a"].state}),computed:{preferredColorScheme:({appState:t})=>t.preferredColorScheme,systemColorScheme:({appState:t})=>t.systemColorScheme,userPrefersDark:({preferredColorScheme:t,systemColorScheme:e})=>t===u["a"].dark.value||t===u["a"].auto.value&&e===u["a"].dark.value,shouldShowDarkVariant:({darkVideoVariantAttributes:t,userPrefersDark:e})=>t&&e,defaultVideoAttributes(){return this.videoVariantsGroupedByAppearance.light[0]||this.darkVideoVariantAttributes||{}},darkVideoVariantAttributes(){return this.videoVariantsGroupedByAppearance.dark[0]},videoVariantsGroupedByAppearance(){return Object(c["d"])(this.variants)},posterVariantsGroupedByAppearance(){return Object(c["d"])(this.posterVariants)},defaultPosterAttributes:({posterVariantsGroupedByAppearance:t,userPrefersDark:e})=>e&&t.dark.length?t.dark[0]:t.light[0]||{},videoAttributes:({darkVideoVariantAttributes:t,defaultVideoAttributes:e,shouldShowDarkVariant:n})=>n?t:e},methods:{normalizeAssetUrl:c["b"]}},p=d,m=n("2877"),h=Object(m["a"])(p,o,r,!1,null,null,null),v=h.exports,f=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"video-replay-container"},[n("VideoAsset",{ref:"asset",attrs:{variants:t.variants,showsControls:t.showsControls,autoplays:t.autoplays},on:{ended:t.onVideoEnd}}),n("a",{staticClass:"replay-button",class:{visible:this.showsReplayButton},attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.replay.apply(null,arguments)}}},[t._v(" Replay "),n("InlineReplayIcon",{staticClass:"replay-icon icon-inline"})],1)],1)},y=[],b=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("SVGIcon",{staticClass:"inline-replay-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M2.254 10.201c-1.633-2.613-0.838-6.056 1.775-7.689 2.551-1.594 5.892-0.875 7.569 1.592l0.12 0.184-0.848 0.53c-1.34-2.145-4.166-2.797-6.311-1.457s-2.797 4.166-1.457 6.311 4.166 2.797 6.311 1.457c1.006-0.629 1.71-1.603 2.003-2.723l0.056-0.242 0.98 0.201c-0.305 1.487-1.197 2.792-2.51 3.612-2.613 1.633-6.056 0.838-7.689-1.775z"}}),n("path",{attrs:{d:"M10.76 1.355l0.984-0.18 0.851 4.651-4.56-1.196 0.254-0.967 3.040 0.796z"}})])},C=[],_=n("be08"),g={name:"InlineReplayIcon",components:{SVGIcon:_["a"]}},V=g,S=Object(m["a"])(V,b,C,!1,null,null,null),A=S.exports,T={name:"ReplayableVideoAsset",components:{InlineReplayIcon:A,VideoAsset:v},props:{variants:{type:Array,required:!0},showsControls:{type:Boolean,default:()=>!0},autoplays:{type:Boolean,default:()=>!0}},data(){return{showsReplayButton:!1}},methods:{async replay(){const t=this.$refs.asset.$el;t&&(this.showsReplayButton=!1,t.currentTime=0,await t.play())},onVideoEnd(){this.showsReplayButton=!0}}},w=T,k=(n("3f84"),Object(m["a"])(w,f,y,!1,null,"7335dbb2",null)),I=k.exports;const x={video:"video",image:"image"};var O={name:"Asset",components:{ImageAsset:i["a"],VideoAsset:v},constants:{AssetTypes:x},inject:["references"],props:{identifier:{type:String,required:!0},showsReplayButton:{type:Boolean,default:()=>!1},showsVideoControls:{type:Boolean,default:()=>!0},videoAutoplays:{type:Boolean,default:()=>!0}},computed:{rawAsset(){return this.references[this.identifier]||{}},isRawAssetVideo:({rawAsset:t})=>t.type===x.video,videoPoster(){return this.isRawAssetVideo&&this.references[this.rawAsset.poster]},asset(){return this.isRawAssetVideo&&this.prefersReducedMotion&&this.videoPoster||this.rawAsset},assetComponent(){switch(this.asset.type){case x.image:return i["a"];case x.video:return this.showsReplayButton?I:v;default:return}},prefersReducedMotion(){return window.matchMedia("(prefers-reduced-motion)").matches},assetProps(){return{[x.image]:this.imageProps,[x.video]:this.videoProps}[this.asset.type]},imageProps(){return{alt:this.asset.alt,variants:this.asset.variants}},videoProps(){return{variants:this.asset.variants,showsControls:this.showsVideoControls,autoplays:!this.prefersReducedMotion&&this.videoAutoplays,posterVariants:this.videoPoster?this.videoPoster.variants:[]}},assetListeners(){return{[x.image]:null,[x.video]:{ended:()=>this.$emit("videoEnded")}}[this.asset.type]}}},j=O,N=(n("7839"),Object(m["a"])(j,s,a,!1,null,"1b5cc854",null));e["a"]=N.exports},"82d9":function(t,e,n){},"85fb":function(t,e,n){},"8d2d":function(t,e,n){"use strict";var s=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("SVGIcon",{staticClass:"tutorial-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M0.933 6.067h3.733v1.867h-3.733v-1.867z"}}),n("path",{attrs:{d:"M0.933 1.867h3.733v1.867h-3.733v-1.867z"}}),n("path",{attrs:{d:"M13.067 1.867v10.267h-7.467v-10.267zM12.133 2.8h-5.6v8.4h5.6z"}}),n("path",{attrs:{d:"M0.933 10.267h3.733v1.867h-3.733v-1.867z"}})])},a=[],i=n("be08"),o={name:"TutorialIcon",components:{SVGIcon:i["a"]}},r=o,c=n("2877"),l=Object(c["a"])(r,s,a,!1,null,null,null);e["a"]=l.exports},"8f86":function(t,e,n){},"9b79":function(t,e,n){},"9f56":function(t,e,n){},a497:function(t,e,n){"use strict";n("da75")},a8f9:function(t,e,n){"use strict";n("d4d0")},a9f1:function(t,e,n){"use strict";var s=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("SVGIcon",{staticClass:"article-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M8.033 1l3.967 4.015v7.985h-10v-12zM7.615 2h-4.615v10h8v-6.574z"}}),n("path",{attrs:{d:"M7 1h1v4h-1z"}}),n("path",{attrs:{d:"M7 5h5v1h-5z"}})])},a=[],i=n("be08"),o={name:"ArticleIcon",components:{SVGIcon:i["a"]}},r=o,c=n("2877"),l=Object(c["a"])(r,s,a,!1,null,null,null);e["a"]=l.exports},b185:function(t,e,n){},b9c2:function(t,e,n){},bc48:function(t,e,n){},be3b:function(t,e,n){"use strict";n("fb27")},c4dd:function(t,e,n){"use strict";var s=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("SVGIcon",{staticClass:"play-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5v0c0-3.59 2.91-6.5 6.5-6.5v0zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5v0c0-3.038-2.462-5.5-5.5-5.5v0z"}}),n("path",{attrs:{d:"M10.195 7.010l-5 3v-6l5 3z"}})])},a=[],i=n("be08"),o={name:"PlayIcon",components:{SVGIcon:i["a"]}},r=o,c=n("2877"),l=Object(c["a"])(r,s,a,!1,null,null,null);e["a"]=l.exports},c802:function(t,e,n){"use strict";n("f084")},c8fd:function(t,e,n){"use strict";n("1509")},d4d0:function(t,e,n){},d647:function(t,e,n){"use strict";n("b185")},da75:function(t,e,n){},dcb9:function(t,e,n){},de60:function(t,e,n){"use strict";var s=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("SVGIcon",{staticClass:"download-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5s2.91-6.5 6.5-6.5zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5s-2.462-5.5-5.5-5.5z"}}),n("path",{attrs:{d:"M7.51 2.964l-0.001 5.431 1.308-2.041 0.842 0.539-2.664 4.162-2.633-4.164 0.845-0.534 1.303 2.059 0.001-5.452z"}})])},a=[],i=n("be08"),o={name:"DownloadIcon",components:{SVGIcon:i["a"]}},r=o,c=n("2877"),l=Object(c["a"])(r,s,a,!1,null,null,null);e["a"]=l.exports},e929:function(t,e,n){"use strict";n("54b0")},ec73:function(t,e,n){},ee29:function(t,e,n){"use strict";n("b9c2")},f025:function(t,e,n){"use strict";n.r(e);var s=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.topicData?n("Overview",t._b({key:t.topicKey},"Overview",t.overviewProps,!1)):t._e()},a=[],i=n("25a9"),o=n("bb52"),r=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"tutorials-overview"},[t.isTargetIDE?t._e():n("Nav",{staticClass:"theme-dark",attrs:{sections:t.otherSections}},[t._v(" "+t._s(t.title)+" ")]),n("main",{staticClass:"main",attrs:{id:"main",role:"main",tabindex:"0"}},[n("div",{staticClass:"radial-gradient"},[t._t("above-hero"),t.heroSection?n("Hero",{attrs:{action:t.heroSection.action,content:t.heroSection.content,estimatedTime:t.metadata.estimatedTime,image:t.heroSection.image,title:t.heroSection.title}}):t._e()],2),t.otherSections.length>0?n("LearningPath",{attrs:{sections:t.otherSections}}):t._e()],1)],1)},c=[],l={state:{activeTutorialLink:null,activeVolume:null},reset(){this.state.activeTutorialLink=null,this.state.activeVolume=null},setActiveSidebarLink(t){this.state.activeTutorialLink=t},setActiveVolume(t){this.state.activeVolume=t}},u=n("d8ce"),d=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("section",{staticClass:"hero"},[n("div",{staticClass:"copy-container"},[n("h1",{staticClass:"title"},[t._v(t._s(t.title))]),t.content?n("ContentNode",{attrs:{content:t.content}}):t._e(),t.estimatedTime?n("p",{staticClass:"meta"},[n("TimerIcon"),n("span",{staticClass:"meta-content"},[n("strong",{staticClass:"time"},[t._v(t._s(t.estimatedTime))]),n("span",[t._v(" Estimated Time")])])],1):t._e(),t.action?n("CallToActionButton",{attrs:{action:t.action,"aria-label":t.action.overridingTitle+" with "+t.title,isDark:""}}):t._e()],1),t.image?n("Asset",{attrs:{identifier:t.image}}):t._e()],1)},p=[],m=n("80e4"),h=n("c081"),v=n("5677"),f=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("SVGIcon",{staticClass:"timer-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5v0c0-3.59 2.91-6.5 6.5-6.5v0zM7 2c-2.761 0-5 2.239-5 5s2.239 5 5 5c2.761 0 5-2.239 5-5v0c0-2.761-2.239-5-5-5v0z"}}),n("path",{attrs:{d:"M6.51 3.51h1.5v3.5h-1.5v-3.5z"}}),n("path",{attrs:{d:"M6.51 7.010h4v1.5h-4v-1.5z"}})])},y=[],b=n("be08"),C={name:"TimerIcon",components:{SVGIcon:b["a"]}},_=C,g=n("2877"),V=Object(g["a"])(_,f,y,!1,null,null,null),S=V.exports,A={name:"Hero",components:{Asset:m["a"],CallToActionButton:h["a"],ContentNode:v["a"],TimerIcon:S},props:{action:{type:Object,required:!1},content:{type:Array,required:!1},estimatedTime:{type:String,required:!1},image:{type:String,required:!1},title:{type:String,required:!0}}},T=A,w=(n("f974"),Object(g["a"])(T,d,p,!1,null,"fc7f508c",null)),k=w.exports,I=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"learning-path",class:t.classes},[n("div",{staticClass:"main-container"},[t.isTargetIDE?t._e():n("div",{staticClass:"secondary-content-container"},[n("TutorialsNavigation",{attrs:{sections:t.sections,"aria-label":"On this page"}})],1),n("div",{staticClass:"primary-content-container"},[n("div",{staticClass:"content-sections-container"},[t._l(t.volumes,(function(e,s){return n("Volume",t._b({key:"volume_"+s,staticClass:"content-section"},"Volume",t.propsFor(e),!1))})),t._l(t.otherSections,(function(e,s){return n(t.componentFor(e),t._b({key:"resource_"+s,tag:"component",staticClass:"content-section"},"component",t.propsFor(e),!1))}))],2)])])])},x=[],O=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("section",{staticClass:"resources",attrs:{id:"resources",tabindex:"-1"}},[n("VolumeName",{attrs:{name:"Resources",content:t.content}}),n("TileGroup",{attrs:{tiles:t.tiles}})],1)},j=[],N=n("72e7");const E={topOneThird:"-30% 0% -70% 0%",center:"-50% 0% -50% 0%"};var M={mixins:[N["a"]],computed:{intersectionRoot(){return null},intersectionRootMargin(){return E.center}},methods:{onIntersect(t){if(!t.isIntersecting)return;const e=this.onIntersectViewport;e?e():console.warn("onIntersectViewportCenter not implemented")}}},$=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"volume-name"},[t.image?n("Asset",{staticClass:"image",attrs:{identifier:t.image,"aria-hidden":"true"}}):t._e(),n("h2",{staticClass:"name"},[t._v(" "+t._s(t.name)+" ")]),t.content?n("ContentNode",{attrs:{content:t.content}}):t._e()],1)},q=[],B={name:"VolumeName",components:{ContentNode:v["a"],Asset:m["a"]},props:{image:{type:String,required:!1},content:{type:Array,required:!1},name:{type:String,required:!1}}},R=B,z=(n("c802"),Object(g["a"])(R,$,q,!1,null,"14577284",null)),L=z.exports,D=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"tile-group",class:t.countClass},t._l(t.tiles,(function(e){return n("Tile",t._b({key:e.title},"Tile",t.propsFor(e),!1))})),1)},G=[],P=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"tile"},[t.identifier?n("div",{staticClass:"icon"},[n(t.iconComponent,{tag:"component"})],1):t._e(),n("div",{staticClass:"title"},[t._v(t._s(t.title))]),n("ContentNode",{attrs:{content:t.content}}),t.action?n("DestinationDataProvider",{attrs:{destination:t.action},scopedSlots:t._u([{key:"default",fn:function(e){var s=e.url,a=e.title;return n("Reference",{staticClass:"link",attrs:{url:s}},[t._v(" "+t._s(a)+" "),n("InlineChevronRightIcon",{staticClass:"link-icon icon-inline"})],1)}}],null,!1,3874201962)}):t._e()],1)},F=[],H=n("3b96"),K=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("SVGIcon",{staticClass:"document-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M11.2,5.3,8,2l-.1-.1H2.8V12.1h8.5V6.3l-.1-1ZM8,3.2l2,2.1H8Zm2.4,8H3.6V2.8H7V6.3h3.4Z"}})])},U=[],Z={name:"DocumentIcon",components:{SVGIcon:b["a"]}},J=Z,Q=(n("77e2"),Object(g["a"])(J,K,U,!1,null,"56114692",null)),W=Q.exports,X=n("de60"),Y=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("SVGIcon",{staticClass:"forum-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M13 1v9h-7l-1.5 3-1.5-3h-2v-9zM12 2h-10v7h1.616l0.884 1.763 0.88-1.763h6.62z"}}),n("path",{attrs:{d:"M3 4h8.001v1h-8.001v-1z"}}),n("path",{attrs:{d:"M3 6h8.001v1h-8.001v-1z"}})])},tt=[],et={name:"ForumIcon",components:{SVGIcon:b["a"]}},nt=et,st=Object(g["a"])(nt,Y,tt,!1,null,null,null),at=st.exports,it=n("c4dd"),ot=n("86d8"),rt=n("34b0"),ct=n("c7ea");const lt={documentation:"documentation",downloads:"downloads",featured:"featured",forums:"forums",sampleCode:"sampleCode",videos:"videos"};var ut,dt,pt={name:"Tile",constants:{Identifier:lt},components:{DestinationDataProvider:ct["a"],InlineChevronRightIcon:rt["a"],ContentNode:v["a"],CurlyBracketsIcon:H["a"],DocumentIcon:W,DownloadIcon:X["a"],ForumIcon:at,PlayIcon:it["a"],Reference:ot["a"]},props:{action:{type:Object,required:!1},content:{type:Array,required:!0},identifier:{type:String,required:!1},title:{type:String,require:!0}},computed:{iconComponent:({identifier:t})=>({[lt.documentation]:W,[lt.downloads]:X["a"],[lt.forums]:at,[lt.sampleCode]:H["a"],[lt.videos]:it["a"]}[t])}},mt=pt,ht=(n("0175"),Object(g["a"])(mt,P,F,!1,null,"86db603a",null)),vt=ht.exports,ft={name:"TileGroup",components:{Tile:vt},props:{tiles:{type:Array,required:!0}},computed:{countClass:({tiles:t})=>"count-"+t.length},methods:{propsFor:({action:t,content:e,identifier:n,title:s})=>({action:t,content:e,identifier:n,title:s})}},yt=ft,bt=(n("f0ca"),Object(g["a"])(yt,D,G,!1,null,"015f9f13",null)),Ct=bt.exports,_t={name:"Resources",mixins:[M],inject:{store:{default:()=>({setActiveSidebarLink(){},setActiveVolume(){}})}},components:{VolumeName:L,TileGroup:Ct},computed:{intersectionRootMargin:()=>E.topOneThird},props:{content:{type:Array,required:!1},tiles:{type:Array,required:!0}},methods:{onIntersectViewport(){this.store.setActiveSidebarLink("Resources"),this.store.setActiveVolume(null)}}},gt=_t,Vt=(n("5668"),Object(g["a"])(gt,O,j,!1,null,"49ba6f62",null)),St=Vt.exports,At=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("nav",{staticClass:"tutorials-navigation"},[n("TutorialsNavigationList",t._l(t.sections,(function(e,s){return n("li",{key:e.name+"_"+s,class:t.sectionClasses(e)},[t.isVolume(e)?n(t.componentForVolume(e),t._b({tag:"component",on:{"select-menu":t.onSelectMenu,"deselect-menu":t.onDeselectMenu}},"component",t.propsForVolume(e),!1),t._l(e.chapters,(function(e){return n("li",{key:e.name},[n("TutorialsNavigationLink",[t._v(" "+t._s(e.name)+" ")])],1)})),0):t.isResources(e)?n("TutorialsNavigationLink",[t._v(" Resources ")]):t._e()],1)})),0)],1)},Tt=[],wt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("router-link",{staticClass:"tutorials-navigation-link",class:{active:t.active},attrs:{to:t.fragment},nativeOn:{click:function(e){return t.handleFocus.apply(null,arguments)}}},[t._t("default")],2)},kt=[],It=n("002d"),xt=n("8a61"),Ot={name:"TutorialsNavigationLink",mixins:[xt["a"]],inject:{store:{default:()=>({state:{}})}},data(){return{state:this.store.state}},computed:{active:({state:{activeTutorialLink:t},text:e})=>e===t,fragment:({text:t,$route:e})=>({hash:Object(It["a"])(t),query:e.query}),text:({$slots:{default:[{text:t}]}})=>t.trim()},methods:{async handleFocus(){const{hash:t}=this.fragment,e=document.getElementById(t);e&&(e.focus(),await this.scrollToElement("#"+t))}}},jt=Ot,Nt=(n("6962"),Object(g["a"])(jt,wt,kt,!1,null,"6bb99205",null)),Et=Nt.exports,Mt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ol",{staticClass:"tutorials-navigation-list",attrs:{role:"list"}},[t._t("default")],2)},$t=[],qt={name:"TutorialsNavigationList"},Bt=qt,Rt=(n("202a"),Object(g["a"])(Bt,Mt,$t,!1,null,"6f2800d1",null)),zt=Rt.exports,Lt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"tutorials-navigation-menu",class:{collapsed:t.collapsed}},[n("button",{staticClass:"toggle",attrs:{"aria-expanded":t.collapsed?"false":"true",type:"button"},on:{click:function(e){return e.stopPropagation(),t.onClick.apply(null,arguments)}}},[n("span",{staticClass:"text"},[t._v(t._s(t.title))]),n("InlineCloseIcon",{staticClass:"toggle-icon icon-inline"})],1),n("transition-expand",[t.collapsed?t._e():n("div",{staticClass:"tutorials-navigation-menu-content"},[n("TutorialsNavigationList",{attrs:{"aria-label":"Chapters"}},[t._t("default")],2)],1)])],1)},Dt=[],Gt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("SVGIcon",{staticClass:"inline-close-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M11.91 1l1.090 1.090-4.917 4.915 4.906 4.905-1.090 1.090-4.906-4.905-4.892 4.894-1.090-1.090 4.892-4.894-4.903-4.904 1.090-1.090 4.903 4.904z"}})])},Pt=[],Ft={name:"InlineCloseIcon",components:{SVGIcon:b["a"]}},Ht=Ft,Kt=Object(g["a"])(Ht,Gt,Pt,!1,null,null,null),Ut=Kt.exports,Zt={name:"TransitionExpand",functional:!0,render(t,e){const n={props:{name:"expand"},on:{afterEnter(t){t.style.height="auto"},enter(t){const{width:e}=getComputedStyle(t);t.style.width=e,t.style.position="absolute",t.style.visibility="hidden",t.style.height="auto";const{height:n}=getComputedStyle(t);t.style.width=null,t.style.position=null,t.style.visibility=null,t.style.height=0,getComputedStyle(t).height,requestAnimationFrame(()=>{t.style.height=n})},leave(t){const{height:e}=getComputedStyle(t);t.style.height=e,getComputedStyle(t).height,requestAnimationFrame(()=>{t.style.height=0})}}};return t("transition",n,e.children)}},Jt=Zt,Qt=(n("032c"),Object(g["a"])(Jt,ut,dt,!1,null,null,null)),Wt=Qt.exports,Xt={name:"TutorialsNavigationMenu",components:{InlineCloseIcon:Ut,TransitionExpand:Wt,TutorialsNavigationList:zt},props:{collapsed:{type:Boolean,default:!0},title:{type:String,required:!0}},methods:{onClick(){this.collapsed?this.$emit("select-menu",this.title):this.$emit("deselect-menu")}}},Yt=Xt,te=(n("d647"),Object(g["a"])(Yt,Lt,Dt,!1,null,"6513d652",null)),ee=te.exports;const ne={resources:"resources",volume:"volume"};var se={name:"TutorialsNavigation",components:{TutorialsNavigationLink:Et,TutorialsNavigationList:zt,TutorialsNavigationMenu:ee},constants:{SectionKind:ne},inject:{store:{default:()=>({setActiveVolume(){}})}},data(){return{state:this.store.state}},props:{sections:{type:Array,required:!0}},computed:{activeVolume:({state:t})=>t.activeVolume},methods:{sectionClasses(t){return{volume:this.isVolume(t),"volume--named":this.isNamedVolume(t),resource:this.isResources(t)}},componentForVolume:({name:t})=>t?ee:zt,isResources:({kind:t})=>t===ne.resources,isVolume:({kind:t})=>t===ne.volume,activateFirstNamedVolume(){const{isNamedVolume:t,sections:e}=this,n=e.find(t);n&&this.store.setActiveVolume(n.name)},isNamedVolume(t){return this.isVolume(t)&&t.name},onDeselectMenu(){this.store.setActiveVolume(null)},onSelectMenu(t){this.store.setActiveVolume(t)},propsForVolume({name:t}){const{activeVolume:e}=this;return t?{collapsed:t!==e,title:t}:{"aria-label":"Chapters"}}},created(){this.activateFirstNamedVolume()}},ae=se,ie=(n("095b"),Object(g["a"])(ae,At,Tt,!1,null,"0cbd8adb",null)),oe=ie.exports,re=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("section",{staticClass:"volume"},[t.name?n("VolumeName",t._b({},"VolumeName",{name:t.name,image:t.image,content:t.content},!1)):t._e(),t._l(t.chapters,(function(e,s){return n("Chapter",{key:e.name,staticClass:"tile",attrs:{content:e.content,image:e.image,name:e.name,number:s+1,topics:t.lookupTopics(e.tutorials),volumeHasName:!!t.name}})}))],2)},ce=[],le=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("section",{staticClass:"chapter",attrs:{id:t.anchor,tabindex:"-1"}},[n("div",{staticClass:"info"},[n("Asset",{attrs:{identifier:t.image,"aria-hidden":"true"}}),n("div",{staticClass:"intro"},[n(t.volumeHasName?"h3":"h2",{tag:"component",staticClass:"name",attrs:{"aria-label":t.name+" - Chapter "+t.number}},[n("span",{staticClass:"eyebrow",attrs:{"aria-hidden":"true"}},[t._v("Chapter "+t._s(t.number))]),n("span",{staticClass:"name-text",attrs:{"aria-hidden":"true"}},[t._v(t._s(t.name))])]),t.content?n("ContentNode",{attrs:{content:t.content}}):t._e()],1)],1),n("TopicList",{attrs:{topics:t.topics}})],1)},ue=[],de=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ol",{staticClass:"topic-list"},t._l(t.topics,(function(e){return n("li",{key:e.url,staticClass:"topic",class:t.kindClassFor(e)},[n("div",{staticClass:"topic-icon"},[n(t.iconComponent(e),{tag:"component"})],1),n("router-link",{staticClass:"container",attrs:{to:t.buildUrl(e.url,t.$route.query),"aria-label":t.ariaLabelFor(e)}},[n("div",{staticClass:"link"},[t._v(t._s(e.title))]),e.estimatedTime?n("div",{staticClass:"time"},[n("TimerIcon"),n("span",{staticClass:"time-label"},[t._v(t._s(e.estimatedTime))])],1):t._e()])],1)})),0)},pe=[],me=n("a9f1"),he=n("8d2d"),ve=n("d26a");const fe={article:"article",tutorial:"project"},ye={article:"article",tutorial:"tutorial"},be={[fe.article]:"Article",[fe.tutorial]:"Tutorial"};var Ce={name:"ChapterTopicList",components:{TimerIcon:S},constants:{TopicKind:fe,TopicKindClass:ye,TopicKindIconLabel:be},props:{topics:{type:Array,required:!0}},methods:{buildUrl:ve["b"],iconComponent:({kind:t})=>({[fe.article]:me["a"],[fe.tutorial]:he["a"]}[t]),kindClassFor:({kind:t})=>({[fe.article]:ye.article,[fe.tutorial]:ye.tutorial}[t]),formatTime:t=>t.replace("min"," minutes").replace("hrs"," hours"),ariaLabelFor({title:t,estimatedTime:e,kind:n}){const s=[t,be[n]];return e&&s.push(this.formatTime(e)+" Estimated Time"),s.join(" - ")}}},_e=Ce,ge=(n("be3b"),Object(g["a"])(_e,de,pe,!1,null,"9a8371c6",null)),Ve=ge.exports,Se={name:"Chapter",mixins:[M],inject:{store:{default:()=>({setActiveSidebarLink(){},setActiveVolume(){}})}},components:{Asset:m["a"],ContentNode:v["a"],TopicList:Ve},props:{content:{type:Array,required:!1},image:{type:String,required:!0},name:{type:String,required:!0},number:{type:Number,required:!0},topics:{type:Array,required:!0},volumeHasName:{type:Boolean,default:!1}},computed:{anchor:({name:t})=>Object(It["a"])(t),intersectionRootMargin:()=>E.topOneThird},methods:{onIntersectViewport(){this.store.setActiveSidebarLink(this.name),this.volumeHasName||this.store.setActiveVolume(null)}}},Ae=Se,Te=(n("f31c"),Object(g["a"])(Ae,le,ue,!1,null,"1d13969f",null)),we=Te.exports,ke={name:"Volume",mixins:[M],components:{VolumeName:L,Chapter:we},computed:{intersectionRootMargin:()=>E.topOneThird},inject:{references:{default:()=>({})},store:{default:()=>({setActiveVolume(){}})}},props:{chapters:{type:Array,required:!0},content:{type:Array,required:!1},image:{type:String,required:!1},name:{type:String,required:!1}},methods:{lookupTopics(t){return t.reduce((t,e)=>t.concat(this.references[e]||[]),[])},onIntersectViewport(){this.name&&this.store.setActiveVolume(this.name)}}},Ie=ke,xe=(n("ee29"),Object(g["a"])(Ie,re,ce,!1,null,"2129f58c",null)),Oe=xe.exports;const je={resources:"resources",volume:"volume"};var Ne={name:"LearningPath",components:{Resources:St,TutorialsNavigation:oe,Volume:Oe},constants:{SectionKind:je},inject:{isTargetIDE:{default:!1}},props:{sections:{type:Array,required:!0,validator:t=>t.every(t=>Object.prototype.hasOwnProperty.call(je,t.kind))}},computed:{classes:({isTargetIDE:t})=>({ide:t}),partitionedSections:({sections:t})=>t.reduce(([t,e],n)=>n.kind===je.volume?[t.concat(n),e]:[t,e.concat(n)],[[],[]]),volumes:({partitionedSections:t})=>t[0],otherSections:({partitionedSections:t})=>t[1]},methods:{componentFor:({kind:t})=>({[je.resources]:St,[je.volume]:Oe}[t]),propsFor:({chapters:t,content:e,image:n,kind:s,name:a,tiles:i})=>({[je.resources]:{content:e,tiles:i},[je.volume]:{chapters:t,content:e,image:n,name:a}}[s])}},Ee=Ne,Me=(n("e929"),Object(g["a"])(Ee,I,x,!1,null,"48bfa85c",null)),$e=Me.exports,qe=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("NavBase",[n("NavTitleContainer",{attrs:{to:t.buildUrl(t.$route.path,t.$route.query)}},[n("template",{slot:"default"},[t._t("default")],2),n("template",{slot:"subhead"},[t._v("Tutorials")])],2),n("template",{slot:"menu-items"},[n("li",[n("TutorialsNavigation",{attrs:{sections:t.sections}})],1)])],2)},Be=[],Re=n("cbcf"),ze=n("653a");const Le={resources:"resources",volume:"volume"};var De={name:"Nav",constants:{SectionKind:Le},components:{NavTitleContainer:ze["a"],TutorialsNavigation:oe,NavBase:Re["a"]},props:{sections:{type:Array,require:!0}},methods:{buildUrl:ve["b"]}},Ge=De,Pe=(n("a8f9"),Object(g["a"])(Ge,qe,Be,!1,null,"07700f98",null)),Fe=Pe.exports;const He={hero:"hero",resources:"resources",volume:"volume"};var Ke={name:"TutorialsOverview",components:{Hero:k,LearningPath:$e,Nav:Fe},mixins:[u["a"]],constants:{SectionKind:He},inject:{isTargetIDE:{default:!1}},props:{metadata:{type:Object,default:()=>({})},references:{type:Object,default:()=>({})},sections:{type:Array,default:()=>[],validator:t=>t.every(t=>Object.prototype.hasOwnProperty.call(He,t.kind))}},computed:{pageTitle:({title:t})=>[t,"Tutorials"].join(" "),partitionedSections:({sections:t})=>t.reduce(([t,e],n)=>n.kind===He.hero?[t.concat(n),e]:[t,e.concat(n)],[[],[]]),heroSections:({partitionedSections:t})=>t[0],otherSections:({partitionedSections:t})=>t[1],heroSection:({heroSections:t})=>t[0],store:()=>l,title:({metadata:{category:t=""}})=>t},provide(){return{references:this.references,store:this.store}},created(){this.store.reset()}},Ue=Ke,Ze=(n("c8fd"),Object(g["a"])(Ue,r,c,!1,null,"0c0b1eea",null)),Je=Ze.exports,Qe=n("146e"),We={name:"TutorialsOverview",components:{Overview:Je},mixins:[o["a"],Qe["a"]],data(){return{topicData:null}},computed:{overviewProps:({topicData:{metadata:t,references:e,sections:n}})=>({metadata:t,references:e,sections:n}),topicKey:({$route:t,topicData:e})=>[t.path,e.identifier.interfaceLanguage].join()},beforeRouteEnter(t,e,n){Object(i["b"])(t,e,n).then(t=>n(e=>{e.topicData=t})).catch(n)},beforeRouteUpdate(t,e,n){Object(i["c"])(t,e)?Object(i["b"])(t,e,n).then(t=>{this.topicData=t,n()}).catch(n):n()},watch:{topicData(){this.$nextTick(()=>{this.newContentMounted()})}}},Xe=We,Ye=Object(g["a"])(Xe,s,a,!1,null,null,null);e["default"]=Ye.exports},f084:function(t,e,n){},f0ca:function(t,e,n){"use strict";n("8f86")},f31c:function(t,e,n){"use strict";n("9f56")},f974:function(t,e,n){"use strict";n("dcb9")},fb27:function(t,e,n){},fb73:function(t,e,n){}}]); \ No newline at end of file diff --git a/docs/swift-docc-render/theme-settings.json b/docs/swift-docc-render/theme-settings.json new file mode 100644 index 00000000..c26c16f7 --- /dev/null +++ b/docs/swift-docc-render/theme-settings.json @@ -0,0 +1,59 @@ +{ + "meta": {}, + "theme": { + "colors": { + "text": "", + "text-background": "", + "grid": "", + "article-background": "", + "generic-modal-background": "", + "secondary-label": "", + "header-text": "", + "not-found": { + "input-border": "" + }, + "runtime-preview": { + "text": "" + }, + "tabnav-item": { + "border-color": "" + }, + "svg-icon": { + "fill-light": "", + "fill-dark": "" + }, + "loading-placeholder": { + "background": "" + }, + "button": { + "text": "", + "light": { + "background": "", + "backgroundHover": "", + "backgroundActive": "" + }, + "dark": { + "background": "", + "backgroundHover": "", + "backgroundActive": "" + } + }, + "link": null + }, + "style": { + "button": { + "borderRadius": null + } + }, + "typography": { + "html-font": "" + } + }, + "features": { + "docs": { + "summary": { + "hide": false + } + } + } +} From e674819b7fbf3cd4a108900ff109a41ffe93b55d Mon Sep 17 00:00:00 2001 From: Andrew Chang Date: Tue, 4 Jan 2022 23:56:45 -1000 Subject: [PATCH 06/20] Add DocC archive to release pipieline --- .github/workflows/release.yml | 23 ++++++++++++++++--- .../Commands/BuildDocumentation.swift | 6 ++++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a729f351..e4431cc9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,7 +9,7 @@ on: - '*' jobs: - build: + build-signed-artifacts: name: Build Signed Artifacts runs-on: macOS-latest steps: @@ -40,10 +40,27 @@ jobs: - name: Upload CLI uses: actions/upload-artifact@v2 with: - name: Mockingbird + name: Mockingbird.zip path: .build/mockingbird/artifacts/Mockingbird.zip - name: Upload Framework uses: actions/upload-artifact@v2 with: - name: Mockingbird.xcframework + name: Mockingbird.xcframework.zip path: .build/mockingbird/artifacts/Mockingbird.xcframework.zip + + build-docs: + name: Build Docs + runs-on: macOS-latest + steps: + - uses: actions/checkout@v2 + - name: Set Up Project + run: Sources/MockingbirdAutomationCli/buildAndRun.sh configure load --overwrite + - name: Build + run: | + Sources/MockingbirdAutomationCli/buildAndRun.sh build docs \ + --archive .build/mockingbird/artifacts/Mockingbird.doccarchive.zip + - name: Upload + uses: actions/upload-artifact@v2 + with: + name: Mockingbird.doccarchive.zip + path: .build/mockingbird/artifacts/Mockingbird.doccarchive.zip diff --git a/Sources/MockingbirdAutomationCli/Commands/BuildDocumentation.swift b/Sources/MockingbirdAutomationCli/Commands/BuildDocumentation.swift index 1addd9f0..b7cc1471 100644 --- a/Sources/MockingbirdAutomationCli/Commands/BuildDocumentation.swift +++ b/Sources/MockingbirdAutomationCli/Commands/BuildDocumentation.swift @@ -36,10 +36,14 @@ extension Build { let bundlePath = Path(bundle) if let location = globalOptions.archiveLocation { + let outputPath = Path("./.build/mockingbird/artifacts/Mockingbird.doccarchive") + try outputPath.parent().mkpath() + try? outputPath.delete() try DocC.convert(bundle: bundlePath, symbolGraph: filteredSymbolGraphs, renderer: Path(renderer), - output: Path(location)) + output: outputPath) + try archive(artifacts: [("", outputPath)], destination: Path(location)) } else { try DocC.preview(bundle: bundlePath, symbolGraph: filteredSymbolGraphs, From 1f95ffef07bdba3873572ebd33ca5feab928a0fa Mon Sep 17 00:00:00 2001 From: Andrew Chang Date: Tue, 4 Jan 2022 11:34:45 -1000 Subject: [PATCH 07/20] Add initial DocC landing page and articles --- .../Articles/Carthage-QuickStart.md | 35 +++ .../Articles/CocoaPods-QuickStart.md | 38 ++++ .../Articles/SwiftPM-Package-QuickStart.md | 72 ++++++ .../Articles/SwiftPM-Project-QuickStart.md | 36 +++ docs/Mockingbird.docc/Collections/Internal.md | 68 ++++++ .../Collections/Matching-Arguments.md | 120 ++++++++++ docs/Mockingbird.docc/Collections/Mocking.md | 69 ++++++ .../Collections/ObjC-Stubbing-Operator.md | 41 ++++ .../Collections/Stubbing-Operator.md | 29 +++ docs/Mockingbird.docc/Collections/Stubbing.md | 214 ++++++++++++++++++ .../Collections/Verification.md | 150 ++++++++++++ docs/Mockingbird.docc/Mockingbird.md | 62 +++++ docs/Mockingbird.docc/Resources/hero@2x.png | Bin 0 -> 361602 bytes .../Resources/hero~dark@2x.png | Bin 0 -> 393877 bytes docs/Mockingbird.docc/Resources/logo@3x.png | Bin 0 -> 57444 bytes 15 files changed, 934 insertions(+) create mode 100644 docs/Mockingbird.docc/Articles/Carthage-QuickStart.md create mode 100644 docs/Mockingbird.docc/Articles/CocoaPods-QuickStart.md create mode 100644 docs/Mockingbird.docc/Articles/SwiftPM-Package-QuickStart.md create mode 100644 docs/Mockingbird.docc/Articles/SwiftPM-Project-QuickStart.md create mode 100644 docs/Mockingbird.docc/Collections/Internal.md create mode 100644 docs/Mockingbird.docc/Collections/Matching-Arguments.md create mode 100644 docs/Mockingbird.docc/Collections/Mocking.md create mode 100644 docs/Mockingbird.docc/Collections/ObjC-Stubbing-Operator.md create mode 100644 docs/Mockingbird.docc/Collections/Stubbing-Operator.md create mode 100644 docs/Mockingbird.docc/Collections/Stubbing.md create mode 100644 docs/Mockingbird.docc/Collections/Verification.md create mode 100644 docs/Mockingbird.docc/Mockingbird.md create mode 100644 docs/Mockingbird.docc/Resources/hero@2x.png create mode 100644 docs/Mockingbird.docc/Resources/hero~dark@2x.png create mode 100644 docs/Mockingbird.docc/Resources/logo@3x.png diff --git a/docs/Mockingbird.docc/Articles/Carthage-QuickStart.md b/docs/Mockingbird.docc/Articles/Carthage-QuickStart.md new file mode 100644 index 00000000..fd3ea69e --- /dev/null +++ b/docs/Mockingbird.docc/Articles/Carthage-QuickStart.md @@ -0,0 +1,35 @@ +# Carthage Quick Start Guide + +Integrate Mockingbird into a Carthage Xcode project. + +## Overview + +Add the framework to your `Cartfile`. + +``` +github "birdrides/mockingbird" ~> 0.19 +``` + +In your project directory, build the framework and [link it to your test target](https://github.com/birdrides/mockingbird/wiki/Linking-Test-Targets). + +```console +$ carthage update --use-xcframeworks +``` + +Finally, configure the test target to generate mocks for specific modules or libraries. + +```console +$ Carthage/Checkouts/mockingbird/mockingbird configure MyAppTests -- --targets MyApp MyLibrary1 MyLibrary2 +``` + +> Tip: The configurator adds a build phase which calls the generator before each test run. You can pass [additional arguments](#foobar) to the generator after the configurator double-dash (`--`). + +## Recommended + +- [Exclude generated files from source control](https://github.com/birdrides/mockingbird/wiki/Integration-Tips#source-control-exclusion) + +## Need Help? + +- [Join the #mockingbird Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) +- [Search the troubleshooting guide for common issues](https://github.com/birdrides/mockingbird/wiki/Troubleshooting) +- [Check out the Carthage example project](https://github.com/birdrides/mockingbird/tree/master/Examples/CarthageExample) diff --git a/docs/Mockingbird.docc/Articles/CocoaPods-QuickStart.md b/docs/Mockingbird.docc/Articles/CocoaPods-QuickStart.md new file mode 100644 index 00000000..673b6cbe --- /dev/null +++ b/docs/Mockingbird.docc/Articles/CocoaPods-QuickStart.md @@ -0,0 +1,38 @@ +# CocoaPods Quick Start Guide + +Integrate Mockingbird into a CocoaPods Xcode project. + +## Overview + +Add the framework to a test target in your `Podfile`, making sure to include the `use_frameworks!` option. + +```ruby +target 'MyAppTests' do + use_frameworks! + pod 'MockingbirdFramework', '~> 0.19' +end +``` + +In your project directory, initialize the pod. + +```console +$ pod install +``` + +Finally, configure the test target to generate mocks for specific modules or libraries. + +```console +$ Pods/MockingbirdFramework/mockingbird configure MyAppTests -- --targets MyApp MyLibrary1 MyLibrary2 +``` + +> Tip: The configurator adds a build phase which calls the generator before each test run. You can pass [additional arguments](#foobar) to the generator after the configurator double-dash (`--`). + +## Recommended + +- [Exclude generated files from source control](https://github.com/birdrides/mockingbird/wiki/Integration-Tips#source-control-exclusion) + +## Need Help? + +- [Join the #mockingbird Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) +- [Search the troubleshooting guide for common issues](https://github.com/birdrides/mockingbird/wiki/Troubleshooting) +- [Check out the CocoaPods example project](https://github.com/birdrides/mockingbird/tree/master/Examples/CocoaPodsExample) diff --git a/docs/Mockingbird.docc/Articles/SwiftPM-Package-QuickStart.md b/docs/Mockingbird.docc/Articles/SwiftPM-Package-QuickStart.md new file mode 100644 index 00000000..7f4c9b68 --- /dev/null +++ b/docs/Mockingbird.docc/Articles/SwiftPM-Package-QuickStart.md @@ -0,0 +1,72 @@ +# SwiftPM Quick Start Guide - Package Manifest + +Integrate Mockingbird into a SwiftPM package manifest. + +## Overview + +Add Mockingbird as a package and test target dependency in your `Package.swift` manifest. + +```swift +let package = Package( + name: "MyPackage", + dependencies: [ + .package(name: "Mockingbird", url: "https://github.com/birdrides/mockingbird.git", .upToNextMinor(from: "0.19.0")), + ], + targets: [ + .testTarget(name: "MyPackageTests", dependencies: ["Mockingbird"]), + ] +) +``` + +In your package directory, initialize the dependency. + +```console +$ swift package update Mockingbird +``` + +Next, create a Bash script called `gen-mocks.sh` in the same directory as your package manifest. Copy the example below, making sure to change the lines marked with `FIXME`. + +```bash +#!/bin/bash +set -eu +cd "$(dirname "$0")" +swift package describe --type json > project.json +.build/checkouts/mockingbird/mockingbird generate --project project.json \ + --output-dir Sources/MyPackageTests/MockingbirdMocks \ # FIXME: Where mocks should be generated. + --testbundle MyPackageTests \ # FIXME: Name of your test target. + --targets MyPackage MyLibrary1 MyLibrary2 # FIXME: Specific modules or libraries that should be mocked. +``` + +Ensure that the script runs and generates mock files. + +```console +$ chmod u+x gen-mocks.sh +$ ./gen-mocks.sh +Generated file to MockingbirdMocks/MyPackageTests-MyPackage.generated.swift +Generated file to MockingbirdMocks/MyPackageTests-MyLibrary1.generated.swift +Generated file to MockingbirdMocks/MyPackageTests-MyLibrary2.generated.swift +``` + +Finally, add each generated mock file to your test target sources. + +```swift +.testTarget( + name: "MyPackageTests", + dependencies: ["Mockingbird"], + sources: [ + "Tests/MyPackageTests", + "MockingbirdMocks/MyPackageTests-MyPackage.generated.swift", + "MockingbirdMocks/MyPackageTests-MyLibrary1.generated.swift", + "MockingbirdMocks/MyPackageTests-MyLibrary2.generated.swift", + ]), +``` + +## Recommended + +- [Exclude generated files from source control](https://github.com/birdrides/mockingbird/wiki/Integration-Tips#source-control-exclusion) + +## Need Help? + +- [Join the #mockingbird Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) +- [Search the troubleshooting guide for common issues](https://github.com/birdrides/mockingbird/wiki/Troubleshooting) +- [Check out the SPM Xcode project example](https://github.com/birdrides/mockingbird/tree/master/Examples/SPMPackageExample) diff --git a/docs/Mockingbird.docc/Articles/SwiftPM-Project-QuickStart.md b/docs/Mockingbird.docc/Articles/SwiftPM-Project-QuickStart.md new file mode 100644 index 00000000..5f141588 --- /dev/null +++ b/docs/Mockingbird.docc/Articles/SwiftPM-Project-QuickStart.md @@ -0,0 +1,36 @@ +# SwiftPM Quick Start Guide - Xcode Project + +Integrate Mockingbird into a SwiftPM Xcode project. + +## Overview + +Add the framework to your project: + +1. Navigate to **File › Add Packages…** and enter `https://github.com/birdrides/mockingbird` +2. Change **Dependency Rule** to “Up to Next Minor Version” and enter `0.19.0` +3. Click **Add Package** +4. Select your test target and click **Add Package** + +In your project directory, resolve the derived data path. This can take a few moments. + +```console +$ DERIVED_DATA="$(xcodebuild -showBuildSettings | sed -n 's|.*BUILD_ROOT = \(.*\)/Build/.*|\1|p' +``` + +Finally, configure the test target to generate mocks for specific modules or libraries. + +```console +$ "${DERIVED_DATA}/SourcePackages/checkouts/mockingbird/mockingbird" configure MyPackageTests -- --targets MyPackage MyLibrary1 MyLibrary2 +``` + +> Tip: The configurator adds a build phase which calls the generator before each test run. You can pass [additional arguments](#foobar) to the generator after the configurator double-dash (`--`). + +## Recommended + +- [Exclude generated files from source control](https://github.com/birdrides/mockingbird/wiki/Integration-Tips#source-control-exclusion) + +## Need Help? + +- [Join the #mockingbird Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) +- [Search the troubleshooting guide for common issues](https://github.com/birdrides/mockingbird/wiki/Troubleshooting) +- [Check out the SPM Xcode project example](https://github.com/birdrides/mockingbird/tree/master/Examples/SPMProjectExample) diff --git a/docs/Mockingbird.docc/Collections/Internal.md b/docs/Mockingbird.docc/Collections/Internal.md new file mode 100644 index 00000000..54e7605b --- /dev/null +++ b/docs/Mockingbird.docc/Collections/Internal.md @@ -0,0 +1,68 @@ +# Internal + +Abstract + +## Overview + +Overview + +## Topics + +### Mocking + +- ``Mock`` +- ``Mockable`` +- ``MockingContext`` +- ``StaticMock`` +- ``MockMetadata`` + +### Stubbing + +- ``StubbingContext`` +- ``StubbingManager`` +- ``StaticStubbingManager`` +- ``ForwardingContext`` +- ``ImplementationProvider`` + +### Verification + +- ``VerificationManager`` + +### Test API + +- ``swizzleTestFailer(_:)`` +- ``documentation/Mockingbird/mock(_:)-kz0y`` + +### Runtime + +- ``TestFailer`` +- ``Context`` +- ``ErrorBox`` +- ``SwiftErrorBox`` +- ``ProxyContext`` +- ``SourceLocation`` +- ``SelectorType`` +- ``CountMatcher`` +- ``ArgumentMatcher`` + +### Objective-C + +- ``DynamicStubbingManager`` +- ``ObjCErrorBox`` +- ``ObjCInvocation`` +- ``InvocationRecorder`` +- ``NilValue`` + +### Declarations + +- ``Declaration`` +- ``AnyDeclaration`` +- ``FunctionDeclaration`` +- ``ThrowingFunctionDeclaration`` +- ``VariableDeclaration`` +- ``PropertyGetterDeclaration`` +- ``PropertySetterDeclaration`` +- ``NonEscapingClosure`` +- ``SubscriptDeclaration`` +- ``SubscriptGetterDeclaration`` +- ``SubscriptSetterDeclaration`` diff --git a/docs/Mockingbird.docc/Collections/Matching-Arguments.md b/docs/Mockingbird.docc/Collections/Matching-Arguments.md new file mode 100644 index 00000000..984a39ed --- /dev/null +++ b/docs/Mockingbird.docc/Collections/Matching-Arguments.md @@ -0,0 +1,120 @@ +# Matching Arguments + +Stub and verify methods with parameters. + +## Overview + +Argument matchers allow you to stub or verify specific invocations of parameterized methods. + +### Match Exact Values + +Types that explicitly conform to `Equatable` work out of the box, such as `String`. + +```swift +given(bird.chirp(volume: 42)).willReturn(true) +print(bird.chirp(volume: 42)) // Prints "true" +verify(bird.chirp(volume: 42)).wasCalled() // Passes +``` + +Structs able to synthesize `Equatable` conformance must explicitly declare conformance to enable exact argument matching. + +```swift +struct Fruit: Equatable { + let size: Int +} + +bird.eat(Fruit(size: 42)) +verify(bird.eat(Fruit(size: 42))).wasCalled() +``` + +Non-equatable classes are compared by reference instead. + +```swift +class Fruit {} +let fruit = Fruit() + +bird.eat(fruit) +verify(bird.eat(fruit)).wasCalled() +``` + +### Match Wildcard Values and Non-Equatable Types + +Argument matchers allow for wildcard or custom matching of arguments that are not `Equatable`. + +```swift +any() // Any value +any(of: 1, 2, 3) // Any value in {1, 2, 3} +any(where: { $0 > 42 }) // Any number greater than 42 +notNil() // Any non-nil value +``` + +For methods overloaded by parameter type, you should help the compiler by specifying an explicit type in the matcher. + +```swift +any(Int.self) +any(Int.self, of: 1, 2, 3) +any(Int.self, where: { $0 > 42 }) +notNil(String?.self) +``` + +You can also match elements or keys within collection types. + +```swift +any(containing: 1, 2, 3) // Any collection with values {1, 2, 3} +any(keys: "a", "b", "c") // Any dictionary with keys {"a", "b", "c"} +any(count: atMost(42)) // Any collection with at most 42 elements +notEmpty() // Any non-empty collection +``` + +### Match Value Types in Objective-C + +You must specify an argument position when matching an Objective-C method with multiple value type parameters. Mockingbird will raise a test failure if the argument position is not inferrable and no explicit position was provided. + +```swift +@objc class Bird: NSObject { + @objc dynamic func chirp(volume: Int, duration: Int) {} +} + +verify(bird.chirp(volume: firstArg(any()), + duration: secondArg(any())).wasCalled() + +// Equivalent verbose syntax +verify(bird.chirp(volume: arg(any(), at: 1), + duration: arg(any(), at: 2)).wasCalled() +``` + +### Match Floating Point Values + +Mathematical operations on floating point numbers can cause loss of precision. Fuzzily match floating point arguments instead of using exact values to increase the robustness of tests. + +```swift +around(10.0, tolerance: 0.01) +``` + +## Topics + +### All Values + +- ``/documentation/Mockingbird/any(_:)-8gb6h`` +- ``/documentation/Mockingbird/notNil(_:)-352p4`` + +### Specific Values + +- ``/documentation/Mockingbird/any(_:where:)-7cboq`` +- ``/documentation/Mockingbird/any(_:of:)-29tpo`` +- ``/documentation/Mockingbird/any(_:of:)-huee`` +- ``around(_:tolerance:)`` + +### Collection Elements + +- ``/documentation/Mockingbird/any(_:containing:)-so7o`` +- ``/documentation/Mockingbird/any(_:count:)`` +- ``/documentation/Mockingbird/any(_:containing:)-64rt9`` +- ``/documentation/Mockingbird/any(_:keys:)`` +- ``/documentation/Mockingbird/notEmpty(_:)`` + +### Objective-C Objects + +- ``/documentation/Mockingbird/any(_:)-h08s`` +- ``/documentation/Mockingbird/any(_:where:)-2b6ht`` +- ``/documentation/Mockingbird/notNil(_:)-3dht5`` diff --git a/docs/Mockingbird.docc/Collections/Mocking.md b/docs/Mockingbird.docc/Collections/Mocking.md new file mode 100644 index 00000000..2d48e3a5 --- /dev/null +++ b/docs/Mockingbird.docc/Collections/Mocking.md @@ -0,0 +1,69 @@ +# Mocking + +Create test doubles of Swift and Objective-C types. + +## Overview + +Mocks can be passed as instances of the original type, recording any calls they receive for later verification. Note that mocks are strict by default, meaning that calls to unstubbed non-void methods will trigger a test failure. To create a relaxed or “loose” mock, use a [default value provider](#stub-as-a-relaxed-mock). + +```swift +// Swift types +let protocolMock = mock(MyProtocol.self) +let classMock = mock(MyClass.self).initialize(…) + +// Objective-C types +let protocolMock = mock(MyProtocol.self) +let classMock = mock(MyClass.self) +``` + +### Mock Swift Classes + +Swift class mocks rely on subclassing the original type which comes with a few [known limitations](https://github.com/birdrides/mockingbird/wiki/Known-Limitations). When creating a Swift class mock, you must initialize the instance by calling `initialize(…)` with appropriate values. + +```swift +class Tree { + init(height: Int) { assert(height > 0) } +} + +let tree = mock(Tree.self).initialize(height: 42) // Initialized +let tree = mock(Tree.self).initialize(height: 0) // Assertion failed (height ≤ 0) +``` + +### Store Mocks + +Generated Swift mock types are suffixed with `Mock`. Avoid coercing mocks into their original type as stubbing and verification will no longer work. + +```swift +// Good +let bird: BirdMock = mock(Bird.self) // Concrete type is `BirdMock` +let bird = mock(Bird.self) // Inferred type is `BirdMock` + +// Avoid +let bird: Bird = mock(Bird.self) // Type is coerced into `Bird` +``` + +### Reset Mocks + +You can reset mocks and clear specific metadata during test runs. However, resetting mocks isn’t usually necessary in well-constructed tests. + +```swift +reset(bird) // Reset everything +clearStubs(on: bird) // Only remove stubs +clearInvocations(on: bird) // Only remove recorded invocations +``` + +## Topics + +### Creating a Mock + +- ``/documentation/Mockingbird/mock(_:)-90c7z`` + +### Resetting State + +- ``/documentation/Mockingbird/reset(_:)-2rnp3`` +- ``/documentation/Mockingbird/reset(_:)-1qqcc`` +- ``/documentation/Mockingbird/clearInvocations(on:)-9e90o`` +- ``/documentation/Mockingbird/clearInvocations(on:)-1wkme`` +- ``/documentation/Mockingbird/clearStubs(on:)-3qkw6`` +- ``/documentation/Mockingbird/clearStubs(on:)-23b4v`` +- ``clearDefaultValues(on:)`` diff --git a/docs/Mockingbird.docc/Collections/ObjC-Stubbing-Operator.md b/docs/Mockingbird.docc/Collections/ObjC-Stubbing-Operator.md new file mode 100644 index 00000000..860590ab --- /dev/null +++ b/docs/Mockingbird.docc/Collections/ObjC-Stubbing-Operator.md @@ -0,0 +1,41 @@ +# Objective-C Stubbing Operator + +This is an abstract + +## Overview + +This is the overview section + +## Topics + +### Returning a Value + +- ``/documentation/Mockingbird/~_(_:_:)-7f5gz`` + +### Executing a Closure + +- ``/documentation/Mockingbird/~_(_:_:)-8rgm3`` +- ``/documentation/Mockingbird/~_(_:_:)-1t4yq`` +- ``/documentation/Mockingbird/~_(_:_:)-1ol6h`` +- ``/documentation/Mockingbird/~_(_:_:)-88uox`` +- ``/documentation/Mockingbird/~_(_:_:)-71d7c`` +- ``/documentation/Mockingbird/~_(_:_:)-4mqwi`` +- ``/documentation/Mockingbird/~_(_:_:)-8k0ma`` +- ``/documentation/Mockingbird/~_(_:_:)-88qzi`` +- ``/documentation/Mockingbird/~_(_:_:)-9bygs`` +- ``/documentation/Mockingbird/~_(_:_:)-5o58m`` +- ``/documentation/Mockingbird/~_(_:_:)-8hx1`` + +### Executing a Throwing Closure + +- ``/documentation/Mockingbird/~_(_:_:)-tdxw`` +- ``/documentation/Mockingbird/~_(_:_:)-59p5u`` +- ``/documentation/Mockingbird/~_(_:_:)-4xrjc`` +- ``/documentation/Mockingbird/~_(_:_:)-45p9m`` +- ``/documentation/Mockingbird/~_(_:_:)-74evi`` +- ``/documentation/Mockingbird/~_(_:_:)-5fiu3`` +- ``/documentation/Mockingbird/~_(_:_:)-90px6`` +- ``/documentation/Mockingbird/~_(_:_:)-9wknl`` +- ``/documentation/Mockingbird/~_(_:_:)-843k0`` +- ``/documentation/Mockingbird/~_(_:_:)-n6po`` +- ``/documentation/Mockingbird/~_(_:_:)-246oz`` diff --git a/docs/Mockingbird.docc/Collections/Stubbing-Operator.md b/docs/Mockingbird.docc/Collections/Stubbing-Operator.md new file mode 100644 index 00000000..1bb70a68 --- /dev/null +++ b/docs/Mockingbird.docc/Collections/Stubbing-Operator.md @@ -0,0 +1,29 @@ +# Stubbing Operator + +Abstract + +## Overview + +Overview + +## Topics + +### Returning a Value + +- ``/documentation/Mockingbird/~_(_:_:)-6m8gw`` + +### Executing a Closure + +- ``/documentation/Mockingbird/~_(_:_:)-3eb81`` + +### Implementation Provider + +- ``/documentation/Mockingbird/~_(_:_:)-6yox8`` + +### Forwarding to a Target + +- ``/documentation/Mockingbird/~_(_:_:)-3to0j`` + +### Objective-C + +- diff --git a/docs/Mockingbird.docc/Collections/Stubbing.md b/docs/Mockingbird.docc/Collections/Stubbing.md new file mode 100644 index 00000000..01ef8211 --- /dev/null +++ b/docs/Mockingbird.docc/Collections/Stubbing.md @@ -0,0 +1,214 @@ +# Stubbing + +Configure mocks to return a value or perform an operation. + +## Overview + +Stubbing allows you to define custom behavior for mocks to perform. + +```swift +given(bird.name).willReturn("Ryan") // Return a value +given(bird.chirp()).willThrow(BirdError()) // Throw an error +given(bird.chirp(volume: any())).will { volume in // Call a closure + return volume < 42 +} +``` + +This is equivalent to the shorthand syntax using the stubbing operator `~>`. + +```swift +given(bird.name) ~> "Ryan" // Return a value +given(bird.chirp()) ~> { throw BirdError() } // Throw an error +given(bird.chirp(volume: any())) ~> { volume in // Call a closure + return volume < 42 +} +``` + +### Stub Methods with Parameters + +[Match argument values](#4-argument-matching) to stub parameterized methods. Stubs added later have a higher precedence, so add stubs with specific matchers last. + +```swift +given(bird.chirp(volume: any())).willReturn(true) // Any volume +given(bird.chirp(volume: notNil())).willReturn(true) // Any non-nil volume +given(bird.chirp(volume: 10)).willReturn(true) // Volume = 10 +``` + +### Stub Properties + +Properties can have stubs on both their getters and setters. + +```swift +given(bird.name).willReturn("Ryan") +given(bird.name = any()).will { (name: String) in + print("Hello \(name)") +} + +print(bird.name) // Prints "Ryan" +bird.name = "Sterling" // Prints "Hello Sterling" +``` + +This is equivalent to using the synthesized getter and setter methods. + +```swift +given(bird.getName()).willReturn("Ryan") +given(bird.setName(any())).will { (name: String) in + print("Hello \(name)") +} + +print(bird.name) // Prints "Ryan" +bird.name = "Sterling" // Prints "Hello Sterling" +``` + +Readwrite properties can be stubbed to automatically save and return values. + +```swift +given(bird.name).willReturn(lastSetValue(initial: "")) +print(bird.name) // Prints "" +bird.name = "Ryan" +print(bird.name) // Prints "Ryan" +``` + +### Stub as a Relaxed Mock + +Use a `ValueProvider` to create a relaxed mock that returns default values for unstubbed methods. Mockingbird provides preset value providers which are guaranteed to be backwards compatible, such as `.standardProvider`. + +```swift +let bird = mock(Bird.self) +bird.useDefaultValues(from: .standardProvider) +print(bird.name) // Prints "" +``` + +You can create custom value providers by registering values for specific types. + +```swift +var valueProvider = ValueProvider() +valueProvider.register("Ryan", for: String.self) +bird.useDefaultValues(from: valueProvider) +print(bird.name) // Prints "Ryan" +``` + +Values from concrete stubs always have a higher precedence than default values. + +```swift +given(bird.name).willReturn("Ryan") +print(bird.name) // Prints "Ryan" + +bird.useDefaultValues(from: .standardProvider) +print(bird.name) // Prints "Ryan" +``` + +Provide wildcard instances for generic types by conforming the base type to `Providable` and registering the type. + +```swift +extension Array: Providable { + public static func createInstance() -> Self? { + return Array() + } +} + +// Provide an empty array for all specialized `Array` types +valueProvider.registerType(Array.self) +``` + +### Stub as a Partial Mock + +Partial mocks can be created by forwarding all calls to a specific object. Forwarding targets are strongly referenced and receive invocations until removed with `clearStubs`. + +```swift +class Crow: Bird { + let name: String + init(name: String) { self.name = name } +} + +let bird = mock(Bird.self) +bird.forwardCalls(to: Crow(name: "Ryan")) +print(bird.name) // Prints "Ryan" +``` + +Swift class mocks can also forward invocations to its underlying superclass. + +```swift +let tree = mock(Tree.self).initialize(height: 42) +tree.forwardCallsToSuper() +print(tree.height) // Prints "42" +``` + +For more granular stubbing, it’s possible to scope both object and superclass forwarding targets to a specific declaration. + +```swift +given(bird.name).willForward(to: Crow(name: "Ryan")) // Object target +given(tree.height).willForwardToSuper() // Superclass target +``` + +Concrete stubs always have a higher priority than forwarding targets, regardless of the order +they were added. + +```swift +given(bird.name).willReturn("Ryan") +given(bird.name).willForward(to: Crow(name: "Sterling")) +print(bird.name) // Prints "Ryan" +``` + +### Stub a Sequence of Values + +Methods that return a different value each time can be stubbed with a sequence of values. The last value will be used for all subsequent invocations. + +```swift +given(bird.name).willReturn(sequence(of: "Ryan", "Sterling")) +print(bird.name) // Prints "Ryan" +print(bird.name) // Prints "Sterling" +print(bird.name) // Prints "Sterling" +``` + +It’s also possible to stub a sequence of arbitrary behaviors. + +```swift +given(bird.name) + .willReturn("Ryan") + .willReturn("Sterling") + .will { return Bool.random() ? "Ryan" : "Sterling" } +``` + +## Topics + +### Creating a Stub + +- ``/documentation/Mockingbird/given(_:)-8yr0t`` +- ``/documentation/Mockingbird/given(_:)-88nm9`` + +### Forwarding Invocations + +- ``forward(to:)`` +- ``forwardToSuper()`` + +### Readwrite Properties + +- ``lastSetValue(initial:)`` + +### Sequential Stubbing + +- ``/documentation/Mockingbird/sequence(of:)-7dfhm`` +- ``/documentation/Mockingbird/sequence(of:)-2t65o`` +- ``/documentation/Mockingbird/loopingSequence(of:)-3j25v`` +- ``/documentation/Mockingbird/loopingSequence(of:)-3ew2v`` +- ``/documentation/Mockingbird/finiteSequence(of:)-73crl`` +- ``/documentation/Mockingbird/finiteSequence(of:)-7srgo`` + +### Objective-C Argument Position + +- ``firstArg(_:)`` +- ``secondArg(_:)`` +- ``thirdArg(_:)`` +- ``fourthArg(_:)`` +- ``fifthArg(_:)`` +- ``arg(_:at:)`` + +### Default Value Providing + +- ``Providable`` +- ``ValueProvider`` + +### Operator + +- diff --git a/docs/Mockingbird.docc/Collections/Verification.md b/docs/Mockingbird.docc/Collections/Verification.md new file mode 100644 index 00000000..692e3706 --- /dev/null +++ b/docs/Mockingbird.docc/Collections/Verification.md @@ -0,0 +1,150 @@ +# Verification + +Check whether a mocked method or property was called. + +## Overview + +Verification lets you assert that a mock received a particular invocation during its lifetime. + +```swift +verify(bird.fly()).wasCalled() +``` + +Verifying doesn’t remove recorded invocations, so it’s safe to call `verify` multiple times. + +```swift +verify(bird.fly()).wasCalled() // If this succeeds... +verify(bird.fly()).wasCalled() // ...this also succeeds +``` + +### Verify Methods with Parameters + +[Match argument values](#4-argument-matching) to verify methods with parameters. + +```swift +verify(bird.chirp(volume: any())).wasCalled() // Any volume +verify(bird.chirp(volume: notNil())).wasCalled() // Any non-nil volume +verify(bird.chirp(volume: 10)).wasCalled() // Volume = 10 +``` + +### Verify Properties + +Verify property invocations using their getter and setter methods. + +```swift +verify(bird.name).wasCalled() +verify(bird.name = any()).wasCalled() +``` + +### Verify the Number of Invocations + +It’s possible to verify that an invocation was called a specific number of times with a count matcher. + +```swift +verify(bird.fly()).wasNeverCalled() // n = 0 +verify(bird.fly()).wasCalled(exactly(10)) // n = 10 +verify(bird.fly()).wasCalled(atLeast(10)) // n ≥ 10 +verify(bird.fly()).wasCalled(atMost(10)) // n ≤ 10 +verify(bird.fly()).wasCalled(between(5...10)) // 5 ≤ n ≤ 10 +``` + +Count matchers also support chaining and negation using logical operators. + +```swift +verify(bird.fly()).wasCalled(not(exactly(10))) // n ≠ 10 +verify(bird.fly()).wasCalled(exactly(10).or(atMost(5))) // n = 10 || n ≤ 5 +``` + +### Capture Argument Values + +An argument captor extracts received argument values which can be used in other parts of the test. + +```swift +let bird = mock(Bird.self) +bird.name = "Ryan" + +let nameCaptor = ArgumentCaptor() +verify(bird.name = nameCaptor.any()).wasCalled() + +print(nameCaptor.value) // Prints "Ryan" +``` + +### Verify Invocation Order + +Enforce the relative order of invocations with an `inOrder` verification block. + +```swift +// Verify that `canFly` was called before `fly` +inOrder { + verify(bird.canFly).wasCalled() + verify(bird.fly()).wasCalled() +} +``` + +Pass options to `inOrder` verification blocks for stricter checks with additional invariants. + +```swift +inOrder(with: .noInvocationsAfter) { + verify(bird.canFly).wasCalled() + verify(bird.fly()).wasCalled() +} +``` + +### Verify Asynchronous Calls + +Mocked methods that are invoked asynchronously can be verified using an `eventually` block which returns an `XCTestExpectation`. + +```swift +DispatchQueue.main.async { + guard bird.canFly else { return } + bird.fly() +} + +let expectation = + eventually { + verify(bird.canFly).wasCalled() + verify(bird.fly()).wasCalled() + } + +wait(for: [expectation], timeout: 1.0) +``` + +### Verify Overloaded Methods + +Use the `returning` modifier to disambiguate methods overloaded by return type. Methods overloaded by parameter types do not require disambiguation. + +```swift +protocol Bird { + func getMessage() -> T // Overloaded generically + func getMessage() -> String // Overloaded explicitly + func getMessage() -> Data +} + +verify(bird.getMessage()).returning(String.self).wasCalled() +``` + +## Topics + +### Verifying Invocations + +- ``/documentation/Mockingbird/verify(_:file:line:)-4nziv`` +- ``/documentation/Mockingbird/verify(_:file:line:)-tojb`` + +### Matching Invocation Counts + +- ``never`` +- ``once`` +- ``twice`` +- ``exactly(_:)`` +- ``atLeast(_:)`` +- ``atMost(_:)`` +- ``between(_:)`` +- ``/documentation/Mockingbird/not(_:)-7i8si`` +- ``/documentation/Mockingbird/not(_:)-8uq76`` + +### Advanced + +- ``ArgumentCaptor`` +- ``inOrder(with:file:line:_:)`` +- ``OrderedVerificationOptions`` +- ``eventually(_:_:)`` diff --git a/docs/Mockingbird.docc/Mockingbird.md b/docs/Mockingbird.docc/Mockingbird.md new file mode 100644 index 00000000..bc4b4081 --- /dev/null +++ b/docs/Mockingbird.docc/Mockingbird.md @@ -0,0 +1,62 @@ +# ``Mockingbird`` + +A *Swifty* mocking framework for Swift and Objective-C. + +## Overview + +Mockingbird makes it easy to mock, stub, and verify objects in Swift unit tests. You can test both Swift and Objective-C without writing any boilerplate or modifying production code. + +![Mockingbird hero](hero) + +Mockingbird’s syntax takes inspiration from (OC)Mockito but was designed to be “Swifty” in terms of type safety, expressiveness, and readability. In addition to the basics, it provides functionality for advanced features such as creating partial mocks, verifying the order of calls, and testing asynchronous code. + +Conceptually, Mockingbird uses codegen to statically mock Swift types at compile time and `NSProxy` to dynamically mock Objective-C types at run time. The approach is similar to other mocking frameworks that augment Swift’s limited introspection capabilities through codegen, but there are a few key differences: + +- Generating mocks takes seconds instead of minutes on large Swift codebases. +- Stubbing and verification failures appear inline and don’t abort the entire test run. +- Production code is kept separate from tests and never modified with annotations. +- Xcode projects can be used as the source of truth to automatically determine source files. + +See a detailed [feature comparison table](https://github.com/birdrides/mockingbird/wiki/Alternatives-to-Mockingbird#feature-comparison) and [known limitations](https://github.com/birdrides/mockingbird/wiki/Known-Limitations). + +### Example + +```swift +// Mocking +let bird = mock(Bird.self) + +// Stubbing +given(bird.canFly).willReturn(true) + +// Verification +verify(bird.fly()).wasCalled() +``` + +### Who Uses Mockingbird? + +Mockingbird powers thousands of tests at companies including [Meta](https://meta.com), [Amazon](https://amazon.com), [Twilio](https://twilio.com), [Blockchain](https://blockchain.com), and [Bird](https://bird.co). Using Mockingbird to improve your testing workflow? We’d love to hear your feedback on the [#mockingbird Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw). + +### Alternatives + +- [Cuckoo](https://github.com/Brightify/Cuckoo) +- [SwiftyMocky](https://github.com/MakeAWishFoundation/SwiftyMocky) + +## Topics + +### Getting Started + +- +- +- +- + +### Usage + +- +- +- +- + +### Advanced + +- diff --git a/docs/Mockingbird.docc/Resources/hero@2x.png b/docs/Mockingbird.docc/Resources/hero@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..30bb48f26f356daced496e8cbcd2102260b529b4 GIT binary patch literal 361602 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

pYd9JzHU1R61jvFP#Zb7QV0-}FA}uUDSPg&W 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%0D>6#o)i!53U2ADE2#Z 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%0DQfPij|kk%yy;Bi{hBKioay_noY_;^Vvs@a(&cO$ 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

1Cwi0J+e5KT+r_ZrP@Zjj2fYAodZ)$608hB< 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%0D-c@ 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 literal 0 HcmV?d00001 diff --git a/docs/Mockingbird.docc/Resources/hero~dark@2x.png b/docs/Mockingbird.docc/Resources/hero~dark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e949cd3df117fc3818dfb905295c8b200eacd274 GIT binary patch literal 393877 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

x1PsdvWcH^;D=j%8F+Y6#M*4f$7*q@O;A@pfYzc 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 literal 0 HcmV?d00001 diff --git a/docs/Mockingbird.docc/Resources/logo@3x.png b/docs/Mockingbird.docc/Resources/logo@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..a37aab0e0af6a0661333f2eb051e1ccac2041893 GIT binary patch literal 57444 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 z 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 z Date: Tue, 4 Jan 2022 22:18:41 -1000 Subject: [PATCH 08/20] Move DocC catalog into Sources --- .../Articles/Carthage-QuickStart.md | 0 .../Articles/CocoaPods-QuickStart.md | 0 .../Articles/SwiftPM-Package-QuickStart.md | 0 .../Articles/SwiftPM-Project-QuickStart.md | 0 .../Mockingbird.docc/Collections/Internal.md | 0 .../Collections/Matching-Arguments.md | 0 .../Mockingbird.docc/Collections/Mocking.md | 0 .../Collections/ObjC-Stubbing-Operator.md | 0 .../Collections/Stubbing-Operator.md | 0 .../Mockingbird.docc/Collections/Stubbing.md | 0 .../Mockingbird.docc/Collections/Verification.md | 0 {docs => Sources}/Mockingbird.docc/Info.plist | 0 {docs => Sources}/Mockingbird.docc/Mockingbird.md | 0 .../Renderer}/css/documentation-topic.de084985.css | 0 ...tion-topic~topic~tutorials-overview.cb5e3789.css | 0 .../Renderer}/css/index.a111dc80.css | 0 .../Renderer}/css/topic.fe88ced3.css | 0 .../Renderer}/css/tutorials-overview.8754eb09.css | 0 .../Mockingbird.docc/Renderer}/favicon.ico | Bin .../Mockingbird.docc/Renderer}/favicon.svg | 0 .../Renderer}/img/added-icon.d6f7e47d.svg | 0 .../Renderer}/img/deprecated-icon.015b4f17.svg | 0 .../Renderer}/img/modified-icon.f496e73d.svg | 0 .../Mockingbird.docc/Renderer}/index-template.html | 0 .../Mockingbird.docc/Renderer}/index.html | 0 .../Renderer}/js/chunk-2d0d3105.cd72cc8e.js | 0 .../Renderer}/js/chunk-vendors.00bf82af.js | 0 .../Renderer}/js/documentation-topic.b1a26a74.js | 0 ...ation-topic~topic~tutorials-overview.c5a22800.js | 0 .../Renderer}/js/highlight-js-bash.1b52852f.js | 0 .../Renderer}/js/highlight-js-c.d1db3f17.js | 0 .../Renderer}/js/highlight-js-cpp.eaddddbe.js | 0 .../Renderer}/js/highlight-js-css.75eab1fe.js | 0 .../js/highlight-js-custom-markdown.7cffc4b3.js | 0 .../js/highlight-js-custom-swift.886dc05e.js | 0 .../Renderer}/js/highlight-js-diff.62d66733.js | 0 .../Renderer}/js/highlight-js-http.163e45b6.js | 0 .../Renderer}/js/highlight-js-java.8326d9d8.js | 0 .../js/highlight-js-javascript.acb8a8eb.js | 0 .../Renderer}/js/highlight-js-json.471128d2.js | 0 .../Renderer}/js/highlight-js-llvm.6100b125.js | 0 .../Renderer}/js/highlight-js-markdown.90077643.js | 0 .../js/highlight-js-objectivec.bcdf5156.js | 0 .../Renderer}/js/highlight-js-perl.757d7b6f.js | 0 .../Renderer}/js/highlight-js-php.cc8d6c27.js | 0 .../Renderer}/js/highlight-js-python.c214ed92.js | 0 .../Renderer}/js/highlight-js-ruby.f889d392.js | 0 .../Renderer}/js/highlight-js-scss.62ee18da.js | 0 .../Renderer}/js/highlight-js-shell.dd7f411f.js | 0 .../Renderer}/js/highlight-js-swift.84f3e88c.js | 0 .../Renderer}/js/highlight-js-xml.9c3688c7.js | 0 .../Mockingbird.docc/Renderer}/js/index.891036dc.js | 0 .../Mockingbird.docc/Renderer}/js/topic.c4c8f983.js | 0 .../Renderer}/js/tutorials-overview.0dfedc70.js | 0 .../Mockingbird.docc/Renderer}/theme-settings.json | 0 .../Mockingbird.docc/Resources/hero@2x.png | Bin .../Mockingbird.docc/Resources/hero~dark@2x.png | Bin .../Mockingbird.docc/Resources/logo@3x.png | Bin 58 files changed, 0 insertions(+), 0 deletions(-) rename {docs => Sources}/Mockingbird.docc/Articles/Carthage-QuickStart.md (100%) rename {docs => Sources}/Mockingbird.docc/Articles/CocoaPods-QuickStart.md (100%) rename {docs => Sources}/Mockingbird.docc/Articles/SwiftPM-Package-QuickStart.md (100%) rename {docs => Sources}/Mockingbird.docc/Articles/SwiftPM-Project-QuickStart.md (100%) rename {docs => Sources}/Mockingbird.docc/Collections/Internal.md (100%) rename {docs => Sources}/Mockingbird.docc/Collections/Matching-Arguments.md (100%) rename {docs => Sources}/Mockingbird.docc/Collections/Mocking.md (100%) rename {docs => Sources}/Mockingbird.docc/Collections/ObjC-Stubbing-Operator.md (100%) rename {docs => Sources}/Mockingbird.docc/Collections/Stubbing-Operator.md (100%) rename {docs => Sources}/Mockingbird.docc/Collections/Stubbing.md (100%) rename {docs => Sources}/Mockingbird.docc/Collections/Verification.md (100%) rename {docs => Sources}/Mockingbird.docc/Info.plist (100%) rename {docs => Sources}/Mockingbird.docc/Mockingbird.md (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/css/documentation-topic.de084985.css (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/css/documentation-topic~topic~tutorials-overview.cb5e3789.css (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/css/index.a111dc80.css (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/css/topic.fe88ced3.css (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/css/tutorials-overview.8754eb09.css (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/favicon.ico (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/favicon.svg (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/img/added-icon.d6f7e47d.svg (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/img/deprecated-icon.015b4f17.svg (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/img/modified-icon.f496e73d.svg (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/index-template.html (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/index.html (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/chunk-2d0d3105.cd72cc8e.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/chunk-vendors.00bf82af.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/documentation-topic.b1a26a74.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/documentation-topic~topic~tutorials-overview.c5a22800.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/highlight-js-bash.1b52852f.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/highlight-js-c.d1db3f17.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/highlight-js-cpp.eaddddbe.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/highlight-js-css.75eab1fe.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/highlight-js-custom-markdown.7cffc4b3.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/highlight-js-custom-swift.886dc05e.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/highlight-js-diff.62d66733.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/highlight-js-http.163e45b6.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/highlight-js-java.8326d9d8.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/highlight-js-javascript.acb8a8eb.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/highlight-js-json.471128d2.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/highlight-js-llvm.6100b125.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/highlight-js-markdown.90077643.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/highlight-js-objectivec.bcdf5156.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/highlight-js-perl.757d7b6f.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/highlight-js-php.cc8d6c27.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/highlight-js-python.c214ed92.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/highlight-js-ruby.f889d392.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/highlight-js-scss.62ee18da.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/highlight-js-shell.dd7f411f.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/highlight-js-swift.84f3e88c.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/highlight-js-xml.9c3688c7.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/index.891036dc.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/topic.c4c8f983.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/js/tutorials-overview.0dfedc70.js (100%) rename {docs/swift-docc-render => Sources/Mockingbird.docc/Renderer}/theme-settings.json (100%) rename {docs => Sources}/Mockingbird.docc/Resources/hero@2x.png (100%) rename {docs => Sources}/Mockingbird.docc/Resources/hero~dark@2x.png (100%) rename {docs => Sources}/Mockingbird.docc/Resources/logo@3x.png (100%) diff --git a/docs/Mockingbird.docc/Articles/Carthage-QuickStart.md b/Sources/Mockingbird.docc/Articles/Carthage-QuickStart.md similarity index 100% rename from docs/Mockingbird.docc/Articles/Carthage-QuickStart.md rename to Sources/Mockingbird.docc/Articles/Carthage-QuickStart.md diff --git a/docs/Mockingbird.docc/Articles/CocoaPods-QuickStart.md b/Sources/Mockingbird.docc/Articles/CocoaPods-QuickStart.md similarity index 100% rename from docs/Mockingbird.docc/Articles/CocoaPods-QuickStart.md rename to Sources/Mockingbird.docc/Articles/CocoaPods-QuickStart.md diff --git a/docs/Mockingbird.docc/Articles/SwiftPM-Package-QuickStart.md b/Sources/Mockingbird.docc/Articles/SwiftPM-Package-QuickStart.md similarity index 100% rename from docs/Mockingbird.docc/Articles/SwiftPM-Package-QuickStart.md rename to Sources/Mockingbird.docc/Articles/SwiftPM-Package-QuickStart.md diff --git a/docs/Mockingbird.docc/Articles/SwiftPM-Project-QuickStart.md b/Sources/Mockingbird.docc/Articles/SwiftPM-Project-QuickStart.md similarity index 100% rename from docs/Mockingbird.docc/Articles/SwiftPM-Project-QuickStart.md rename to Sources/Mockingbird.docc/Articles/SwiftPM-Project-QuickStart.md diff --git a/docs/Mockingbird.docc/Collections/Internal.md b/Sources/Mockingbird.docc/Collections/Internal.md similarity index 100% rename from docs/Mockingbird.docc/Collections/Internal.md rename to Sources/Mockingbird.docc/Collections/Internal.md diff --git a/docs/Mockingbird.docc/Collections/Matching-Arguments.md b/Sources/Mockingbird.docc/Collections/Matching-Arguments.md similarity index 100% rename from docs/Mockingbird.docc/Collections/Matching-Arguments.md rename to Sources/Mockingbird.docc/Collections/Matching-Arguments.md diff --git a/docs/Mockingbird.docc/Collections/Mocking.md b/Sources/Mockingbird.docc/Collections/Mocking.md similarity index 100% rename from docs/Mockingbird.docc/Collections/Mocking.md rename to Sources/Mockingbird.docc/Collections/Mocking.md diff --git a/docs/Mockingbird.docc/Collections/ObjC-Stubbing-Operator.md b/Sources/Mockingbird.docc/Collections/ObjC-Stubbing-Operator.md similarity index 100% rename from docs/Mockingbird.docc/Collections/ObjC-Stubbing-Operator.md rename to Sources/Mockingbird.docc/Collections/ObjC-Stubbing-Operator.md diff --git a/docs/Mockingbird.docc/Collections/Stubbing-Operator.md b/Sources/Mockingbird.docc/Collections/Stubbing-Operator.md similarity index 100% rename from docs/Mockingbird.docc/Collections/Stubbing-Operator.md rename to Sources/Mockingbird.docc/Collections/Stubbing-Operator.md diff --git a/docs/Mockingbird.docc/Collections/Stubbing.md b/Sources/Mockingbird.docc/Collections/Stubbing.md similarity index 100% rename from docs/Mockingbird.docc/Collections/Stubbing.md rename to Sources/Mockingbird.docc/Collections/Stubbing.md diff --git a/docs/Mockingbird.docc/Collections/Verification.md b/Sources/Mockingbird.docc/Collections/Verification.md similarity index 100% rename from docs/Mockingbird.docc/Collections/Verification.md rename to Sources/Mockingbird.docc/Collections/Verification.md diff --git a/docs/Mockingbird.docc/Info.plist b/Sources/Mockingbird.docc/Info.plist similarity index 100% rename from docs/Mockingbird.docc/Info.plist rename to Sources/Mockingbird.docc/Info.plist diff --git a/docs/Mockingbird.docc/Mockingbird.md b/Sources/Mockingbird.docc/Mockingbird.md similarity index 100% rename from docs/Mockingbird.docc/Mockingbird.md rename to Sources/Mockingbird.docc/Mockingbird.md diff --git a/docs/swift-docc-render/css/documentation-topic.de084985.css b/Sources/Mockingbird.docc/Renderer/css/documentation-topic.de084985.css similarity index 100% rename from docs/swift-docc-render/css/documentation-topic.de084985.css rename to Sources/Mockingbird.docc/Renderer/css/documentation-topic.de084985.css diff --git a/docs/swift-docc-render/css/documentation-topic~topic~tutorials-overview.cb5e3789.css b/Sources/Mockingbird.docc/Renderer/css/documentation-topic~topic~tutorials-overview.cb5e3789.css similarity index 100% rename from docs/swift-docc-render/css/documentation-topic~topic~tutorials-overview.cb5e3789.css rename to Sources/Mockingbird.docc/Renderer/css/documentation-topic~topic~tutorials-overview.cb5e3789.css diff --git a/docs/swift-docc-render/css/index.a111dc80.css b/Sources/Mockingbird.docc/Renderer/css/index.a111dc80.css similarity index 100% rename from docs/swift-docc-render/css/index.a111dc80.css rename to Sources/Mockingbird.docc/Renderer/css/index.a111dc80.css diff --git a/docs/swift-docc-render/css/topic.fe88ced3.css b/Sources/Mockingbird.docc/Renderer/css/topic.fe88ced3.css similarity index 100% rename from docs/swift-docc-render/css/topic.fe88ced3.css rename to Sources/Mockingbird.docc/Renderer/css/topic.fe88ced3.css diff --git a/docs/swift-docc-render/css/tutorials-overview.8754eb09.css b/Sources/Mockingbird.docc/Renderer/css/tutorials-overview.8754eb09.css similarity index 100% rename from docs/swift-docc-render/css/tutorials-overview.8754eb09.css rename to Sources/Mockingbird.docc/Renderer/css/tutorials-overview.8754eb09.css diff --git a/docs/swift-docc-render/favicon.ico b/Sources/Mockingbird.docc/Renderer/favicon.ico similarity index 100% rename from docs/swift-docc-render/favicon.ico rename to Sources/Mockingbird.docc/Renderer/favicon.ico diff --git a/docs/swift-docc-render/favicon.svg b/Sources/Mockingbird.docc/Renderer/favicon.svg similarity index 100% rename from docs/swift-docc-render/favicon.svg rename to Sources/Mockingbird.docc/Renderer/favicon.svg diff --git a/docs/swift-docc-render/img/added-icon.d6f7e47d.svg b/Sources/Mockingbird.docc/Renderer/img/added-icon.d6f7e47d.svg similarity index 100% rename from docs/swift-docc-render/img/added-icon.d6f7e47d.svg rename to Sources/Mockingbird.docc/Renderer/img/added-icon.d6f7e47d.svg diff --git a/docs/swift-docc-render/img/deprecated-icon.015b4f17.svg b/Sources/Mockingbird.docc/Renderer/img/deprecated-icon.015b4f17.svg similarity index 100% rename from docs/swift-docc-render/img/deprecated-icon.015b4f17.svg rename to Sources/Mockingbird.docc/Renderer/img/deprecated-icon.015b4f17.svg diff --git a/docs/swift-docc-render/img/modified-icon.f496e73d.svg b/Sources/Mockingbird.docc/Renderer/img/modified-icon.f496e73d.svg similarity index 100% rename from docs/swift-docc-render/img/modified-icon.f496e73d.svg rename to Sources/Mockingbird.docc/Renderer/img/modified-icon.f496e73d.svg diff --git a/docs/swift-docc-render/index-template.html b/Sources/Mockingbird.docc/Renderer/index-template.html similarity index 100% rename from docs/swift-docc-render/index-template.html rename to Sources/Mockingbird.docc/Renderer/index-template.html diff --git a/docs/swift-docc-render/index.html b/Sources/Mockingbird.docc/Renderer/index.html similarity index 100% rename from docs/swift-docc-render/index.html rename to Sources/Mockingbird.docc/Renderer/index.html diff --git a/docs/swift-docc-render/js/chunk-2d0d3105.cd72cc8e.js b/Sources/Mockingbird.docc/Renderer/js/chunk-2d0d3105.cd72cc8e.js similarity index 100% rename from docs/swift-docc-render/js/chunk-2d0d3105.cd72cc8e.js rename to Sources/Mockingbird.docc/Renderer/js/chunk-2d0d3105.cd72cc8e.js diff --git a/docs/swift-docc-render/js/chunk-vendors.00bf82af.js b/Sources/Mockingbird.docc/Renderer/js/chunk-vendors.00bf82af.js similarity index 100% rename from docs/swift-docc-render/js/chunk-vendors.00bf82af.js rename to Sources/Mockingbird.docc/Renderer/js/chunk-vendors.00bf82af.js diff --git a/docs/swift-docc-render/js/documentation-topic.b1a26a74.js b/Sources/Mockingbird.docc/Renderer/js/documentation-topic.b1a26a74.js similarity index 100% rename from docs/swift-docc-render/js/documentation-topic.b1a26a74.js rename to Sources/Mockingbird.docc/Renderer/js/documentation-topic.b1a26a74.js diff --git a/docs/swift-docc-render/js/documentation-topic~topic~tutorials-overview.c5a22800.js b/Sources/Mockingbird.docc/Renderer/js/documentation-topic~topic~tutorials-overview.c5a22800.js similarity index 100% rename from docs/swift-docc-render/js/documentation-topic~topic~tutorials-overview.c5a22800.js rename to Sources/Mockingbird.docc/Renderer/js/documentation-topic~topic~tutorials-overview.c5a22800.js diff --git a/docs/swift-docc-render/js/highlight-js-bash.1b52852f.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-bash.1b52852f.js similarity index 100% rename from docs/swift-docc-render/js/highlight-js-bash.1b52852f.js rename to Sources/Mockingbird.docc/Renderer/js/highlight-js-bash.1b52852f.js diff --git a/docs/swift-docc-render/js/highlight-js-c.d1db3f17.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-c.d1db3f17.js similarity index 100% rename from docs/swift-docc-render/js/highlight-js-c.d1db3f17.js rename to Sources/Mockingbird.docc/Renderer/js/highlight-js-c.d1db3f17.js diff --git a/docs/swift-docc-render/js/highlight-js-cpp.eaddddbe.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-cpp.eaddddbe.js similarity index 100% rename from docs/swift-docc-render/js/highlight-js-cpp.eaddddbe.js rename to Sources/Mockingbird.docc/Renderer/js/highlight-js-cpp.eaddddbe.js diff --git a/docs/swift-docc-render/js/highlight-js-css.75eab1fe.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-css.75eab1fe.js similarity index 100% rename from docs/swift-docc-render/js/highlight-js-css.75eab1fe.js rename to Sources/Mockingbird.docc/Renderer/js/highlight-js-css.75eab1fe.js diff --git a/docs/swift-docc-render/js/highlight-js-custom-markdown.7cffc4b3.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-custom-markdown.7cffc4b3.js similarity index 100% rename from docs/swift-docc-render/js/highlight-js-custom-markdown.7cffc4b3.js rename to Sources/Mockingbird.docc/Renderer/js/highlight-js-custom-markdown.7cffc4b3.js diff --git a/docs/swift-docc-render/js/highlight-js-custom-swift.886dc05e.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-custom-swift.886dc05e.js similarity index 100% rename from docs/swift-docc-render/js/highlight-js-custom-swift.886dc05e.js rename to Sources/Mockingbird.docc/Renderer/js/highlight-js-custom-swift.886dc05e.js diff --git a/docs/swift-docc-render/js/highlight-js-diff.62d66733.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-diff.62d66733.js similarity index 100% rename from docs/swift-docc-render/js/highlight-js-diff.62d66733.js rename to Sources/Mockingbird.docc/Renderer/js/highlight-js-diff.62d66733.js diff --git a/docs/swift-docc-render/js/highlight-js-http.163e45b6.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-http.163e45b6.js similarity index 100% rename from docs/swift-docc-render/js/highlight-js-http.163e45b6.js rename to Sources/Mockingbird.docc/Renderer/js/highlight-js-http.163e45b6.js diff --git a/docs/swift-docc-render/js/highlight-js-java.8326d9d8.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-java.8326d9d8.js similarity index 100% rename from docs/swift-docc-render/js/highlight-js-java.8326d9d8.js rename to Sources/Mockingbird.docc/Renderer/js/highlight-js-java.8326d9d8.js diff --git a/docs/swift-docc-render/js/highlight-js-javascript.acb8a8eb.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-javascript.acb8a8eb.js similarity index 100% rename from docs/swift-docc-render/js/highlight-js-javascript.acb8a8eb.js rename to Sources/Mockingbird.docc/Renderer/js/highlight-js-javascript.acb8a8eb.js diff --git a/docs/swift-docc-render/js/highlight-js-json.471128d2.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-json.471128d2.js similarity index 100% rename from docs/swift-docc-render/js/highlight-js-json.471128d2.js rename to Sources/Mockingbird.docc/Renderer/js/highlight-js-json.471128d2.js diff --git a/docs/swift-docc-render/js/highlight-js-llvm.6100b125.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-llvm.6100b125.js similarity index 100% rename from docs/swift-docc-render/js/highlight-js-llvm.6100b125.js rename to Sources/Mockingbird.docc/Renderer/js/highlight-js-llvm.6100b125.js diff --git a/docs/swift-docc-render/js/highlight-js-markdown.90077643.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-markdown.90077643.js similarity index 100% rename from docs/swift-docc-render/js/highlight-js-markdown.90077643.js rename to Sources/Mockingbird.docc/Renderer/js/highlight-js-markdown.90077643.js diff --git a/docs/swift-docc-render/js/highlight-js-objectivec.bcdf5156.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-objectivec.bcdf5156.js similarity index 100% rename from docs/swift-docc-render/js/highlight-js-objectivec.bcdf5156.js rename to Sources/Mockingbird.docc/Renderer/js/highlight-js-objectivec.bcdf5156.js diff --git a/docs/swift-docc-render/js/highlight-js-perl.757d7b6f.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-perl.757d7b6f.js similarity index 100% rename from docs/swift-docc-render/js/highlight-js-perl.757d7b6f.js rename to Sources/Mockingbird.docc/Renderer/js/highlight-js-perl.757d7b6f.js diff --git a/docs/swift-docc-render/js/highlight-js-php.cc8d6c27.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-php.cc8d6c27.js similarity index 100% rename from docs/swift-docc-render/js/highlight-js-php.cc8d6c27.js rename to Sources/Mockingbird.docc/Renderer/js/highlight-js-php.cc8d6c27.js diff --git a/docs/swift-docc-render/js/highlight-js-python.c214ed92.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-python.c214ed92.js similarity index 100% rename from docs/swift-docc-render/js/highlight-js-python.c214ed92.js rename to Sources/Mockingbird.docc/Renderer/js/highlight-js-python.c214ed92.js diff --git a/docs/swift-docc-render/js/highlight-js-ruby.f889d392.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-ruby.f889d392.js similarity index 100% rename from docs/swift-docc-render/js/highlight-js-ruby.f889d392.js rename to Sources/Mockingbird.docc/Renderer/js/highlight-js-ruby.f889d392.js diff --git a/docs/swift-docc-render/js/highlight-js-scss.62ee18da.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-scss.62ee18da.js similarity index 100% rename from docs/swift-docc-render/js/highlight-js-scss.62ee18da.js rename to Sources/Mockingbird.docc/Renderer/js/highlight-js-scss.62ee18da.js diff --git a/docs/swift-docc-render/js/highlight-js-shell.dd7f411f.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-shell.dd7f411f.js similarity index 100% rename from docs/swift-docc-render/js/highlight-js-shell.dd7f411f.js rename to Sources/Mockingbird.docc/Renderer/js/highlight-js-shell.dd7f411f.js diff --git a/docs/swift-docc-render/js/highlight-js-swift.84f3e88c.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-swift.84f3e88c.js similarity index 100% rename from docs/swift-docc-render/js/highlight-js-swift.84f3e88c.js rename to Sources/Mockingbird.docc/Renderer/js/highlight-js-swift.84f3e88c.js diff --git a/docs/swift-docc-render/js/highlight-js-xml.9c3688c7.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-xml.9c3688c7.js similarity index 100% rename from docs/swift-docc-render/js/highlight-js-xml.9c3688c7.js rename to Sources/Mockingbird.docc/Renderer/js/highlight-js-xml.9c3688c7.js diff --git a/docs/swift-docc-render/js/index.891036dc.js b/Sources/Mockingbird.docc/Renderer/js/index.891036dc.js similarity index 100% rename from docs/swift-docc-render/js/index.891036dc.js rename to Sources/Mockingbird.docc/Renderer/js/index.891036dc.js diff --git a/docs/swift-docc-render/js/topic.c4c8f983.js b/Sources/Mockingbird.docc/Renderer/js/topic.c4c8f983.js similarity index 100% rename from docs/swift-docc-render/js/topic.c4c8f983.js rename to Sources/Mockingbird.docc/Renderer/js/topic.c4c8f983.js diff --git a/docs/swift-docc-render/js/tutorials-overview.0dfedc70.js b/Sources/Mockingbird.docc/Renderer/js/tutorials-overview.0dfedc70.js similarity index 100% rename from docs/swift-docc-render/js/tutorials-overview.0dfedc70.js rename to Sources/Mockingbird.docc/Renderer/js/tutorials-overview.0dfedc70.js diff --git a/docs/swift-docc-render/theme-settings.json b/Sources/Mockingbird.docc/Renderer/theme-settings.json similarity index 100% rename from docs/swift-docc-render/theme-settings.json rename to Sources/Mockingbird.docc/Renderer/theme-settings.json diff --git a/docs/Mockingbird.docc/Resources/hero@2x.png b/Sources/Mockingbird.docc/Resources/hero@2x.png similarity index 100% rename from docs/Mockingbird.docc/Resources/hero@2x.png rename to Sources/Mockingbird.docc/Resources/hero@2x.png diff --git a/docs/Mockingbird.docc/Resources/hero~dark@2x.png b/Sources/Mockingbird.docc/Resources/hero~dark@2x.png similarity index 100% rename from docs/Mockingbird.docc/Resources/hero~dark@2x.png rename to Sources/Mockingbird.docc/Resources/hero~dark@2x.png diff --git a/docs/Mockingbird.docc/Resources/logo@3x.png b/Sources/Mockingbird.docc/Resources/logo@3x.png similarity index 100% rename from docs/Mockingbird.docc/Resources/logo@3x.png rename to Sources/Mockingbird.docc/Resources/logo@3x.png From b7a9d46b53b37548f81c771d00d06bfb563a56ea Mon Sep 17 00:00:00 2001 From: Andrew Chang Date: Tue, 4 Jan 2022 22:49:38 -1000 Subject: [PATCH 09/20] Use custom favicon --- Sources/Mockingbird.docc/Renderer/favicon.ico | Bin 15406 -> 329400 bytes .../Renderer/index-template.html | 2 +- Sources/Mockingbird.docc/Renderer/index.html | 2 +- ... => highlight-js-custom-swift.2aea0800.js} | 0 .../{index.891036dc.js => index.37f0a361.js} | 2 +- 5 files changed, 3 insertions(+), 3 deletions(-) rename Sources/Mockingbird.docc/Renderer/js/{highlight-js-custom-swift.886dc05e.js => highlight-js-custom-swift.2aea0800.js} (100%) rename Sources/Mockingbird.docc/Renderer/js/{index.891036dc.js => index.37f0a361.js} (99%) diff --git a/Sources/Mockingbird.docc/Renderer/favicon.ico b/Sources/Mockingbird.docc/Renderer/favicon.ico index 5231da6dc99b41b8c9b720113cc4991529eb215e..58e0ae02b241c3454e3e8ae2ad6caeb396b372a8 100644 GIT binary patch literal 329400 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 diff --git a/Sources/Mockingbird.docc/Renderer/index-template.html b/Sources/Mockingbird.docc/Renderer/index-template.html index 3c8e093f..61547001 100644 --- a/Sources/Mockingbird.docc/Renderer/index-template.html +++ b/Sources/Mockingbird.docc/Renderer/index-template.html @@ -8,4 +8,4 @@ See https://swift.org/CONTRIBUTORS.txt for Swift project authors --> -Documentation

\ No newline at end of file +Documentation
\ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/index.html b/Sources/Mockingbird.docc/Renderer/index.html index 19518b9e..cd21b93b 100644 --- a/Sources/Mockingbird.docc/Renderer/index.html +++ b/Sources/Mockingbird.docc/Renderer/index.html @@ -8,4 +8,4 @@ See https://swift.org/CONTRIBUTORS.txt for Swift project authors --> -Documentation
\ No newline at end of file +Documentation
\ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/highlight-js-custom-swift.886dc05e.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-custom-swift.2aea0800.js similarity index 100% rename from Sources/Mockingbird.docc/Renderer/js/highlight-js-custom-swift.886dc05e.js rename to Sources/Mockingbird.docc/Renderer/js/highlight-js-custom-swift.2aea0800.js diff --git a/Sources/Mockingbird.docc/Renderer/js/index.891036dc.js b/Sources/Mockingbird.docc/Renderer/js/index.37f0a361.js similarity index 99% rename from Sources/Mockingbird.docc/Renderer/js/index.891036dc.js rename to Sources/Mockingbird.docc/Renderer/js/index.37f0a361.js index 5c7c290b..c8cd6392 100644 --- a/Sources/Mockingbird.docc/Renderer/js/index.891036dc.js +++ b/Sources/Mockingbird.docc/Renderer/js/index.37f0a361.js @@ -6,4 +6,4 @@ * * See https://swift.org/LICENSE.txt for license information * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */(function(e){function t(t){for(var i,n,h=t[0],a=t[1],c=t[2],l=0,u=[];l])/g,n=/^-+/,r=/["'&<>]/g;function s(e){return e.trim().replace(i,"-").replace(n,"").toLowerCase()}function h(e){const t=e=>({'"':""","'":"'","&":"&","<":"<",">":">"}[e]||e);return e.replace(r,t)}const a={zero:"zero",one:"one",two:"two",few:"few",many:"many",other:"other"},c={cardinal:"cardinal",ordinal:"ordinal"};function l(e,t){const{cardinal:o}=c,{one:i,other:n}=a,r="en",s=1===t?i:n;if(!e[r]||!e[r][s])throw new Error("No default choices provided to pluralize using default locale "+r);let h=r,l=s;if("Intl"in window&&"PluralRules"in window.Intl){const i=navigator.languages?navigator.languages:[navigator.language],n=new Intl.PluralRules(i,{type:o}),r=n.select(t),s=n.resolvedOptions().locale;e[s]&&e[s][r]&&(h=s,l=r)}return e[h][l]}function u(e){const t=/#(\d)(.*)/.exec(e);if(null===t)return e;const[o,i]=t.slice(1),n=`\\3${o} `;return`#${n}${i}`}},"1b02":function(e,t,o){"use strict";o("a6ff")},"2be1":function(e,t,o){"use strict";o("9b4f")},3908:function(e,t,o){"use strict";function i(e){let t=null,o=e-1;const i=new Promise(e=>{t=e});return requestAnimationFrame((function e(){o-=1,o<=0?t():requestAnimationFrame(e)})),i}o.d(t,"a",(function(){return i}))},"5c0b":function(e,t,o){"use strict";o("9c0c")},"63b8":function(e,t,o){"use strict";o.d(t,"b",(function(){return i})),o.d(t,"c",(function(){return n})),o.d(t,"a",(function(){return r})),o.d(t,"d",(function(){return h}));const i={large:"large",medium:"medium",small:"small"},n={default:"default",nav:"nav"},r={[n.default]:{[i.large]:{minWidth:1069,contentWidth:980},[i.medium]:{minWidth:736,maxWidth:1068,contentWidth:692},[i.small]:{minWidth:320,maxWidth:735,contentWidth:280}},[n.nav]:{[i.large]:{minWidth:1024},[i.medium]:{minWidth:768,maxWidth:1023},[i.small]:{minWidth:320,maxWidth:767}}},s={[i.small]:0,[i.medium]:1,[i.large]:2};function h(e,t){return s[e]>s[t]}},6842:function(e,t,o){"use strict";function i(e,t,o){let i,n=e,r=t;for("string"===typeof r&&(r=[r]),i=0;ie.json()).catch(()=>({}))}const h=(e,t)=>i(n,e,t)},7138:function(e,t,o){"use strict";o("813c")},"813c":function(e,t,o){},"821b":function(e,t,o){"use strict";t["a"]={auto:{label:"Auto",value:"auto"},dark:{label:"Dark",value:"dark"},light:{label:"Light",value:"light"}}},"942d":function(e,t,o){"use strict";o.d(t,"a",(function(){return i})),o.d(t,"b",(function(){return n})),o.d(t,"c",(function(){return r}));const i=52,n=48,r="nav-sticky-anchor"},9895:function(e,t,o){"use strict";o.d(t,"b",(function(){return i})),o.d(t,"a",(function(){return n}));const i="not-found",n="documentation-topic"},"9b4f":function(e,t,o){},"9c0c":function(e,t,o){},a6aa:function(e,t,o){"use strict";o("d964")},a6ff:function(e,t,o){},d26a:function(e,t,o){"use strict";o.d(t,"c",(function(){return n})),o.d(t,"b",(function(){return r})),o.d(t,"a",(function(){return s}));var i={input:"input",tags:"tags"};function n(e={}){return Object.entries(e).reduce((e,[t,o])=>o?e.concat(`${encodeURIComponent(t)}=${encodeURIComponent(o)}`):e,[]).join("&")}function r(e,{changes:t,language:o,context:i}={}){const[r,s]=e.split("#"),h=r.match(/\?.*/),a=n({changes:t,language:o,context:i}),c=h?"&":"?",l=s?r:e,u=a?`${c}${a}`:"",d=s?"#"+s:"";return`${l}${u}${d}`}function s(e,t){const{query:{changes:o,[i.input]:n,[i.tags]:r,...s}={}}=e,{query:{changes:h,[i.input]:a,[i.tags]:c,...l}={}}=t;return e.name===t.name&&JSON.stringify({path:e.path,query:s})===JSON.stringify({path:t.path,query:l})}},d369:function(e,t,o){"use strict";const i={getItem:e=>{try{return localStorage.getItem(e)}catch(t){return null}},setItem:(e,t)=>{try{localStorage.setItem(e,t)}catch(o){}}},n={preferredColorScheme:"developer.setting.preferredColorScheme",preferredLanguage:"docs.setting.preferredLanguage"},r={preferredColorScheme:"docs.setting.preferredColorScheme"};t["a"]=Object.defineProperties({},Object.keys(n).reduce((e,t)=>({...e,[t]:{get:()=>{const e=r[t],o=i.getItem(n[t]);return e?o||i.getItem(e):o},set:e=>i.setItem(n[t],e)}}),{}))},d964:function(e,t,o){},e425:function(e,t,o){"use strict";var i=o("821b"),n=o("d369");const r="undefined"!==typeof window.matchMedia&&[i["a"].light.value,i["a"].dark.value,"no-preference"].some(e=>window.matchMedia(`(prefers-color-scheme: ${e})`).matches),s=r?i["a"].auto:i["a"].light;t["a"]={state:{preferredColorScheme:n["a"].preferredColorScheme||s.value,supportsAutoColorScheme:r,systemColorScheme:i["a"].light.value},setPreferredColorScheme(e){this.state.preferredColorScheme=e,n["a"].preferredColorScheme=e},setSystemColorScheme(e){this.state.systemColorScheme=e},syncPreferredColorScheme(){n["a"].preferredColorScheme&&n["a"].preferredColorScheme!==this.state.preferredColorScheme&&(this.state.preferredColorScheme=n["a"].preferredColorScheme)}}},e4ca:function(e,t,o){},e51f:function(e,t,o){"use strict";o("e4ca")},ed96:function(e,t,o){o.p=window.baseUrl},f161:function(e,t,o){"use strict";o.r(t);o("ed96");var i=o("2b0e"),n=o("8c4f"),r=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{class:{fromkeyboard:e.fromKeyboard,hascustomheader:e.hasCustomHeader},attrs:{id:"app"}},[o("a",{attrs:{href:"#main",id:"skip-nav"}},[e._v("Skip Navigation")]),o("InitialLoadingPlaceholder"),e._t("header",(function(){return[e.hasCustomHeader?o("custom-header",{attrs:{"data-color-scheme":e.preferredColorScheme}}):e._e()]}),{isTargetIDE:e.isTargetIDE}),o("div",{attrs:{id:e.baseNavStickyAnchorId}}),e._t("default",(function(){return[o("router-view"),e.hasCustomFooter?o("custom-footer",{attrs:{"data-color-scheme":e.preferredColorScheme}}):o("Footer")]}),{isTargetIDE:e.isTargetIDE}),e._t("footer",null,{isTargetIDE:e.isTargetIDE})],2)},s=[],h=o("e425"),a=o("821b"),c=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("footer",{staticClass:"footer"},[o("div",{staticClass:"row"},[o("ColorSchemeToggle")],1)])},l=[],u=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{staticClass:"color-scheme-toggle",attrs:{"aria-label":"Select a color scheme preference",role:"radiogroup",tabindex:"0"}},e._l(e.options,(function(t){return o("label",{key:t.value},[o("input",{attrs:{type:"radio"},domProps:{checked:t.value==e.preferredColorScheme,value:t.value},on:{input:e.setPreferredColorScheme}}),o("div",{staticClass:"text"},[e._v(e._s(t.label))])])})),0)},d=[],g={name:"ColorSchemeToggle",data:()=>({appState:h["a"].state}),computed:{options:({supportsAutoColorScheme:e})=>[a["a"].light,a["a"].dark,...e?[a["a"].auto]:[]],preferredColorScheme:({appState:e})=>e.preferredColorScheme,supportsAutoColorScheme:({appState:e})=>e.supportsAutoColorScheme},methods:{setPreferredColorScheme:e=>{h["a"].setPreferredColorScheme(e.target.value)}},watch:{preferredColorScheme:{immediate:!0,handler(e){document.body.dataset.colorScheme=e}}}},f=g,m=(o("2be1"),o("2877")),p=Object(m["a"])(f,u,d,!1,null,"4472ec1e",null),j=p.exports,v={name:"Footer",components:{ColorSchemeToggle:j}},w=v,b=(o("1b02"),Object(m["a"])(w,c,l,!1,null,"67c823d8",null)),y=b.exports,S=function(){var e=this,t=e.$createElement,o=e._self._c||t;return e.loaded?e._e():o("div",{staticClass:"InitialLoadingPlaceholder",attrs:{id:"loading-placeholder"}})},E=[],C={name:"InitialLoadingPlaceholder",data(){return{loaded:!1}},created(){this.$router.onReady(()=>{this.loaded=!0})}},_=C,P=(o("e51f"),Object(m["a"])(_,S,E,!1,null,"47e4ace8",null)),T=P.exports,k=o("942d"),A=o("6842");function O(e,t){return e&&"object"===typeof e&&Object.prototype.hasOwnProperty.call(e,t)&&"string"===typeof e[t]}function x(e,t,o,i){if(!t||"object"!==typeof t||i&&(O(t,"light")||O(t,"dark"))){let n=t;if(O(t,i)&&(n=t[i]),"object"===typeof n)return;o[e]=n}else Object.entries(t).forEach(([t,n])=>{const r=[e,t].join("-");x(r,n,o,i)})}function L(e,t="light"){const o={},i=e||{};return x("-",i,o,t),o}var D={name:"CoreApp",components:{Footer:y,InitialLoadingPlaceholder:T},provide(){return{isTargetIDE:this.isTargetIDE,performanceMetricsEnabled:"true"===Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_PERFORMANCE_ENABLED}},data(){return{appState:h["a"].state,fromKeyboard:!1,isTargetIDE:"ide"===Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET,themeSettings:A["d"],baseNavStickyAnchorId:k["c"]}},computed:{currentColorScheme:({appState:e})=>e.systemColorScheme,preferredColorScheme:({appState:e})=>e.preferredColorScheme,CSSCustomProperties:({themeSettings:e,currentColorScheme:t})=>L(e.theme,t),hasCustomHeader:()=>!!window.customElements.get("custom-header"),hasCustomFooter:()=>!!window.customElements.get("custom-footer")},props:{enableThemeSettings:{type:Boolean,default:!0}},watch:{CSSCustomProperties:{immediate:!0,handler(e){this.detachStylesFromRoot(e),this.attachStylesToRoot(e)}}},async created(){window.addEventListener("keydown",this.onKeyDown),this.$bridge.on("navigation",this.handleNavigationRequest),this.enableThemeSettings&&Object.assign(this.themeSettings,await Object(A["b"])()),window.addEventListener("pageshow",this.syncPreferredColorScheme),this.$once("hook:beforeDestroy",()=>{window.removeEventListener("pageshow",this.syncPreferredColorScheme)})},mounted(){(document.querySelector(".footer-current-year")||{}).innerText=(new Date).getFullYear(),this.attachColorSchemeListeners()},beforeDestroy(){this.fromKeyboard?window.removeEventListener("mousedown",this.onMouseDown):window.removeEventListener("keydown",this.onKeyDown),this.$bridge.off("navigation",this.handleNavigationRequest),this.detachStylesFromRoot(this.CSSCustomProperties)},methods:{onKeyDown(){this.fromKeyboard=!0,window.addEventListener("mousedown",this.onMouseDown),window.removeEventListener("keydown",this.onKeyDown)},onMouseDown(){this.fromKeyboard=!1,window.addEventListener("keydown",this.onKeyDown),window.removeEventListener("mousedown",this.onMouseDown)},handleNavigationRequest(e){this.$router.push(e)},attachColorSchemeListeners(){if(!window.matchMedia)return;const e=window.matchMedia("(prefers-color-scheme: dark)");e.addListener(this.onColorSchemePreferenceChange),this.$once("hook:beforeDestroy",()=>{e.removeListener(this.onColorSchemePreferenceChange)}),this.onColorSchemePreferenceChange(e)},onColorSchemePreferenceChange({matches:e}){const t=e?a["a"].dark:a["a"].light;h["a"].setSystemColorScheme(t.value)},attachStylesToRoot(e){const t=document.documentElement;Object.entries(e).filter(([,e])=>Boolean(e)).forEach(([e,o])=>{t.style.setProperty(e,o)})},detachStylesFromRoot(e){const t=document.documentElement;Object.entries(e).forEach(([e])=>{t.style.removeProperty(e)})},syncPreferredColorScheme(){h["a"].syncPreferredColorScheme()}}},I=D,$=(o("5c0b"),o("a6aa"),Object(m["a"])(I,r,s,!1,null,"bf0cd418",null)),N=$.exports;class R{constructor(){this.$send=()=>{}}send(e){this.$send(e)}}class U{constructor(){const{webkit:{messageHandlers:{bridge:e={}}={}}={}}=window;this.bridge=e;const{postMessage:t=(()=>{})}=e;this.$send=t.bind(e)}send(e){this.$send(e)}}class M{constructor(e=new R){this.backend=e,this.listeners={}}send(e){this.backend.send(e)}receive(e){this.emit(e.type,e.data)}emit(e,t){this.listeners[e]&&this.listeners[e].forEach(e=>e(t))}on(e,t){this.listeners[e]||(this.listeners[e]=new Set),this.listeners[e].add(t)}off(e,t){this.listeners[e]&&this.listeners[e].delete(t)}}var B={install(e,t){let o;o=t.performanceMetricsEnabled||"ide"===t.appTarget?new U:new R,e.prototype.$bridge=new M(o)}};function W(e){return"custom-"+e}function V(e){return class extends HTMLElement{constructor(){super();const t=this.attachShadow({mode:"open"}),o=e.content.cloneNode(!0);t.appendChild(o)}}}function q(e){const t=W(e),o=document.getElementById(t);o&&window.customElements.define(t,V(o))}function F(e,t={names:["header","footer"]}){const{names:o}=t;e.config.ignoredElements=/^custom-/,o.forEach(q)}function H(e,t){const{value:o=!1}=t;e.style.display=o?"none":""}var K={hide:H};function G(e,{performanceMetrics:t=!1}={}){e.config.productionTip=!1,e.use(F),e.directive("hide",K.hide),e.use(B,{appTarget:Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET,performanceMetricsEnabled:t}),window.bridge=e.prototype.$bridge,e.config.performance=t}var J=o("9895"),z=o("63b8"),Y=o("3908"),X=o("002d"),Q=o("d26a");function Z(){const{location:e}=window;return e.pathname+e.search+e.hash}function ee(){const e=Math.max(document.documentElement.clientWidth||0,window.innerWidth||0);return ePromise.all([o.e("documentation-topic~topic~tutorials-overview"),o.e("tutorials-overview")]).then(o.bind(null,"f025"))},{path:"/tutorials/:id/*",name:"topic",component:()=>Promise.all([o.e("documentation-topic~topic~tutorials-overview"),o.e("topic")]).then(o.bind(null,"3213"))},{path:"/documentation/*",name:J["a"],component:()=>Promise.all([o.e("documentation-topic~topic~tutorials-overview"),o.e("documentation-topic")]).then(o.bind(null,"f8ac"))},{path:"*",name:J["b"],component:ye},{path:"*",name:"server-error",component:me}];function Ee(e={}){const t=new n["a"]({mode:"history",base:A["a"],scrollBehavior:te,...e,routes:e.routes||Se});return t.onReady(()=>{"scrollRestoration"in window.history&&(window.history.scrollRestoration="manual"),oe()}),"ide"!==Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET&&t.onError(e=>{const{route:o={path:"/"}}=e;t.replace({name:"server-error",params:[o.path]})}),window.addEventListener("unload",ie),t}i["default"].use(G),i["default"].use(n["a"]),new i["default"]({router:Ee(),render:e=>e(N)}).$mount("#app")}}); \ No newline at end of file + */(function(e){function t(t){for(var i,n,h=t[0],a=t[1],c=t[2],l=0,u=[];l])/g,n=/^-+/,r=/["'&<>]/g;function s(e){return e.trim().replace(i,"-").replace(n,"").toLowerCase()}function h(e){const t=e=>({'"':""","'":"'","&":"&","<":"<",">":">"}[e]||e);return e.replace(r,t)}const a={zero:"zero",one:"one",two:"two",few:"few",many:"many",other:"other"},c={cardinal:"cardinal",ordinal:"ordinal"};function l(e,t){const{cardinal:o}=c,{one:i,other:n}=a,r="en",s=1===t?i:n;if(!e[r]||!e[r][s])throw new Error("No default choices provided to pluralize using default locale "+r);let h=r,l=s;if("Intl"in window&&"PluralRules"in window.Intl){const i=navigator.languages?navigator.languages:[navigator.language],n=new Intl.PluralRules(i,{type:o}),r=n.select(t),s=n.resolvedOptions().locale;e[s]&&e[s][r]&&(h=s,l=r)}return e[h][l]}function u(e){const t=/#(\d)(.*)/.exec(e);if(null===t)return e;const[o,i]=t.slice(1),n=`\\3${o} `;return`#${n}${i}`}},"1b02":function(e,t,o){"use strict";o("a6ff")},"2be1":function(e,t,o){"use strict";o("9b4f")},3908:function(e,t,o){"use strict";function i(e){let t=null,o=e-1;const i=new Promise(e=>{t=e});return requestAnimationFrame((function e(){o-=1,o<=0?t():requestAnimationFrame(e)})),i}o.d(t,"a",(function(){return i}))},"5c0b":function(e,t,o){"use strict";o("9c0c")},"63b8":function(e,t,o){"use strict";o.d(t,"b",(function(){return i})),o.d(t,"c",(function(){return n})),o.d(t,"a",(function(){return r})),o.d(t,"d",(function(){return h}));const i={large:"large",medium:"medium",small:"small"},n={default:"default",nav:"nav"},r={[n.default]:{[i.large]:{minWidth:1069,contentWidth:980},[i.medium]:{minWidth:736,maxWidth:1068,contentWidth:692},[i.small]:{minWidth:320,maxWidth:735,contentWidth:280}},[n.nav]:{[i.large]:{minWidth:1024},[i.medium]:{minWidth:768,maxWidth:1023},[i.small]:{minWidth:320,maxWidth:767}}},s={[i.small]:0,[i.medium]:1,[i.large]:2};function h(e,t){return s[e]>s[t]}},6842:function(e,t,o){"use strict";function i(e,t,o){let i,n=e,r=t;for("string"===typeof r&&(r=[r]),i=0;ie.json()).catch(()=>({}))}const h=(e,t)=>i(n,e,t)},7138:function(e,t,o){"use strict";o("813c")},"813c":function(e,t,o){},"821b":function(e,t,o){"use strict";t["a"]={auto:{label:"Auto",value:"auto"},dark:{label:"Dark",value:"dark"},light:{label:"Light",value:"light"}}},"942d":function(e,t,o){"use strict";o.d(t,"a",(function(){return i})),o.d(t,"b",(function(){return n})),o.d(t,"c",(function(){return r}));const i=52,n=48,r="nav-sticky-anchor"},9895:function(e,t,o){"use strict";o.d(t,"b",(function(){return i})),o.d(t,"a",(function(){return n}));const i="not-found",n="documentation-topic"},"9b4f":function(e,t,o){},"9c0c":function(e,t,o){},a6aa:function(e,t,o){"use strict";o("d964")},a6ff:function(e,t,o){},d26a:function(e,t,o){"use strict";o.d(t,"c",(function(){return n})),o.d(t,"b",(function(){return r})),o.d(t,"a",(function(){return s}));var i={input:"input",tags:"tags"};function n(e={}){return Object.entries(e).reduce((e,[t,o])=>o?e.concat(`${encodeURIComponent(t)}=${encodeURIComponent(o)}`):e,[]).join("&")}function r(e,{changes:t,language:o,context:i}={}){const[r,s]=e.split("#"),h=r.match(/\?.*/),a=n({changes:t,language:o,context:i}),c=h?"&":"?",l=s?r:e,u=a?`${c}${a}`:"",d=s?"#"+s:"";return`${l}${u}${d}`}function s(e,t){const{query:{changes:o,[i.input]:n,[i.tags]:r,...s}={}}=e,{query:{changes:h,[i.input]:a,[i.tags]:c,...l}={}}=t;return e.name===t.name&&JSON.stringify({path:e.path,query:s})===JSON.stringify({path:t.path,query:l})}},d369:function(e,t,o){"use strict";const i={getItem:e=>{try{return localStorage.getItem(e)}catch(t){return null}},setItem:(e,t)=>{try{localStorage.setItem(e,t)}catch(o){}}},n={preferredColorScheme:"developer.setting.preferredColorScheme",preferredLanguage:"docs.setting.preferredLanguage"},r={preferredColorScheme:"docs.setting.preferredColorScheme"};t["a"]=Object.defineProperties({},Object.keys(n).reduce((e,t)=>({...e,[t]:{get:()=>{const e=r[t],o=i.getItem(n[t]);return e?o||i.getItem(e):o},set:e=>i.setItem(n[t],e)}}),{}))},d964:function(e,t,o){},e425:function(e,t,o){"use strict";var i=o("821b"),n=o("d369");const r="undefined"!==typeof window.matchMedia&&[i["a"].light.value,i["a"].dark.value,"no-preference"].some(e=>window.matchMedia(`(prefers-color-scheme: ${e})`).matches),s=r?i["a"].auto:i["a"].light;t["a"]={state:{preferredColorScheme:n["a"].preferredColorScheme||s.value,supportsAutoColorScheme:r,systemColorScheme:i["a"].light.value},setPreferredColorScheme(e){this.state.preferredColorScheme=e,n["a"].preferredColorScheme=e},setSystemColorScheme(e){this.state.systemColorScheme=e},syncPreferredColorScheme(){n["a"].preferredColorScheme&&n["a"].preferredColorScheme!==this.state.preferredColorScheme&&(this.state.preferredColorScheme=n["a"].preferredColorScheme)}}},e4ca:function(e,t,o){},e51f:function(e,t,o){"use strict";o("e4ca")},ed96:function(e,t,o){o.p=window.baseUrl},f161:function(e,t,o){"use strict";o.r(t);o("ed96");var i=o("2b0e"),n=o("8c4f"),r=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{class:{fromkeyboard:e.fromKeyboard,hascustomheader:e.hasCustomHeader},attrs:{id:"app"}},[o("a",{attrs:{href:"#main",id:"skip-nav"}},[e._v("Skip Navigation")]),o("InitialLoadingPlaceholder"),e._t("header",(function(){return[e.hasCustomHeader?o("custom-header",{attrs:{"data-color-scheme":e.preferredColorScheme}}):e._e()]}),{isTargetIDE:e.isTargetIDE}),o("div",{attrs:{id:e.baseNavStickyAnchorId}}),e._t("default",(function(){return[o("router-view"),e.hasCustomFooter?o("custom-footer",{attrs:{"data-color-scheme":e.preferredColorScheme}}):o("Footer")]}),{isTargetIDE:e.isTargetIDE}),e._t("footer",null,{isTargetIDE:e.isTargetIDE})],2)},s=[],h=o("e425"),a=o("821b"),c=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("footer",{staticClass:"footer"},[o("div",{staticClass:"row"},[o("ColorSchemeToggle")],1)])},l=[],u=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{staticClass:"color-scheme-toggle",attrs:{"aria-label":"Select a color scheme preference",role:"radiogroup",tabindex:"0"}},e._l(e.options,(function(t){return o("label",{key:t.value},[o("input",{attrs:{type:"radio"},domProps:{checked:t.value==e.preferredColorScheme,value:t.value},on:{input:e.setPreferredColorScheme}}),o("div",{staticClass:"text"},[e._v(e._s(t.label))])])})),0)},d=[],g={name:"ColorSchemeToggle",data:()=>({appState:h["a"].state}),computed:{options:({supportsAutoColorScheme:e})=>[a["a"].light,a["a"].dark,...e?[a["a"].auto]:[]],preferredColorScheme:({appState:e})=>e.preferredColorScheme,supportsAutoColorScheme:({appState:e})=>e.supportsAutoColorScheme},methods:{setPreferredColorScheme:e=>{h["a"].setPreferredColorScheme(e.target.value)}},watch:{preferredColorScheme:{immediate:!0,handler(e){document.body.dataset.colorScheme=e}}}},f=g,m=(o("2be1"),o("2877")),p=Object(m["a"])(f,u,d,!1,null,"4472ec1e",null),j=p.exports,v={name:"Footer",components:{ColorSchemeToggle:j}},w=v,b=(o("1b02"),Object(m["a"])(w,c,l,!1,null,"67c823d8",null)),y=b.exports,S=function(){var e=this,t=e.$createElement,o=e._self._c||t;return e.loaded?e._e():o("div",{staticClass:"InitialLoadingPlaceholder",attrs:{id:"loading-placeholder"}})},E=[],C={name:"InitialLoadingPlaceholder",data(){return{loaded:!1}},created(){this.$router.onReady(()=>{this.loaded=!0})}},_=C,P=(o("e51f"),Object(m["a"])(_,S,E,!1,null,"47e4ace8",null)),T=P.exports,k=o("942d"),A=o("6842");function O(e,t){return e&&"object"===typeof e&&Object.prototype.hasOwnProperty.call(e,t)&&"string"===typeof e[t]}function x(e,t,o,i){if(!t||"object"!==typeof t||i&&(O(t,"light")||O(t,"dark"))){let n=t;if(O(t,i)&&(n=t[i]),"object"===typeof n)return;o[e]=n}else Object.entries(t).forEach(([t,n])=>{const r=[e,t].join("-");x(r,n,o,i)})}function L(e,t="light"){const o={},i=e||{};return x("-",i,o,t),o}var D={name:"CoreApp",components:{Footer:y,InitialLoadingPlaceholder:T},provide(){return{isTargetIDE:this.isTargetIDE,performanceMetricsEnabled:"true"===Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_PERFORMANCE_ENABLED}},data(){return{appState:h["a"].state,fromKeyboard:!1,isTargetIDE:"ide"===Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET,themeSettings:A["d"],baseNavStickyAnchorId:k["c"]}},computed:{currentColorScheme:({appState:e})=>e.systemColorScheme,preferredColorScheme:({appState:e})=>e.preferredColorScheme,CSSCustomProperties:({themeSettings:e,currentColorScheme:t})=>L(e.theme,t),hasCustomHeader:()=>!!window.customElements.get("custom-header"),hasCustomFooter:()=>!!window.customElements.get("custom-footer")},props:{enableThemeSettings:{type:Boolean,default:!0}},watch:{CSSCustomProperties:{immediate:!0,handler(e){this.detachStylesFromRoot(e),this.attachStylesToRoot(e)}}},async created(){window.addEventListener("keydown",this.onKeyDown),this.$bridge.on("navigation",this.handleNavigationRequest),this.enableThemeSettings&&Object.assign(this.themeSettings,await Object(A["b"])()),window.addEventListener("pageshow",this.syncPreferredColorScheme),this.$once("hook:beforeDestroy",()=>{window.removeEventListener("pageshow",this.syncPreferredColorScheme)})},mounted(){(document.querySelector(".footer-current-year")||{}).innerText=(new Date).getFullYear(),this.attachColorSchemeListeners()},beforeDestroy(){this.fromKeyboard?window.removeEventListener("mousedown",this.onMouseDown):window.removeEventListener("keydown",this.onKeyDown),this.$bridge.off("navigation",this.handleNavigationRequest),this.detachStylesFromRoot(this.CSSCustomProperties)},methods:{onKeyDown(){this.fromKeyboard=!0,window.addEventListener("mousedown",this.onMouseDown),window.removeEventListener("keydown",this.onKeyDown)},onMouseDown(){this.fromKeyboard=!1,window.addEventListener("keydown",this.onKeyDown),window.removeEventListener("mousedown",this.onMouseDown)},handleNavigationRequest(e){this.$router.push(e)},attachColorSchemeListeners(){if(!window.matchMedia)return;const e=window.matchMedia("(prefers-color-scheme: dark)");e.addListener(this.onColorSchemePreferenceChange),this.$once("hook:beforeDestroy",()=>{e.removeListener(this.onColorSchemePreferenceChange)}),this.onColorSchemePreferenceChange(e)},onColorSchemePreferenceChange({matches:e}){const t=e?a["a"].dark:a["a"].light;h["a"].setSystemColorScheme(t.value)},attachStylesToRoot(e){const t=document.documentElement;Object.entries(e).filter(([,e])=>Boolean(e)).forEach(([e,o])=>{t.style.setProperty(e,o)})},detachStylesFromRoot(e){const t=document.documentElement;Object.entries(e).forEach(([e])=>{t.style.removeProperty(e)})},syncPreferredColorScheme(){h["a"].syncPreferredColorScheme()}}},I=D,$=(o("5c0b"),o("a6aa"),Object(m["a"])(I,r,s,!1,null,"bf0cd418",null)),N=$.exports;class R{constructor(){this.$send=()=>{}}send(e){this.$send(e)}}class U{constructor(){const{webkit:{messageHandlers:{bridge:e={}}={}}={}}=window;this.bridge=e;const{postMessage:t=(()=>{})}=e;this.$send=t.bind(e)}send(e){this.$send(e)}}class M{constructor(e=new R){this.backend=e,this.listeners={}}send(e){this.backend.send(e)}receive(e){this.emit(e.type,e.data)}emit(e,t){this.listeners[e]&&this.listeners[e].forEach(e=>e(t))}on(e,t){this.listeners[e]||(this.listeners[e]=new Set),this.listeners[e].add(t)}off(e,t){this.listeners[e]&&this.listeners[e].delete(t)}}var B={install(e,t){let o;o=t.performanceMetricsEnabled||"ide"===t.appTarget?new U:new R,e.prototype.$bridge=new M(o)}};function W(e){return"custom-"+e}function V(e){return class extends HTMLElement{constructor(){super();const t=this.attachShadow({mode:"open"}),o=e.content.cloneNode(!0);t.appendChild(o)}}}function q(e){const t=W(e),o=document.getElementById(t);o&&window.customElements.define(t,V(o))}function F(e,t={names:["header","footer"]}){const{names:o}=t;e.config.ignoredElements=/^custom-/,o.forEach(q)}function H(e,t){const{value:o=!1}=t;e.style.display=o?"none":""}var K={hide:H};function G(e,{performanceMetrics:t=!1}={}){e.config.productionTip=!1,e.use(F),e.directive("hide",K.hide),e.use(B,{appTarget:Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET,performanceMetricsEnabled:t}),window.bridge=e.prototype.$bridge,e.config.performance=t}var J=o("9895"),z=o("63b8"),Y=o("3908"),X=o("002d"),Q=o("d26a");function Z(){const{location:e}=window;return e.pathname+e.search+e.hash}function ee(){const e=Math.max(document.documentElement.clientWidth||0,window.innerWidth||0);return ePromise.all([o.e("documentation-topic~topic~tutorials-overview"),o.e("tutorials-overview")]).then(o.bind(null,"f025"))},{path:"/tutorials/:id/*",name:"topic",component:()=>Promise.all([o.e("documentation-topic~topic~tutorials-overview"),o.e("topic")]).then(o.bind(null,"3213"))},{path:"/documentation/*",name:J["a"],component:()=>Promise.all([o.e("documentation-topic~topic~tutorials-overview"),o.e("documentation-topic")]).then(o.bind(null,"f8ac"))},{path:"*",name:J["b"],component:ye},{path:"*",name:"server-error",component:me}];function Ee(e={}){const t=new n["a"]({mode:"history",base:A["a"],scrollBehavior:te,...e,routes:e.routes||Se});return t.onReady(()=>{"scrollRestoration"in window.history&&(window.history.scrollRestoration="manual"),oe()}),"ide"!==Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET&&t.onError(e=>{const{route:o={path:"/"}}=e;t.replace({name:"server-error",params:[o.path]})}),window.addEventListener("unload",ie),t}i["default"].use(G),i["default"].use(n["a"]),new i["default"]({router:Ee(),render:e=>e(N)}).$mount("#app")}}); \ No newline at end of file From a53e05e91196857de67396fb366c2384a38107cb Mon Sep 17 00:00:00 2001 From: Andrew Chang Date: Wed, 5 Jan 2022 17:02:20 -1000 Subject: [PATCH 10/20] Allow specifying multiple Carthage build platforms --- Sources/MockingbirdAutomation/Interop/Carthage.swift | 8 ++++---- .../Commands/BuildFramework.swift | 9 ++++++--- .../Commands/TestExampleProject.swift | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/Sources/MockingbirdAutomation/Interop/Carthage.swift b/Sources/MockingbirdAutomation/Interop/Carthage.swift index ba6e6690..7df049f3 100644 --- a/Sources/MockingbirdAutomation/Interop/Carthage.swift +++ b/Sources/MockingbirdAutomation/Interop/Carthage.swift @@ -10,19 +10,19 @@ public enum Carthage { case all = "all" } - public static func update(platform: Platform = .all, project: Path) throws { + public static func update(platforms: [Platform] = [.all], project: Path) throws { try Subprocess("carthage", [ "update", - "--platform", platform.rawValue, + "--platform", platforms.map({ $0.rawValue }).joined(separator: ","), "--use-xcframeworks", "--verbose", ], workingDirectory: project.parent()).run() } - public static func build(platform: Platform = .all, project: Path) throws { + public static func build(platforms: [Platform] = [.all], project: Path) throws { try Subprocess("carthage", [ "build", - "--platform", platform.rawValue, + "--platform", platforms.map({ $0.rawValue }).joined(separator: ","), "--use-xcframeworks", "--no-skip-current", "--cache-builds", diff --git a/Sources/MockingbirdAutomationCli/Commands/BuildFramework.swift b/Sources/MockingbirdAutomationCli/Commands/BuildFramework.swift index 7e56df0d..bffb4f43 100644 --- a/Sources/MockingbirdAutomationCli/Commands/BuildFramework.swift +++ b/Sources/MockingbirdAutomationCli/Commands/BuildFramework.swift @@ -9,8 +9,11 @@ extension Build { commandName: "framework", abstract: "Build a fat XCFramework bundle.") - @Option(help: "The target platform.") - var platform: Carthage.Platform = .all + @Option(name: [.customLong("platform"), + .customLong("platforms")], + parsing: .upToNextOption, + help: "List of target platforms to build against.") + var platforms: [Carthage.Platform] = [.all] @OptionGroup() var globalOptions: Options @@ -39,7 +42,7 @@ extension Build { } let projectPath = Path("./Mockingbird.xcodeproj") - try Carthage.build(platform: platform, project: projectPath) + try Carthage.build(platforms: platforms, project: projectPath) // Carthage doesn't provide a way to query for the built product path, so this is inferred. let frameworkPath = projectPath.parent() + "Carthage/Build/Mockingbird.xcframework" diff --git a/Sources/MockingbirdAutomationCli/Commands/TestExampleProject.swift b/Sources/MockingbirdAutomationCli/Commands/TestExampleProject.swift index 2a601448..8e100bc0 100755 --- a/Sources/MockingbirdAutomationCli/Commands/TestExampleProject.swift +++ b/Sources/MockingbirdAutomationCli/Commands/TestExampleProject.swift @@ -53,7 +53,7 @@ extension Test { return } let projectPath = Path("Examples/CarthageExample/CarthageExample.xcodeproj") - try Carthage.update(platform: .iOS, project: projectPath) + try Carthage.update(platforms: [.iOS], project: projectPath) try XcodeBuild.test(target: .scheme(name: "CarthageExample"), project: .project(path: projectPath), destination: .iOSSimulator(deviceUUID: uuid)) From e55ae5b44ebe188105fa7bf1bb5d0edd468e7e20 Mon Sep 17 00:00:00 2001 From: Andrew Chang Date: Wed, 5 Jan 2022 17:02:43 -1000 Subject: [PATCH 11/20] Update generate and configure command help docs --- Sources/MockingbirdCli/Commands/Configure.swift | 2 +- Sources/MockingbirdCli/Commands/Generate.swift | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Sources/MockingbirdCli/Commands/Configure.swift b/Sources/MockingbirdCli/Commands/Configure.swift index 31e339cb..4afb92f5 100644 --- a/Sources/MockingbirdCli/Commands/Configure.swift +++ b/Sources/MockingbirdCli/Commands/Configure.swift @@ -28,7 +28,7 @@ extension Mockingbird { var project: XcodeProjPath? @Option(name: [.customLong("srcproject")], - help: "Path to the Xcode project with source modules, if separate from tests.") + help: "Path to the Xcode project with source modules.") var sourceProject: XcodeProjPath? @Option(help: "Path to the Mockingbird generator executable.") diff --git a/Sources/MockingbirdCli/Commands/Generate.swift b/Sources/MockingbirdCli/Commands/Generate.swift index bc6dc5d2..6a5b0995 100644 --- a/Sources/MockingbirdCli/Commands/Generate.swift +++ b/Sources/MockingbirdCli/Commands/Generate.swift @@ -51,17 +51,17 @@ extension Mockingbird { var testbundle: TestBundleName? @Option(parsing: .upToNextOption, - help: "Content to add at the beginning of each generated mock file.") + help: "Lines to show at the top of generated mock files.") var header: [String] = [] - @Option(help: "Compilation condition to wrap all generated mocks in, e.g. 'DEBUG'.") + @Option(help: "Compilation condition to wrap all generated mocks in.") var condition: String? @Option(parsing: .upToNextOption, help: "List of diagnostic generator warnings to enable.") var diagnostics: [DiagnosticType] = [] - @Option(help: "The pruning method to use on unreferenced types.") + @Option(help: "The thunk pruning level for unreferenced types.") var prune: PruningMethod? // MARK: Flags From 4590a8532ee45eb1f001afab061e90589f2b0b2c Mon Sep 17 00:00:00 2001 From: Andrew Chang Date: Wed, 5 Jan 2022 17:02:52 -1000 Subject: [PATCH 12/20] Finalize DocC articles and structure --- .../Articles/Carthage-QuickStart.md | 35 ------ .../Articles/CocoaPods-QuickStart.md | 38 ------ .../Articles/SwiftPM-Project-QuickStart.md | 36 ------ .../Collections/Stubbing-Operator.md | 29 ----- .../Pages/Advanced Topics/Excluding-Files.md | 41 +++++++ .../Advanced Topics/Mocking-External-Types.md | 64 ++++++++++ .../Supporting-Source-Files.md | 40 ++++++ .../Pages/Command Line Interface/Configure.md | 48 ++++++++ .../Command Line Interface/Default-Values.md | 42 +++++++ .../Pages/Command Line Interface/Generate.md | 57 +++++++++ .../JSON-Project-Description.md | 75 ++++++++++++ .../Command Line Interface/Thunk-Pruning.md | 20 +++ .../Essentials}/Matching-Arguments.md | 0 .../Essentials}/Mocking.md | 4 +- .../Essentials}/ObjC-Stubbing-Operator.md | 6 +- .../Essentials}/Stubbing.md | 13 +- .../Essentials}/Verification.md | 3 +- .../Getting Started/Carthage-QuickStart.md | 66 ++++++++++ .../Getting Started/CocoaPods-QuickStart.md | 69 +++++++++++ .../SPM-Package-QuickStart.md} | 43 ++++--- .../Getting Started/SPM-Project-QuickStart.md | 68 +++++++++++ .../Pages/Meta/Feature-Comparison.md | 58 +++++++++ .../{Collections => Pages/Meta}/Internal.md | 12 +- .../Pages/Meta/Known-Limitations.md | 43 +++++++ .../Pages/Meta/Local-Development.md | 56 +++++++++ .../{ => Pages}/Mockingbird.md | 35 +++++- .../Pages/Troubleshooting/Common-Problems.md | 54 +++++++++ .../Debugging-the-Generator.md | 23 ++++ .../Troubleshooting/Generator-Diagnostics.md | 114 ++++++++++++++++++ .../Resources/build-log@2x.png | Bin 0 -> 105812 bytes .../Resources/build-log~dark@2x.png | Bin 0 -> 108161 bytes .../Resources/launch-args@2x.png | Bin 0 -> 95384 bytes .../Resources/launch-args~dark@2x.png | Bin 0 -> 99648 bytes .../Resources/report-navigator@2x.png | Bin 0 -> 42318 bytes .../Resources/report-navigator~dark@2x.png | Bin 0 -> 46942 bytes 35 files changed, 1007 insertions(+), 185 deletions(-) delete mode 100644 Sources/Mockingbird.docc/Articles/Carthage-QuickStart.md delete mode 100644 Sources/Mockingbird.docc/Articles/CocoaPods-QuickStart.md delete mode 100644 Sources/Mockingbird.docc/Articles/SwiftPM-Project-QuickStart.md delete mode 100644 Sources/Mockingbird.docc/Collections/Stubbing-Operator.md create mode 100644 Sources/Mockingbird.docc/Pages/Advanced Topics/Excluding-Files.md create mode 100644 Sources/Mockingbird.docc/Pages/Advanced Topics/Mocking-External-Types.md create mode 100644 Sources/Mockingbird.docc/Pages/Advanced Topics/Supporting-Source-Files.md create mode 100644 Sources/Mockingbird.docc/Pages/Command Line Interface/Configure.md create mode 100644 Sources/Mockingbird.docc/Pages/Command Line Interface/Default-Values.md create mode 100644 Sources/Mockingbird.docc/Pages/Command Line Interface/Generate.md create mode 100644 Sources/Mockingbird.docc/Pages/Command Line Interface/JSON-Project-Description.md create mode 100644 Sources/Mockingbird.docc/Pages/Command Line Interface/Thunk-Pruning.md rename Sources/Mockingbird.docc/{Collections => Pages/Essentials}/Matching-Arguments.md (100%) rename Sources/Mockingbird.docc/{Collections => Pages/Essentials}/Mocking.md (87%) rename Sources/Mockingbird.docc/{Collections => Pages/Essentials}/ObjC-Stubbing-Operator.md (95%) rename Sources/Mockingbird.docc/{Collections => Pages/Essentials}/Stubbing.md (95%) rename Sources/Mockingbird.docc/{Collections => Pages/Essentials}/Verification.md (98%) create mode 100644 Sources/Mockingbird.docc/Pages/Getting Started/Carthage-QuickStart.md create mode 100644 Sources/Mockingbird.docc/Pages/Getting Started/CocoaPods-QuickStart.md rename Sources/Mockingbird.docc/{Articles/SwiftPM-Package-QuickStart.md => Pages/Getting Started/SPM-Package-QuickStart.md} (59%) create mode 100644 Sources/Mockingbird.docc/Pages/Getting Started/SPM-Project-QuickStart.md create mode 100644 Sources/Mockingbird.docc/Pages/Meta/Feature-Comparison.md rename Sources/Mockingbird.docc/{Collections => Pages/Meta}/Internal.md (88%) create mode 100644 Sources/Mockingbird.docc/Pages/Meta/Known-Limitations.md create mode 100644 Sources/Mockingbird.docc/Pages/Meta/Local-Development.md rename Sources/Mockingbird.docc/{ => Pages}/Mockingbird.md (72%) create mode 100644 Sources/Mockingbird.docc/Pages/Troubleshooting/Common-Problems.md create mode 100644 Sources/Mockingbird.docc/Pages/Troubleshooting/Debugging-the-Generator.md create mode 100644 Sources/Mockingbird.docc/Pages/Troubleshooting/Generator-Diagnostics.md create mode 100644 Sources/Mockingbird.docc/Resources/build-log@2x.png create mode 100644 Sources/Mockingbird.docc/Resources/build-log~dark@2x.png create mode 100644 Sources/Mockingbird.docc/Resources/launch-args@2x.png create mode 100644 Sources/Mockingbird.docc/Resources/launch-args~dark@2x.png create mode 100644 Sources/Mockingbird.docc/Resources/report-navigator@2x.png create mode 100644 Sources/Mockingbird.docc/Resources/report-navigator~dark@2x.png diff --git a/Sources/Mockingbird.docc/Articles/Carthage-QuickStart.md b/Sources/Mockingbird.docc/Articles/Carthage-QuickStart.md deleted file mode 100644 index fd3ea69e..00000000 --- a/Sources/Mockingbird.docc/Articles/Carthage-QuickStart.md +++ /dev/null @@ -1,35 +0,0 @@ -# Carthage Quick Start Guide - -Integrate Mockingbird into a Carthage Xcode project. - -## Overview - -Add the framework to your `Cartfile`. - -``` -github "birdrides/mockingbird" ~> 0.19 -``` - -In your project directory, build the framework and [link it to your test target](https://github.com/birdrides/mockingbird/wiki/Linking-Test-Targets). - -```console -$ carthage update --use-xcframeworks -``` - -Finally, configure the test target to generate mocks for specific modules or libraries. - -```console -$ Carthage/Checkouts/mockingbird/mockingbird configure MyAppTests -- --targets MyApp MyLibrary1 MyLibrary2 -``` - -> Tip: The configurator adds a build phase which calls the generator before each test run. You can pass [additional arguments](#foobar) to the generator after the configurator double-dash (`--`). - -## Recommended - -- [Exclude generated files from source control](https://github.com/birdrides/mockingbird/wiki/Integration-Tips#source-control-exclusion) - -## Need Help? - -- [Join the #mockingbird Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) -- [Search the troubleshooting guide for common issues](https://github.com/birdrides/mockingbird/wiki/Troubleshooting) -- [Check out the Carthage example project](https://github.com/birdrides/mockingbird/tree/master/Examples/CarthageExample) diff --git a/Sources/Mockingbird.docc/Articles/CocoaPods-QuickStart.md b/Sources/Mockingbird.docc/Articles/CocoaPods-QuickStart.md deleted file mode 100644 index 673b6cbe..00000000 --- a/Sources/Mockingbird.docc/Articles/CocoaPods-QuickStart.md +++ /dev/null @@ -1,38 +0,0 @@ -# CocoaPods Quick Start Guide - -Integrate Mockingbird into a CocoaPods Xcode project. - -## Overview - -Add the framework to a test target in your `Podfile`, making sure to include the `use_frameworks!` option. - -```ruby -target 'MyAppTests' do - use_frameworks! - pod 'MockingbirdFramework', '~> 0.19' -end -``` - -In your project directory, initialize the pod. - -```console -$ pod install -``` - -Finally, configure the test target to generate mocks for specific modules or libraries. - -```console -$ Pods/MockingbirdFramework/mockingbird configure MyAppTests -- --targets MyApp MyLibrary1 MyLibrary2 -``` - -> Tip: The configurator adds a build phase which calls the generator before each test run. You can pass [additional arguments](#foobar) to the generator after the configurator double-dash (`--`). - -## Recommended - -- [Exclude generated files from source control](https://github.com/birdrides/mockingbird/wiki/Integration-Tips#source-control-exclusion) - -## Need Help? - -- [Join the #mockingbird Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) -- [Search the troubleshooting guide for common issues](https://github.com/birdrides/mockingbird/wiki/Troubleshooting) -- [Check out the CocoaPods example project](https://github.com/birdrides/mockingbird/tree/master/Examples/CocoaPodsExample) diff --git a/Sources/Mockingbird.docc/Articles/SwiftPM-Project-QuickStart.md b/Sources/Mockingbird.docc/Articles/SwiftPM-Project-QuickStart.md deleted file mode 100644 index 5f141588..00000000 --- a/Sources/Mockingbird.docc/Articles/SwiftPM-Project-QuickStart.md +++ /dev/null @@ -1,36 +0,0 @@ -# SwiftPM Quick Start Guide - Xcode Project - -Integrate Mockingbird into a SwiftPM Xcode project. - -## Overview - -Add the framework to your project: - -1. Navigate to **File › Add Packages…** and enter `https://github.com/birdrides/mockingbird` -2. Change **Dependency Rule** to “Up to Next Minor Version” and enter `0.19.0` -3. Click **Add Package** -4. Select your test target and click **Add Package** - -In your project directory, resolve the derived data path. This can take a few moments. - -```console -$ DERIVED_DATA="$(xcodebuild -showBuildSettings | sed -n 's|.*BUILD_ROOT = \(.*\)/Build/.*|\1|p' -``` - -Finally, configure the test target to generate mocks for specific modules or libraries. - -```console -$ "${DERIVED_DATA}/SourcePackages/checkouts/mockingbird/mockingbird" configure MyPackageTests -- --targets MyPackage MyLibrary1 MyLibrary2 -``` - -> Tip: The configurator adds a build phase which calls the generator before each test run. You can pass [additional arguments](#foobar) to the generator after the configurator double-dash (`--`). - -## Recommended - -- [Exclude generated files from source control](https://github.com/birdrides/mockingbird/wiki/Integration-Tips#source-control-exclusion) - -## Need Help? - -- [Join the #mockingbird Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) -- [Search the troubleshooting guide for common issues](https://github.com/birdrides/mockingbird/wiki/Troubleshooting) -- [Check out the SPM Xcode project example](https://github.com/birdrides/mockingbird/tree/master/Examples/SPMProjectExample) diff --git a/Sources/Mockingbird.docc/Collections/Stubbing-Operator.md b/Sources/Mockingbird.docc/Collections/Stubbing-Operator.md deleted file mode 100644 index 1bb70a68..00000000 --- a/Sources/Mockingbird.docc/Collections/Stubbing-Operator.md +++ /dev/null @@ -1,29 +0,0 @@ -# Stubbing Operator - -Abstract - -## Overview - -Overview - -## Topics - -### Returning a Value - -- ``/documentation/Mockingbird/~_(_:_:)-6m8gw`` - -### Executing a Closure - -- ``/documentation/Mockingbird/~_(_:_:)-3eb81`` - -### Implementation Provider - -- ``/documentation/Mockingbird/~_(_:_:)-6yox8`` - -### Forwarding to a Target - -- ``/documentation/Mockingbird/~_(_:_:)-3to0j`` - -### Objective-C - -- diff --git a/Sources/Mockingbird.docc/Pages/Advanced Topics/Excluding-Files.md b/Sources/Mockingbird.docc/Pages/Advanced Topics/Excluding-Files.md new file mode 100644 index 00000000..90d71f53 --- /dev/null +++ b/Sources/Mockingbird.docc/Pages/Advanced Topics/Excluding-Files.md @@ -0,0 +1,41 @@ +# Excluding Files + +Exclude problematic sources from being parsed by the generator. + +## Overview + +You can use a `.mockingbird-ignore` file to exclude specific files, directories, or path patterns from being processed by Mockingbird. This is useful to prevent malformed or unparsable source files from crashing the generator. Most of the time you shouldn’t need to use a Mockingbird ignore file and can set the level to `omit`. + +### Schema + +The Mockingbird ignore file follows the same format and directory-level scoping as [`.gitignore`](https://git-scm.com/docs/gitignore#_pattern_format). It supports negation and comments in addition to pattern-based file matching. + +### Examples + +Ignore specific source files. + +```bash +MyClass.swift +MyProtocol.swift +``` + +Ignore specific directories. + +```bash +TopLevelDirectory/ +Path/To/Another/Directory/ +``` + +Ignore multiple files based on a pattern. + +```bash +*.generated.swift +Foo/**/*Bar.swift +``` + +Ignore all files in a directory except for one. + +```bash +TopLevelDirectory/ +!TopLevelDirectory/IncludeMe.swift +``` diff --git a/Sources/Mockingbird.docc/Pages/Advanced Topics/Mocking-External-Types.md b/Sources/Mockingbird.docc/Pages/Advanced Topics/Mocking-External-Types.md new file mode 100644 index 00000000..2b3358db --- /dev/null +++ b/Sources/Mockingbird.docc/Pages/Advanced Topics/Mocking-External-Types.md @@ -0,0 +1,64 @@ +# Mocking External Types + +Create test doubles for external types without sources. + +## Overview + +Swift types imported from a library or framework that you don’t have source access to cannot be mocked by Mockingbird. These are considered opaque external types and require source changes to generate mocks. In the future, this process will be improved to allow generating mocks from . + +> Note: Mockingbird supports external Objective-C types out of the box because they are dynamically created at run time instead of at compile time like Swift. + +## Caveat + +There’s a saying that’s passed around the testing circles: “Don't mock what you don't own.” The key idea here is that mocking or stubbing is best done on types that allow you to make assumptions about its behavior. Since external types can change without any consideration for your mocks and stubs, they should be treated as opaque and left to integration style tests. + +That said, this isn’t a hard and fast rule; sometimes it’s simply easier to mock external types. + +### Walkthrough + +As an example, let’s mock `URLSession` which is used by a class we want to test called `CarrierPigeon`. + +```swift +class CarrierPigeon { + func sendMessage(session: URLSession) { + session.dataTask(with: URL(string: "http://bird.co")!).resume() + } +} +``` + +First, declare a protocol with all relevant methods and conform the external type to the protocol. In this case, we will declare `BirdURLSession` and conform `URLSession` to the protocol using an extension. + +```swift +protocol BirdURLSession { + func dataTask(with url: URL) -> URLSessionDataTask +} +extension URLSession: BirdURLSession {} +``` + +Next, replace usages of the original external type with the new protocol. We will update `CarrierPigeon` to use `BirdURLSession` instead. + +```swift +class CarrierPigeon { + func sendMessage(session: BirdURLSession) { + session.dataTask(with: URL(string: "http://bird.co")!).resume() + } +} +``` + +After applying the same steps to `URLSessionDataTask`, we can now test sending a message with `CarrierPigeon`. + +```swift +func testSendMessage() { + // Given + let session = mock(BirdURLSession.self) + let dataTask = mock(BirdURLSessionDataTask.self) + given(session.dataTask(with: any())).willReturn(dataTask) + + // When + CarrierPigeon().sendMessage(session: session) + + // Then + verify(session.dataTask(with: any())).wasCalled() + verify(dataTask.resume()).wasCalled() +} +``` diff --git a/Sources/Mockingbird.docc/Pages/Advanced Topics/Supporting-Source-Files.md b/Sources/Mockingbird.docc/Pages/Advanced Topics/Supporting-Source-Files.md new file mode 100644 index 00000000..5165b3e0 --- /dev/null +++ b/Sources/Mockingbird.docc/Pages/Advanced Topics/Supporting-Source-Files.md @@ -0,0 +1,40 @@ +# Supporting Source Files + +Add additional source files to resolve external type declarations. + +## Overview + +Types defined in a library or framework that you don’t have source access to cannot be parsed by Mockingbird. Supporting source files allow you to provide external types to the generator so that it can resolve inherited methods and properties correctly. + +> Note: Supporting source files do not yet allow you to mock external types. See for more information. + +### Starter Pack + +Mockingbird provides a set of starter supporting source files for basic compatibility with the Swift standard library and common system frameworks. The configurator automatically downloads and integrates them into your project, but you can retrieve the latest version from the [GitHub release artifacts](https://github.com/birdrides/mockingbird/releases). + +### Adding Files + +Add supporting source files whenever a type inherits from an external type. For example, the protocol `Bird` cannot be mocked because it inherits from `ExternalType` and Mockingbird does not know that it declares the method `foobar`. + +```swift +// Defined in `ExternalFramework` +public protocol ExternalType { + func foobar() +} + +// Defined in `BirdApp` +protocol Bird: ExternalType {} +``` + +In order to generate a mock for `Bird`, the declaration for `ExternalType` should be added to a supporting source file. File names are arbitrary, but the containing directory must be equal to the module name. + +> Important: You should never add supporting source files to any Xcode targets as they will not compile. + +```swift +// Added to `MockingbirdSupport/ExternalFramework/ExternalType.swift` +public protocol ExternalType { + func someMethod() +} +``` + +Mockingbird can now parse `ExternalType` and the method `foobar`, allowing `Bird` and any other types that inherit from `ExternalType` to be generated and mocked. diff --git a/Sources/Mockingbird.docc/Pages/Command Line Interface/Configure.md b/Sources/Mockingbird.docc/Pages/Command Line Interface/Configure.md new file mode 100644 index 00000000..21e2ca55 --- /dev/null +++ b/Sources/Mockingbird.docc/Pages/Command Line Interface/Configure.md @@ -0,0 +1,48 @@ +# Configure Command Options + +Configure a test target to generate mocks. + +## Overview + +Configuring a test target adds a build phase that calls the generator before each test run. + +### Examples + +Configure `MyAppTests` to generate mocks for `MyApp` and `MyLibrary`: + +```console +$ mockingbird configure MyAppTests -- --targets MyApp MyLibrary +``` + +Configure `MyAppTests` to only generate protocol mocks for `MyApp`: + +```console +$ mockingbird configure MyAppTests -- --targets MyApp --only-protocols +``` + +Configure `MyAppTests` to generate mocks for `ExternalFramework` given that the two targets are located in different Xcode projects: + +```console +$ mockingbird configure MyAppTests \ + --project /path/to/MyApp.xcodeproj \ + --srcproject /path/to/ExternalFramework.xcodeproj \ + -- \ + --targets ExternalFramework +``` + +### Options + +See for more information about inferred options. + +| Option | Default Value | Description | +| --- | --- | --- | +| `-p, --project` | (inferred) | Path to an Xcode project. | +| `--srcproject` | (inferred) | Path to the Xcode project with source modules. | +| `--generator` | (inferred) | Path to the Mockingbird generator executable. | +| `--url` | (inferred) | The base URL hosting downloadable asset bundles. | + +### Flags + +| Flag | Description | +| --- | --- | +| `--preserve-existing` | Keep previously added Mockingbird build phases. | diff --git a/Sources/Mockingbird.docc/Pages/Command Line Interface/Default-Values.md b/Sources/Mockingbird.docc/Pages/Command Line Interface/Default-Values.md new file mode 100644 index 00000000..87c48c03 --- /dev/null +++ b/Sources/Mockingbird.docc/Pages/Command Line Interface/Default-Values.md @@ -0,0 +1,42 @@ +# Default Values and Global Options + +Values inferred from the environment and working directory. + +### Global Options + +| Flag | Description | +| --- | --- | +| `--verbose` | Log all errors, warnings, and debug messages. | +| `--quiet` | Only log error messages. | +| `--version` | Show the version. | +| `-h, --help` | Show help information. | + +### Default Values + +#### project + +Mockingbird first checks the environment variable `PROJECT_FILE_PATH` set by the Xcode build context and then performs a shallow search of the current working directory for an `.xcodeproj` file. If multiple `.xcodeproj` files exist then you must explicitly provide a project file path. + +#### srcroot + +Mockingbird checks the environment variables `SRCROOT` and `SOURCE_ROOT` set by the Xcode build context and then falls back to the directory containing the `.xcodeproj` project file. Note that source root is ignored when using JSON project descriptions. + +#### outputs + +Mockingbird generates mocks into the directory `$(SRCROOT)/MockingbirdMocks` with the file name `$(PRODUCT_MODULE_NAME)Mocks-$(TEST_TARGET_NAME).generated.swift`. + +#### support + +Mockingbird recursively looks for in the directory `$(SRCROOT)/MockingbirdSupport`. + +#### testbundle + +Mockingbird checks the environment variables `TARGET_NAME` and `TARGETNAME` set by the Xcode build context and verifies that it refers to a valid Swift unit test target. The test bundle option must be set when using a in order to enable thunk stubs. + +#### generator + +Mockingbird uses the current executable path and attempts to make it relative to the project’s `SRCROOT` or derived data. To improve portability across development environments, avoid linking executables outside of project-specific directories. + +#### url + +Mockingbird uses the GitHub release artifacts located at `https://github.com/birdrides/mockingbird/releases/download`. Note that asset bundles are versioned by release. diff --git a/Sources/Mockingbird.docc/Pages/Command Line Interface/Generate.md b/Sources/Mockingbird.docc/Pages/Command Line Interface/Generate.md new file mode 100644 index 00000000..e841ef6f --- /dev/null +++ b/Sources/Mockingbird.docc/Pages/Command Line Interface/Generate.md @@ -0,0 +1,57 @@ +# Generate Command Options + +Generate mocks for a set of targets in a project. + +## Overview + +The generator uses your project’s source graph to discover, parse, and output mocked types. + +### Examples + +Generate mocks for `MyApp` and `MyLibrary`: + +```console +$ mockingbird generate --targets MyApp MyLibrary +``` + +Only generate mocks for `MyApp` which are also used in `MyAppTests`: + +```console +$ mockingbird generate --targets MyApp --testbundle MyAppTests +``` + +Only generate mocks for `ExternalFramework` which are also used in `MyAppTests`, given that the two targets are located in different Xcode projects: + +```console +$ PROJECT_FILE_PATH=/path/to/MyApp.xcodeproj mockingbird generate \ + --project ExternalFramework.xcodeproj \ + --targets ExternalFramework \ + --testbundle MyAppTests +``` + +### Options + +See for more information about inferred options. + +| Option | Default Value | Description | +| --- | --- | --- | +| `-t, --targets` | **(required)** | List of target names to generate mocks for. | +| `-o, --outputs` | (inferred) | List of output file paths corresponding to each target. | +| `-p, --project` | (inferred) | Path to an Xcode project or a . | +| `--output-dir` | (inferred) | The directory where generated files should be output. | +| `--srcroot` | (inferred) | The directory containing your project’s source files. | +| `--support` | (inferred) | The directory containing . | +| `--testbundle` | (inferred) | The name of the test bundle using the mocks. | +| `--header` | `nil` | Lines to show at the top of generated mock files. | +| `--condition` | `nil` | [Compilation condition](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID538) to wrap all generated mocks in. | +| `--diagnostics` | `nil` | List of to enable. | +| `--prune` | `"omit"` | The level for unreferenced types. | + +### Flags + +| Flag | Description | +| --- | --- | +| `--only-protocols` | Only generate mocks for protocols. | +| `--disable-swiftlint` | Disable all SwiftLint rules in generated mocks. | +| `--disable-cache` | Ignore cached mock information stored on disk. | +| `--disable-relaxed-linking` | Only search explicitly imported modules. | diff --git a/Sources/Mockingbird.docc/Pages/Command Line Interface/JSON-Project-Description.md b/Sources/Mockingbird.docc/Pages/Command Line Interface/JSON-Project-Description.md new file mode 100644 index 00000000..c379ece4 --- /dev/null +++ b/Sources/Mockingbird.docc/Pages/Command Line Interface/JSON-Project-Description.md @@ -0,0 +1,75 @@ +# JSON Project Description + +Generate mocks without an Xcode project. + +## Overview + +By default, Mockingbird uses the source graph defined by your Xcode project as the source of truth for modules and their dependencies. Although this works well for most cases, build environments that don’t rely on Xcode projects such as SwiftPM packages, Buck, and Bazel require direct access to the source graph. + +You can use JSON project descriptions as a way to define available modules and their corresponding sources files and dependencies. Project descriptions should contain both source and test targets in order to use . + +### Schema + +JSON project descriptions are compatible with `swift package describe --type json` and can be used to generate mocks for SwiftPM packages. + +```swift +struct ProjectDescription { + let targets: [Target] +} + +struct Target { + let name: String // The name of the target + let type: TargetType // Either `library` or `test` + let path: String // Path to the target’s source root + let dependencies: [String] // List of dependency target names + let sources: [String] // List of source file paths relative to `path` + + enum TargetType { + case library // A Swift source target + case test // A Swift unit test target + } +} +``` + +### Example + +```json +{ + "targets": [ + { + "name": "MyLibrary", + "type": "library", + "path": "/path/to/MyLibrary", + "dependencies": [], + "sources": [ + "SourceFileA.swift", + "SourceFileB.swift" + ] + }, + { + "name": "MyOtherLibrary", + "type": "library", + "path": "/path/to/MyOtherLibrary", + "dependencies": [ + "MyLibrary" + ], + "sources": [ + "SourceFileA.swift", + "SourceFileB.swift" + ] + }, + { + "name": "MyLibraryTests", + "type": "test", + "path": "/path/to/MyLibraryTests", + "dependencies": [ + "MyLibrary" + ], + "sources": [ + "SourceFileA.swift", + "SourceFileB.swift" + ] + } + ] +} +``` diff --git a/Sources/Mockingbird.docc/Pages/Command Line Interface/Thunk-Pruning.md b/Sources/Mockingbird.docc/Pages/Command Line Interface/Thunk-Pruning.md new file mode 100644 index 00000000..779eedce --- /dev/null +++ b/Sources/Mockingbird.docc/Pages/Command Line Interface/Thunk-Pruning.md @@ -0,0 +1,20 @@ +# Thunk Pruning + +Exclude unused types from generating mocks. + +## Overview + +To improve compilation times for large projects, Mockingbird only generates mocking code (known as thunks) for types used in tests. Unused types can either produce stubs or no code at all depending on the pruning level. + +| Level | Description | +| --- | --- | +| `disable` | Always generate full thunks regardless of usage in tests. | +| `stub` | Generate partial definitions filled with `fatalError`. | +| `omit` | Don’t generate any definitions for unused types. | + +### Dependency Injection + +Usage is determined by statically analyzing test target sources for calls to `mock(SomeType.self)`, which may not work out of the box for projects that indirectly synthesize types such as through Objective-C based dependency injection. + +- **Option 1:** Explicitly reference each indirectly synthesized type in your tests, e.g. `_ = mock(SomeType.self)`. References can be placed anywhere in the test target sources, such as in the `setUp` method of a test case or in a single file. +- **Option 2:** Disable pruning entirely by setting the prune level with `--prune disable`. Note that this may increase compilation times for large projects. diff --git a/Sources/Mockingbird.docc/Collections/Matching-Arguments.md b/Sources/Mockingbird.docc/Pages/Essentials/Matching-Arguments.md similarity index 100% rename from Sources/Mockingbird.docc/Collections/Matching-Arguments.md rename to Sources/Mockingbird.docc/Pages/Essentials/Matching-Arguments.md diff --git a/Sources/Mockingbird.docc/Collections/Mocking.md b/Sources/Mockingbird.docc/Pages/Essentials/Mocking.md similarity index 87% rename from Sources/Mockingbird.docc/Collections/Mocking.md rename to Sources/Mockingbird.docc/Pages/Essentials/Mocking.md index 2d48e3a5..f426b245 100644 --- a/Sources/Mockingbird.docc/Collections/Mocking.md +++ b/Sources/Mockingbird.docc/Pages/Essentials/Mocking.md @@ -4,7 +4,7 @@ Create test doubles of Swift and Objective-C types. ## Overview -Mocks can be passed as instances of the original type, recording any calls they receive for later verification. Note that mocks are strict by default, meaning that calls to unstubbed non-void methods will trigger a test failure. To create a relaxed or “loose” mock, use a [default value provider](#stub-as-a-relaxed-mock). +Mocks can be passed as instances of the original type, recording any calls they receive for later verification. Note that mocks are strict by default, meaning that calls to unstubbed non-void methods will trigger a test failure. To create a relaxed or “loose” mock, use a default value provider when . ```swift // Swift types @@ -18,7 +18,7 @@ let classMock = mock(MyClass.self) ### Mock Swift Classes -Swift class mocks rely on subclassing the original type which comes with a few [known limitations](https://github.com/birdrides/mockingbird/wiki/Known-Limitations). When creating a Swift class mock, you must initialize the instance by calling `initialize(…)` with appropriate values. +Swift class mocks rely on subclassing the original type which comes with a few . When creating a Swift class mock, you must initialize the instance by calling `initialize(…)` with appropriate values. ```swift class Tree { diff --git a/Sources/Mockingbird.docc/Collections/ObjC-Stubbing-Operator.md b/Sources/Mockingbird.docc/Pages/Essentials/ObjC-Stubbing-Operator.md similarity index 95% rename from Sources/Mockingbird.docc/Collections/ObjC-Stubbing-Operator.md rename to Sources/Mockingbird.docc/Pages/Essentials/ObjC-Stubbing-Operator.md index 860590ab..db72e66a 100644 --- a/Sources/Mockingbird.docc/Collections/ObjC-Stubbing-Operator.md +++ b/Sources/Mockingbird.docc/Pages/Essentials/ObjC-Stubbing-Operator.md @@ -1,10 +1,6 @@ # Objective-C Stubbing Operator -This is an abstract - -## Overview - -This is the overview section +Objective-C specific overloads for the stubbing operator. ## Topics diff --git a/Sources/Mockingbird.docc/Collections/Stubbing.md b/Sources/Mockingbird.docc/Pages/Essentials/Stubbing.md similarity index 95% rename from Sources/Mockingbird.docc/Collections/Stubbing.md rename to Sources/Mockingbird.docc/Pages/Essentials/Stubbing.md index 01ef8211..68bb735e 100644 --- a/Sources/Mockingbird.docc/Collections/Stubbing.md +++ b/Sources/Mockingbird.docc/Pages/Essentials/Stubbing.md @@ -186,7 +186,7 @@ given(bird.name) - ``lastSetValue(initial:)`` -### Sequential Stubbing +### Stubbing Sequences - ``/documentation/Mockingbird/sequence(of:)-7dfhm`` - ``/documentation/Mockingbird/sequence(of:)-2t65o`` @@ -195,7 +195,7 @@ given(bird.name) - ``/documentation/Mockingbird/finiteSequence(of:)-73crl`` - ``/documentation/Mockingbird/finiteSequence(of:)-7srgo`` -### Objective-C Argument Position +### Objective-C Arguments - ``firstArg(_:)`` - ``secondArg(_:)`` @@ -204,11 +204,14 @@ given(bird.name) - ``fifthArg(_:)`` - ``arg(_:at:)`` -### Default Value Providing +### Providing Default Values - ``Providable`` - ``ValueProvider`` -### Operator +### Stubbing Operator -- +- ``/documentation/Mockingbird/~_(_:_:)-6m8gw`` +- ``/documentation/Mockingbird/~_(_:_:)-3eb81`` +- ``/documentation/Mockingbird/~_(_:_:)-6yox8`` +- ``/documentation/Mockingbird/~_(_:_:)-3to0j`` diff --git a/Sources/Mockingbird.docc/Collections/Verification.md b/Sources/Mockingbird.docc/Pages/Essentials/Verification.md similarity index 98% rename from Sources/Mockingbird.docc/Collections/Verification.md rename to Sources/Mockingbird.docc/Pages/Essentials/Verification.md index 692e3706..9285078c 100644 --- a/Sources/Mockingbird.docc/Collections/Verification.md +++ b/Sources/Mockingbird.docc/Pages/Essentials/Verification.md @@ -142,9 +142,8 @@ verify(bird.getMessage()).returning(String.self).wasCalled() - ``/documentation/Mockingbird/not(_:)-7i8si`` - ``/documentation/Mockingbird/not(_:)-8uq76`` -### Advanced +### Advanced Verification - ``ArgumentCaptor`` - ``inOrder(with:file:line:_:)`` -- ``OrderedVerificationOptions`` - ``eventually(_:_:)`` diff --git a/Sources/Mockingbird.docc/Pages/Getting Started/Carthage-QuickStart.md b/Sources/Mockingbird.docc/Pages/Getting Started/Carthage-QuickStart.md new file mode 100644 index 00000000..5cda105e --- /dev/null +++ b/Sources/Mockingbird.docc/Pages/Getting Started/Carthage-QuickStart.md @@ -0,0 +1,66 @@ +# Carthage Quick Start Guide + +Integrate Mockingbird into a Carthage Xcode project. + +### 1. Add the framework + +Add the framework to your `Cartfile`. + +``` +github "birdrides/mockingbird" ~> 0.19 +``` + +In your project directory, build the framework and link it to your test target. + +```console +$ carthage update --use-xcframeworks +``` + +### 2. Configure a test target + +Configure a test target to automatically call the generator before each test run. + +```console +$ Carthage/Checkouts/mockingbird/mockingbird configure MyAppTests -- --targets MyApp MyLibrary1 MyLibrary2 +``` + +The `--targets` option after the floating double-dash tells the generator which source targets should be mocked. There are a number of options available such as only mocking protocols and disabling all SwiftLint rules: + +```console +$ Carthage/Checkouts/mockingbird/mockingbird configure MyAppTests -- \ + --targets MyApp MyLibrary1 MyLibrary2 + --only-protocols \ + --disable-swiftlint +``` + +If you don’t want to add a build phase to a test target, you can also manually run the generator—but this isn’t the recommended workflow. + +```console +$ Carthage/Checkouts/mockingbird/mockingbird generate \ + --testbundle MyAppTests \ + --targets MyApp MyLibrary1 MyLibrary2 \ + --output-dir /path/to/MyAppTests +``` + +See and for all available options. + +### Recommended + +Exclude generated files, binaries, and caches from source control to prevent merge conflicts. + +```bash +# Generated +*.generated.swift + +# Binaries +Carthage/Checkouts/mockingbird/bin/ + +# Caches +**/*.xcodeproj/MockingbirdCache/ +``` + +### Need Help? + +- [#mockingbird Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) +- [Carthage example project](https://github.com/birdrides/mockingbird/tree/master/Examples/CarthageExample) +- diff --git a/Sources/Mockingbird.docc/Pages/Getting Started/CocoaPods-QuickStart.md b/Sources/Mockingbird.docc/Pages/Getting Started/CocoaPods-QuickStart.md new file mode 100644 index 00000000..b4f08915 --- /dev/null +++ b/Sources/Mockingbird.docc/Pages/Getting Started/CocoaPods-QuickStart.md @@ -0,0 +1,69 @@ +# CocoaPods Quick Start Guide + +Integrate Mockingbird into a CocoaPods Xcode project. + +### 1. Add the framework + +Add the framework to a test target in your `Podfile`, making sure to include the `use_frameworks!` option. + +```ruby +target 'MyAppTests' do + use_frameworks! + pod 'MockingbirdFramework', '~> 0.19' +end +``` + +In your project directory, initialize the pod. + +```console +$ pod install +``` + +### 2. Configure the test target + +Configure the test target to automatically call the generator before each test run. + +```console +$ Pods/MockingbirdFramework/mockingbird configure MyAppTests -- --targets MyApp MyLibrary1 MyLibrary2 +``` + +The `--targets` option after the floating double-dash tells the generator which source targets should be mocked. There are a number of options available such as only mocking protocols and disabling all SwiftLint rules: + +```console +$ Pods/MockingbirdFramework/mockingbird configure MyAppTests -- \ + --targets MyApp MyLibrary1 MyLibrary2 + --only-protocols \ + --disable-swiftlint +``` + +If you don’t want to add a build phase to the test target, you can also manually run the generator—but this isn’t the recommended workflow. + +```console +$ Pods/MockingbirdFramework/mockingbird generate \ + --testbundle MyAppTests \ + --targets MyApp MyLibrary1 MyLibrary2 \ + --output-dir /path/to/MyAppTests +``` + +See and for all available options. + +### Recommended + +Exclude generated files, binaries, and caches from source control to prevent merge conflicts. + +```bash +# Generated +*.generated.swift + +# Binaries +Pods/MockingbirdFramework/mockingbird/bin/ + +# Caches +**/*.xcodeproj/MockingbirdCache/ +``` + +### Need Help? + +- [#mockingbird Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) +- [CocoaPods example project](https://github.com/birdrides/mockingbird/tree/master/Examples/CocoaPodsExample) +- diff --git a/Sources/Mockingbird.docc/Articles/SwiftPM-Package-QuickStart.md b/Sources/Mockingbird.docc/Pages/Getting Started/SPM-Package-QuickStart.md similarity index 59% rename from Sources/Mockingbird.docc/Articles/SwiftPM-Package-QuickStart.md rename to Sources/Mockingbird.docc/Pages/Getting Started/SPM-Package-QuickStart.md index 7f4c9b68..ef2bae85 100644 --- a/Sources/Mockingbird.docc/Articles/SwiftPM-Package-QuickStart.md +++ b/Sources/Mockingbird.docc/Pages/Getting Started/SPM-Package-QuickStart.md @@ -1,9 +1,13 @@ -# SwiftPM Quick Start Guide - Package Manifest +# SPM Package Quick Start Guide -Integrate Mockingbird into a SwiftPM package manifest. +Integrate Mockingbird into a SwiftPM package. ## Overview +This guide is for SwiftPM packages with a `Package.swift` manifest. If you have an Xcode project that uses SwiftPM, please see the instead. + +### 1. Add the framework + Add Mockingbird as a package and test target dependency in your `Package.swift` manifest. ```swift @@ -24,6 +28,8 @@ In your package directory, initialize the dependency. $ swift package update Mockingbird ``` +### 2. Create a script + Next, create a Bash script called `gen-mocks.sh` in the same directory as your package manifest. Copy the example below, making sure to change the lines marked with `FIXME`. ```bash @@ -40,33 +46,30 @@ swift package describe --type json > project.json Ensure that the script runs and generates mock files. ```console -$ chmod u+x gen-mocks.sh +$ chmod +x gen-mocks.sh $ ./gen-mocks.sh Generated file to MockingbirdMocks/MyPackageTests-MyPackage.generated.swift Generated file to MockingbirdMocks/MyPackageTests-MyLibrary1.generated.swift Generated file to MockingbirdMocks/MyPackageTests-MyLibrary2.generated.swift ``` -Finally, add each generated mock file to your test target sources. +### Recommended -```swift -.testTarget( - name: "MyPackageTests", - dependencies: ["Mockingbird"], - sources: [ - "Tests/MyPackageTests", - "MockingbirdMocks/MyPackageTests-MyPackage.generated.swift", - "MockingbirdMocks/MyPackageTests-MyLibrary1.generated.swift", - "MockingbirdMocks/MyPackageTests-MyLibrary2.generated.swift", - ]), -``` +Exclude generated files, binaries, and caches from source control to prevent merge conflicts. + +```bash +# Generated +*.generated.swift -## Recommended +# Binaries +lib_InternalSwiftSyntaxParser.dylib -- [Exclude generated files from source control](https://github.com/birdrides/mockingbird/wiki/Integration-Tips#source-control-exclusion) +# Caches +.mockingbird/ +``` ## Need Help? -- [Join the #mockingbird Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) -- [Search the troubleshooting guide for common issues](https://github.com/birdrides/mockingbird/wiki/Troubleshooting) -- [Check out the SPM Xcode project example](https://github.com/birdrides/mockingbird/tree/master/Examples/SPMPackageExample) +- [#mockingbird Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) +- [SwiftPM example package](https://github.com/birdrides/mockingbird/tree/master/Examples/SPMPackageExample) +- diff --git a/Sources/Mockingbird.docc/Pages/Getting Started/SPM-Project-QuickStart.md b/Sources/Mockingbird.docc/Pages/Getting Started/SPM-Project-QuickStart.md new file mode 100644 index 00000000..be395292 --- /dev/null +++ b/Sources/Mockingbird.docc/Pages/Getting Started/SPM-Project-QuickStart.md @@ -0,0 +1,68 @@ +# SPM Project Quick Start Guide + +Integrate Mockingbird into a SwiftPM Xcode project. + +## Overview + +This guide is for Xcode projects that use SwiftPM to manage dependencies. If you have a SwiftPM package, please see the instead. + +### 1. Add the framework + +Add the framework to your Xcode project: + +1. Navigate to **File › Add Packages…** and enter “https://github.com/birdrides/mockingbird” +2. Change **Dependency Rule** to **Up to Next Minor Version** and enter “0.19.0” +3. Click **Add Package** +4. Select your test target and click **Add Package** + +### 2. Configure the test target + +In your project directory, resolve the derived data path. This can take a few moments. + +```console +$ DERIVED_DATA="$(xcodebuild -showBuildSettings | sed -n 's|.*BUILD_ROOT = \(.*\)/Build/.*|\1|p')" +``` + +Configure the test target to automatically call the generator before each test run. + +```console +$ "${DERIVED_DATA}/SourcePackages/checkouts/mockingbird/mockingbird" configure MyAppTests -- --targets MyApp MyLibrary1 MyLibrary2 +``` + +The `--targets` option after the floating double-dash tells the generator which source targets should be mocked. There are a number of options available such as only mocking protocols and disabling all SwiftLint rules: + +```console +$ "${DERIVED_DATA}/SourcePackages/checkouts/mockingbird/mockingbird" configure MyAppTests -- \ + --targets MyApp MyLibrary1 MyLibrary2 + --only-protocols \ + --disable-swiftlint +``` + +If you don’t want to add a build phase to the test target, you can also manually run the generator—but this isn’t the recommended workflow. + +```console +$ "${DERIVED_DATA}/SourcePackages/checkouts/mockingbird/mockingbird" generate \ + --testbundle MyAppTests \ + --targets MyApp MyLibrary1 MyLibrary2 \ + --output-dir /path/to/MyAppTests +``` + +See and for all available options. + +### Recommended + +Exclude generated files, binaries, and caches from source control to prevent merge conflicts. + +```bash +# Generated +*.generated.swift + +# Caches +**/*.xcodeproj/MockingbirdCache/ +``` + +### Need Help? + +- [#mockingbird Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) +- [SwiftPM example project](https://github.com/birdrides/mockingbird/tree/master/Examples/SPMProjectExample) +- diff --git a/Sources/Mockingbird.docc/Pages/Meta/Feature-Comparison.md b/Sources/Mockingbird.docc/Pages/Meta/Feature-Comparison.md new file mode 100644 index 00000000..f5f65afa --- /dev/null +++ b/Sources/Mockingbird.docc/Pages/Meta/Feature-Comparison.md @@ -0,0 +1,58 @@ +# Feature Comparison Table + +Compare Swift mocking frameworks by features. + +## Overview + +| **Legend** | | | +| --- | --- | --- | +| ✅ Full support | ✴️ Partial support | ❌ No support | + +| | Mockingbird | Cuckoo | SwiftyMocky | Mockolo | +| --- | --- | --- | --- | --- | +| Protocol Mocks | ✅ | ✅ | ✅ | ✅ | +| Class Mocks | ✅ | ✅ | ❌ | ✅ | +| Partial Class Mocks | ✅ | ✅ | ❌ | ❌ | +| Partial Protocol Mocks | ✅ | ❌ | ❌ | ❌ | +| Objective-C Mocks | ✅ | ✴️ | ❌ | ❌ | +| | | | | +| Protocol Inheritance | ✅ | ✅ | ✅ | ✅ | +| Class Inheritance | ✅ | ✅ | ❌ | ✅ | +| External Type Inheritance | ✅ | ❌ | ❌ | ✴️ | +| | | | | +| Mock Methods | ✅ | ✅ | ✅ | ✅ | +| Mock Properties | ✅ | ✅ | ✅ | ✅ | +| Mock Subscripts | ✅ | ❌ | ✅ | ✅ | +| Mock Static Methods | ✅ | ❌ | ✅ | ✅ | +| Mock Static Properties | ✅ | ❌ | ✅ | ✅ | +| | | | | +| Stub Returning Value | ✅ | ✅ | ✅ | ✅ | +| Stub Throwing Errors | ✅ | ✅ | ✅ | ✅ | +| Stub Parameterized Method | ✅ | ✅ | ✅ | ✅ | +| Stub Variadic Parameters | ✅ | ❌ | ❌ | ✅ | +| Stub Inout Parameters | ✅ | ❌ | ✅ | ✴️ | +| Stub Sequences | ✅ | ✅ | ✅ | ✴️ | +| | | | | +| Protocol Level Generics | ✅ | ✴️ | ✴️ | ✴️ | +| Class Level Generics | ✅ | ✴️ | ❌ | ✴️ | +| Function Level Generics | ✅ | ✅ | ✅ | ✴️ | +| Subscript Generics | ✅ | ❌ | ✅ | ✴️ | +| | | | | +| Nested Classes | ✅ | ❌ | ❌ | ❌ | +| Type Aliasing | ✅ | ✅ | ✅ | ✅ | +| Fully-Qualified Types | ✅ | ❌ | ❌ | ❌ | +| Compilation Conditions | ✅ | ❌ | ❌ | ❌ | +| | | | | +| Exact Argument Matching | ✅ | ✅ | ✅ | ✅ | +| Wildcard Argument Matching | ✅ | ✅ | ✅ | ✴️ | +| | | | | +| Relaxed Mocks | ✅ | ✴️ | ❌ | ✅ | +| In Order Verification | ✅ | ❌ | ❌ | ✴️ | +| Asynchronous Verification | ✅ | ❌ | ❌ | ✴️ | +| Thread-Safe Testing | ✅ | ❌ | ❌ | ❌ | +| Argument Capturing | ✅ | ✅ | ✅ | ✴️ | +| | | | | +| No Prod Code Changes | ✅ | ✅ | ❌ | ❌ | +| Xcode Integration | ✅ | ❌ | ❌ | ❌ | +| Source File Exclusion | ✅ | ✅ | ✅ | ✅ | +| Generated Output Caching | ✅ | ✅ | ❌ | ❌ | diff --git a/Sources/Mockingbird.docc/Collections/Internal.md b/Sources/Mockingbird.docc/Pages/Meta/Internal.md similarity index 88% rename from Sources/Mockingbird.docc/Collections/Internal.md rename to Sources/Mockingbird.docc/Pages/Meta/Internal.md index 54e7605b..a313e5d1 100644 --- a/Sources/Mockingbird.docc/Collections/Internal.md +++ b/Sources/Mockingbird.docc/Pages/Meta/Internal.md @@ -1,10 +1,6 @@ -# Internal +# Internal APIs -Abstract - -## Overview - -Overview +Functionality not designed for general use. ## Topics @@ -23,12 +19,13 @@ Overview - ``StaticStubbingManager`` - ``ForwardingContext`` - ``ImplementationProvider`` +- ### Verification - ``VerificationManager`` -### Test API +### Testing - ``swizzleTestFailer(_:)`` - ``documentation/Mockingbird/mock(_:)-kz0y`` @@ -44,6 +41,7 @@ Overview - ``SelectorType`` - ``CountMatcher`` - ``ArgumentMatcher`` +- ``OrderedVerificationOptions`` ### Objective-C diff --git a/Sources/Mockingbird.docc/Pages/Meta/Known-Limitations.md b/Sources/Mockingbird.docc/Pages/Meta/Known-Limitations.md new file mode 100644 index 00000000..87caa0c4 --- /dev/null +++ b/Sources/Mockingbird.docc/Pages/Meta/Known-Limitations.md @@ -0,0 +1,43 @@ +# Known Limitations + +List of unsupported or missing features in the framework. + +## Overview + +| **Legend** | | | +| --- | --- | --- | +| ✅ Supported | ✴️ Not implemented | ❌ Unsupported due to Swift limitations | + +_(Empty entries indicate that the feature is not applicable for the given mock type.)_ + +| | Swift Protocols | Swift Classes | @objc Swift Classes | Obj-C Objects | +| --- | --- | --- | --- | --- | +| **Extensions** | | | | +| Swift Extension Method | ❌ | ❌ | ❌ | ❌ | +| Swift Extension Property | ❌ | ❌ | ❌ | ❌ | +| Obj-C Extension Method | ❌ | ❌ | ❌ | ✅ | +| Obj-C Extension Property | ❌ | ❌ | ❌ | ✅ | +| | | | | +| **Static Members** | | | | +| Static Methods | ✅ | ✅ | ✴️ | ✴️ | +| Static Properties | ✅ | ✅ | ✴️ | ✴️ | +| Static Subscripts | ✴️ | ✴️ | ✴️ | | +| | | | | +| **Mocking** | | | | +| Parameterless Initialization | ✅ | ❌ | ✅ | ✅ | +| Superclass Forwarding | | ✅ | ✅ | | +| Generic Partial Mocks | ✴️ | ✴️ | ✴️ | | +| | | | | +| **Objective-C** | | | | +| Obj-C Dynamic Properties | | | | ✴️ | +| | | | | +| **Modifiers** | | | | +| Swift Final Keyword | | ❌ | ✅ | | +| Swift Unavailable Method | ✴️ | ✴️ | ✴️ | | +| Swift Unavailable Property | ✴️ | ✴️ | ✴️ | | +| | | | | +| **Swift 5.5** | | | | +| Swift Async Method | ✴️ | ✴️ | | | +| Swift Actors | ✴️ | ✴️ | | | +| | | | | +| (This row is intentionally left blank for table formatting.) | | | | | diff --git a/Sources/Mockingbird.docc/Pages/Meta/Local-Development.md b/Sources/Mockingbird.docc/Pages/Meta/Local-Development.md new file mode 100644 index 00000000..3ea7e763 --- /dev/null +++ b/Sources/Mockingbird.docc/Pages/Meta/Local-Development.md @@ -0,0 +1,56 @@ +# Local Development + +Build and run Mockingbird from source. + +### Environment Setup + +Clone the repo. + +```console +$ git clone https://github.com/birdrides/mockingbird +$ cd mockingbird +``` + +Load the preset Xcode schemes. This step is optional but recommended. + +```console +$ Sources/MockingbirdAutomationCli/buildAndRun.sh configure load +``` + +Open the Xcode project in Xcode 13.2 or later. + +```console +$ open Mockingbird.xcodeproj +``` + +### Building from Source + +Mockingbird products can be built from source using either Xcode or Swift Package Manager. The build automation script provides a straightforward way to build artifacts and optionally archive them for distribution. + +#### Generator + +Use the build automation script which outputs a binary into `.build/release/mockingbird`. + +```console +$ Sources/MockingbirdAutomationCli/buildAndRun.sh build generator +``` + +You can also bundle the binary with the necessary libraries. + +```console +$ Sources/MockingbirdAutomationCli/buildAndRun.sh build generator --archive mockingbird.zip +``` + +#### Framework + +Use the build automation script which uses Carthage to create a fat XCFramework bundle containing all supported platforms. + +```console +$ Sources/MockingbirdAutomationCli/buildAndRun.sh build framework +``` + +For quicker builds, you can specify the target platforms to build against. + +```console +$ Sources/MockingbirdAutomationCli/buildAndRun.sh build framework --platforms iOS macOS +``` diff --git a/Sources/Mockingbird.docc/Mockingbird.md b/Sources/Mockingbird.docc/Pages/Mockingbird.md similarity index 72% rename from Sources/Mockingbird.docc/Mockingbird.md rename to Sources/Mockingbird.docc/Pages/Mockingbird.md index bc4b4081..2c7d5c6d 100644 --- a/Sources/Mockingbird.docc/Mockingbird.md +++ b/Sources/Mockingbird.docc/Pages/Mockingbird.md @@ -10,14 +10,14 @@ Mockingbird makes it easy to mock, stub, and verify objects in Swift unit tests. Mockingbird’s syntax takes inspiration from (OC)Mockito but was designed to be “Swifty” in terms of type safety, expressiveness, and readability. In addition to the basics, it provides functionality for advanced features such as creating partial mocks, verifying the order of calls, and testing asynchronous code. -Conceptually, Mockingbird uses codegen to statically mock Swift types at compile time and `NSProxy` to dynamically mock Objective-C types at run time. The approach is similar to other mocking frameworks that augment Swift’s limited introspection capabilities through codegen, but there are a few key differences: +Conceptually, Mockingbird uses codegen to statically mock Swift types at compile time and `NSProxy` to dynamically mock Objective-C types at run time. Although the approach is similar to other frameworks that augment Swift’s limited introspection capabilities with codegen, there are a few key differences: - Generating mocks takes seconds instead of minutes on large Swift codebases. - Stubbing and verification failures appear inline and don’t abort the entire test run. - Production code is kept separate from tests and never modified with annotations. - Xcode projects can be used as the source of truth to automatically determine source files. -See a detailed [feature comparison table](https://github.com/birdrides/mockingbird/wiki/Alternatives-to-Mockingbird#feature-comparison) and [known limitations](https://github.com/birdrides/mockingbird/wiki/Known-Limitations). +See the and . ### Example @@ -47,16 +47,39 @@ Mockingbird powers thousands of tests at companies including [Meta](https://meta - - -- -- +- +- -### Usage +### Essentials - - - - -### Advanced +### Command Line Interface +- +- +- +- +- + +### Advanced Topics + +- +- +- + +### Troubleshooting + +- +- +- + +### Meta + +- +- +- - diff --git a/Sources/Mockingbird.docc/Pages/Troubleshooting/Common-Problems.md b/Sources/Mockingbird.docc/Pages/Troubleshooting/Common-Problems.md new file mode 100644 index 00000000..c3d18a1f --- /dev/null +++ b/Sources/Mockingbird.docc/Pages/Troubleshooting/Common-Problems.md @@ -0,0 +1,54 @@ +# Common Problems + +Look up solutions to common issues. + +## Overview + +Need help? Join the [#mockingbird Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) or +[file an issue](https://github.com/birdrides/mockingbird/issues/new/choose). + +> Note: The problems below are ordered by how far in the setup process they would occur. + +### Mocks don’t exist or are out of date + +Mocks are generated when the test target is built. Build for testing (⇧⌘U) or run any test case (⌘U) and check that generated mock files appear in `$(SRCROOT)/MockingbirdMocks`. If no files are generated then something is wrong with the installation. See for more information. + +### The generated file contains no mocks + +By default, mocks are only generated for types used in your tests; see for more information. Try mocking a type with `mock(SomeType.self)` and then build for testing (⇧⌘U). If no mocks appear in the generated file then something is wrong with the installation. See for more information. + +### Compiler error in generated mock file + +You may have found a (rare) generator bug. Try , , or [filing an issue](https://github.com/birdrides/mockingbird/issues/new/choose). + +### Supporting source files do not compile + +Supporting source files should not be imported into Xcode. If you want to use Xcode to add or modify supporting source files, make sure they are not added as sources to any targets. + +### Mocks are not generated for external types in third-party frameworks or libraries + +Please see for details and best practices. + +### Trying to mock a type shows a compiler error + +There are a few common issues that might prevent generated types from being mocked. See for a list of compile time errors generated by Mockingbird and how to resolve them. + +### Cannot call stubbing or verification functions + +Ensure that Mockingbird is imported at the top of the test file. + +### Expression type is ambiguous without more context error + +This usually happens when trying to stub or verify a mock that was explicitly coerced into its supertype. Make sure the variable storing the mock has the concrete mock type, e.g. `MyTypeMock` instead of `MyType`. + +### Tests crash with an unable to load framework, image not found error + +Link Mockingbird and ensure that it’s included in the test bundle by adding it to the “Copy Files” build phase. + +### Tests crash with a fatal error containing a message about “thunk stubs” + +Mockingbird only generates mocking code (known as thunks) for types referenced in tests. Some projects that indirectly reference types may incorrectly encounter thunk stubs in tests. See for more information and resolution steps. + +### Unable to stub or verify methods with parameters + +Ensure that all parameter types explicitly conform to `Equatable` or can be compared by reference. Note that `struct` types that _implicitly_ conform to `Equatable` have undefined behavior. Use a wildcard argument matcher such as `any()` or `any(where:)` to match non-equatable or implicitly equatable types. See for all available matchers. diff --git a/Sources/Mockingbird.docc/Pages/Troubleshooting/Debugging-the-Generator.md b/Sources/Mockingbird.docc/Pages/Troubleshooting/Debugging-the-Generator.md new file mode 100644 index 00000000..b9acf18c --- /dev/null +++ b/Sources/Mockingbird.docc/Pages/Troubleshooting/Debugging-the-Generator.md @@ -0,0 +1,23 @@ +# Debugging the Generator + +Debug the generator using the built-in diagnostic tools. + +### 1. Examine the build logs + +Open the Xcode report navigator and select the entry for the most recent test run. + +![Xcode report navigator](report-navigator) + +Check for any errors or warnings in the build log for the test target build phase named “Generate Mockingbird Mocks.” + +![Build log error message](build-log) + +### 2. Increase the logging verbosity + +Configure the test target with `--verbose` and `--diagnostics all` after the double-dash to output full debugging information into the build log. See for examples. + +### 3. Attach a debugger + +You can always attach a debugger to the generator if the build logs don’t contain the necessary information. Set up a environment and configure the `MockingbirdCli` scheme (⌘<) with the same launch arguments and working directory as configured build phase. + +![MockingbirdCli launch arguments](launch-args) diff --git a/Sources/Mockingbird.docc/Pages/Troubleshooting/Generator-Diagnostics.md b/Sources/Mockingbird.docc/Pages/Troubleshooting/Generator-Diagnostics.md new file mode 100644 index 00000000..8b60b81c --- /dev/null +++ b/Sources/Mockingbird.docc/Pages/Troubleshooting/Generator-Diagnostics.md @@ -0,0 +1,114 @@ +# Generator Diagnostics + +Output Xcode diagnostic warnings and errors when generating mocks. + +## Diagnostic Warnings + +Specify diagnostic types that should be included in the `--diagnostics` generator option. + +| Diagnostic | Description | +| --- | --- | +| `all` | Emit all diagnostic warnings. | +| `not-mockable` | Warn when skipping declarations that cannot be mocked. | +| `undefined-type` | Warn on external types not defined in a supporting source file. | +| `type-inference` | Warn when skipping complex property assignments in class mocks. | + +## Runtime Test Failures + +Test failures typically occur when evaluating `verify` statements and will show up in the Xcode “Test navigator” sidebar. + +| **Error** | | +| --- | --- | +| Missing stubbed implementation for '``' | + +A mocked method that must return a value was called without a stubbed implementation. This error is fatal and Mockingbird will try to gracefully stop the current test run without affecting other tests. Note that stubbed implementation errors will be attributed to the line where the mock was initialized, rather than the specific test case due to limitations with XCTest. + +| **Error** | +| --- | +| Got [``] invocations of '``' but expected `` | + +The actual number of invocations of a method did not match the expected count. Parameterized methods must have parameter types that explicitly conform to `Equatable` or be matched with a wildcard [argument matcher](https://github.com/birdrides/mockingbird#argument-matching). + +| **Error** | +| --- | +| Unable to simultaneously satisfy expectations | + +The recorded invocations did not pass the in order verification expectations. Due to ambiguity with which `verify` statement is actually responsible for the failure, the error is attributed to the enclosing in order block. + +| **Error** | +| --- | +| Got unexpected invocations `` '``' | + +In order verification failed for one of the optional invariants. Due to ambiguity with which expectation constraint is actually responsible for the failure, the error is attributed to the in order block. + +## Compile Time Generator Errors + +Mockingbird uses availability attributes and diagnostic errors to signal when there are known issues during code generation. This differs from errors caused by a misconfigured project (or more rarely, a generator bug) where the generated mock does not compile. + +| **Error** | +| --- | +| No generated mock for this type which might be resolved by building the test target (⇧⌘U) | + +The type being mocked does not exist in a generated mock file. The project may not be correctly configured or the target should be rebuilt to trigger the mock generation build phase. + +| **Error** | +| --- | +| '``' inherits from the externally-defined type '``' which needs to be declared in a supporting source file | + +The protocol being mocked inherits from a type defined outside of the project. In order to generate valid mocking code, the inherited type needs to be defined in a [supporting source file](https://github.com/birdrides/mockingbird#supporting-source-files). + +```swift +// Defined outside of the project, e.g. in a library +protocol ExternalProtocol { + func method() +} + +// Need to define `ExternalProtocol` in a supporting source file +protocol MyProtocol: ExternalProtocol {} +``` + +| **Error** | +| --- | +| '``' contains the property '`

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

+s(WgqBv--{_o6X%jpVG0k97KK?mMM%4w5L zw8^>a0eA{;{?Hu6X5~G$-Fdm!y!=DX^6M0)1c=dcckd3lS|uu4t-0o>US#RQL`{au zMW5Cm?1zTB?uP_VUkytR+XqArmPpc$lee>|g4}1ht%0|ks){9gZ^8!XN0lSy6W&*z z{bA!k$OgPkX&ekuW0)Td;t~1rP_`v2(3f+waEb#uP!afXW-2b9_lW*?m53ulqFuS; zPY0GhWtbNN{ev&qhH9EW3wxmK_lGz?Zo7V?BEt@|& zT$U+}^NHzKB2N&98<9H50dZ0C?2i{^|wSMQ=aa!8t^+IDiO4V83_6=-?9Z=1mVsTGz9dZQgwcP|#qg>Fxb( zhov-sB@yrHG9rEVlUk6B8^P#jdMw!SaN+oU0{_^K$z1>Vh~Ay+^odum0}N-B$hd|# zZ*bx!^oYor5w#t2-+P)Mh3*PV;dUkyd6=JF-uNeTt ze<_`|6cE$2Xb1OU1B5YGTbxzs`ObYRcHJd~enI2Dyg;>E8>DogAI9HZk5V4hfS!Q# z7?nJu?ik5sUsND^KJc;vhfVxe0zBBl`KDjbfHm!; ztm+E}Ju;xUAR7yTmsYZ|OPzG!q%U~K44yr{oHQps7-M%d|Eac0Kw$V}!&@fg!<{lf zo1JejUwV7Ko#${HNv8%#Q=7jIGF2fnh_oBto#0Q%w~v7=Ixal}tYy18T6dq1zvP-mKj02aW0WkIb!X5t|81{q%lqt#$4kf@fMxx^q zkKJ6fCV3Xv(i!W!9p=@RFBf%{qICmueZS^YlrTL>4mhJJTBNR|*8A4)6|LY;`S9tWp`i zt6z257Wp}vy)yOnJeHfBKRX6&xICx|=Tjs8@0;*o9T^fe&n^R(PjM@%hv!K0- zm=n6_%e=YWfX!!!$`o9(h=<@c68=rMkcKLeV5FG$ajRBiiT zim$sB|9qM6;aAb*wdeP36vAg36*`a0X|GL=|Emh;^28=qB5&|mVCSJgsO4@pvI_xk zPQASkOdvdz1BYJ^vTO&H0xsK%8|J&RUKfVn7lQ7u3l&vXK%(Msw=uyQ8-_b%>#8;! zDxFDW;4Cv{KWYCawh?i=_YjX3FDG;i*PRIDkZkJ90%bs$GtOMnWAf^=6e8Zb~gm60FII5tL3$!e2CoJ zprr@C#aNGoa`m2_p5;roF!S2S3&6Zn`-36mipH(cq;4MPrhlC>hzx~#4jm}y_HKiO z=*~n!4*j^adN(*Jb$x$^YN2~#7Kq1%)gck%lIE8Gyjul5!R;Sn^#!`1!Q>E1qS#GM%$#j)P7$Qnp4dKTrw1^{!DzZ;sZ50EWS>z4fQ)0UtxokfIVZwH5K>Es` zd-rq#y2UDu$bqIh5#8d+PZRnp|8N*GL#AA)3;5?2gLOfKWDlpuYD_G|0h}oj8%K+% z-imIqd0)~h9~_Eqabr#YRdjXw@GbAPJ65@C90$NEGopZ35&h^%vlVeR*wD&6i!O1!1f; P@ayt-O?S87Nn)SyBnk%zKb)z`j0c~d+XkH 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 NCoX?CTkO%Z{{^fAyJ`Rc literal 0 HcmV?d00001 diff --git a/Sources/Mockingbird.docc/Resources/report-navigator@2x.png b/Sources/Mockingbird.docc/Resources/report-navigator@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a622d0f1ced89f4939d566dde79aa103c43ed313 GIT binary patch literal 42318 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

-+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 F{{x4ofoK2# literal 0 HcmV?d00001 diff --git a/Sources/Mockingbird.docc/Resources/report-navigator~dark@2x.png b/Sources/Mockingbird.docc/Resources/report-navigator~dark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9b379ec280a1e501f2232e8b4d04c23d45440bba GIT binary patch literal 46942 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 Date: Wed, 5 Jan 2022 18:04:20 -1000 Subject: [PATCH 13/20] Add contributing guidelines and GitHub templates --- .github/CONTRIBUTING.md | 27 + .github/ISSUE_TEMPLATE/bug-report.md | 47 - .github/ISSUE_TEMPLATE/feature-request.md | 16 + .github/ISSUE_TEMPLATE/framework-issue.md | 35 + .github/ISSUE_TEMPLATE/generator-issue.md | 40 + .github/PULL_REQUEST_TEMPLATE/pull-request.md | 16 + CONTRIBUTING.md | 11 - README.md | 813 +----------------- 8 files changed, 154 insertions(+), 851 deletions(-) create mode 100644 .github/CONTRIBUTING.md delete mode 100644 .github/ISSUE_TEMPLATE/bug-report.md create mode 100644 .github/ISSUE_TEMPLATE/feature-request.md create mode 100644 .github/ISSUE_TEMPLATE/framework-issue.md create mode 100644 .github/ISSUE_TEMPLATE/generator-issue.md create mode 100644 .github/PULL_REQUEST_TEMPLATE/pull-request.md delete mode 100644 CONTRIBUTING.md diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 00000000..c898b34d --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,27 @@ +# Contributing to Mockingbird + +## Getting Started + +Welcome! We’re excited to have you as part of the Mockingbird developer community. + +- [Join the #mockingbird Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) +- [Check out the GitHub tasks board](https://github.com/birdrides/mockingbird/projects/2) +- [Search for good first issues](https://github.com/birdrides/mockingbird/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) + +## Issues and Bugs + +Before opening an issue, please search the [existing GitHub issues](https://github.com/birdrides/mockingbird/issues) and list of [common problems](https://mockingbirdswift.com/common-problems). Use one of the provided issue templates so that others have sufficient context to fix the issue. + +## Feature Requests + +Submit feature requests as a [GitHub issue](https://github.com/birdrides/mockingbird/issues/new/choose), using the provided “Feature Request” template. + +## Pull Requests + +Use the provided “Pull Request” template when submitting pull requests. If making a change to codegen or the testing runtime, make sure to update the end-to-end and/or framework tests. + +All pull requests are squash-merged into `master`. For large or complex changes, consider creating a stacked pull request and joining the [#mockingbird Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) to facilitate discussion. + +## Coding Guidelines + +Mockingbird loosely follows [Google’s Swift style guide](https://google.github.io/swift/). When in doubt, prefer consistency with existing conventions in the code. diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md deleted file mode 100644 index 19889c15..00000000 --- a/.github/ISSUE_TEMPLATE/bug-report.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve Mockingbird -title: '' -labels: '' -assignees: andrewchang-bird - ---- - -## New Issue Checklist - -- [ ] I updated my Mockingbird framework and CLI to the latest version -- [ ] I searched for [existing GitHub issues](https://github.com/birdrides/mockingbird/issues) - -## Description - -Please provide a clear and concise description of the bug. - -### Generator Bugs - -If the generator produces code that is malformed or does not compile, please provide: - -1. A minimal example of the original source -2. The actual mocking code generated -3. The expected mocking code that should be generated (or a description) - -If the generator is not producing code or crashing, please provide logging output from the Run Script Phase. See -[Debugging the generator](https://github.com/birdrides/mockingbird/wiki/Debugging-the-Generator) for more -information. - -```bash -$ mockingbird generate -``` - -### Framework Bugs - -Please provide a minimal example of your testing code, including any errors. - -## Environment - -* Mockingbird CLI version (`mockingbird version`) -* Xcode and macOS version (are you running a beta?) -* Swift version (`swift --version`) -* Installation method (CocoaPods, Carthage, from source, etc) -* Unit testing framework (XCTest, Quick + Nimble, etc) -* Does your project use `.mockingbird-ignore`? -* Are you using [supporting source files](https://github.com/birdrides/mockingbird#supporting-source-files)? diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md new file mode 100644 index 00000000..a8fed40a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -0,0 +1,16 @@ +--- +name: Feature Request +about: Submit a new feature request +title: '' +labels: 'enhancement' +assignees: '' + +--- + +## New Feature Request Checklist + +- [ ] I searched the [existing GitHub feature requests](https://github.com/birdrides/mockingbird/labels/enhancement) + +## Overview + +The expected behavior and use case. diff --git a/.github/ISSUE_TEMPLATE/framework-issue.md b/.github/ISSUE_TEMPLATE/framework-issue.md new file mode 100644 index 00000000..8cd362a2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/framework-issue.md @@ -0,0 +1,35 @@ +--- +name: Framework Issue +about: Report a problem with the testing framework +title: '' +labels: 'framework bug' +assignees: '' + +--- + +## New Issue Checklist + +- [ ] I updated the framework and generator to the latest version +- [ ] I searched the [existing GitHub issues](https://github.com/birdrides/mockingbird/issues) and list of [common problems](https://mockingbirdswift.com/common-problems) + +## Overview + +A summary of the issue. + +## Example + +A minimal example of the code being tested along with the test case. + +## Expected Behavior + +If needed, provide a short description of how it should work. + +## Environment + +* Mockingbird CLI version (`mockingbird version`) +* Xcode and Swift version (`swift --version`) +* Package manager (CocoaPods, Carthage, SPM project, SPM package) +* Unit testing framework (XCTest, Quick/Nimble) +* Custom configuration + - [ ] Mockingbird ignore files + - [ ] Supporting source files diff --git a/.github/ISSUE_TEMPLATE/generator-issue.md b/.github/ISSUE_TEMPLATE/generator-issue.md new file mode 100644 index 00000000..fb35f745 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/generator-issue.md @@ -0,0 +1,40 @@ +--- +name: Generator Issue +about: Report a problem with the code generator +title: '' +labels: 'generator bug' +assignees: '' + +--- + +## New Issue Checklist + +- [ ] I updated the framework and generator to the latest version +- [ ] I searched the [existing GitHub issues](https://github.com/birdrides/mockingbird/issues) and list of [common problems](https://mockingbirdswift.com/common-problems) + +## Overview + +A summary of the issue. + +## Example + +If the generator produces code that is malformed or does not compile, please provide: + +1. A minimal example of the original source +2. The actual mocking code generated + +If the generator is not producing code or crashing, please provide the build logs. + +## Expected Behavior + +If needed, provide a short description of how it should work. + +## Environment + +* Mockingbird CLI version (`mockingbird version`) +* Xcode and Swift version (`swift --version`) +* Package manager (CocoaPods, Carthage, SPM project, SPM package) +* Unit testing framework (XCTest, Quick/Nimble) +* Custom configuration + - [ ] Mockingbird ignore files + - [ ] Supporting source files diff --git a/.github/PULL_REQUEST_TEMPLATE/pull-request.md b/.github/PULL_REQUEST_TEMPLATE/pull-request.md new file mode 100644 index 00000000..1e68db84 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/pull-request.md @@ -0,0 +1,16 @@ +--- +name: Pull Request +about: Submit a new pull request +title: '' +labels: '' +assignees: '' + +--- + +## Overview + +The motivation for making this change, what it does, and any additional considerations. + +## Test Plan + +Demonstrate that the code is solid. For example, commands that you ran and their output. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index ad110e01..00000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,11 +0,0 @@ -# Contributing - -Thanks for taking the time to contribute! This document is currently a work in progress. - -## Setup - -Install required dependencies and configure the Xcode project. - -```bash -$ make setup-project -``` diff --git a/README.md b/README.md index 4380bfb3..14d9221c 100644 --- a/README.md +++ b/README.md @@ -1,824 +1,51 @@

- Mockingbird - Swift Mocking Framework + Mockingbird - Swift Mocking Framework

Mockingbird

Package managers - License - Slack channel + MIT licensed + #mockingbird Slack channel

-Mockingbird lets you mock, stub, and verify objects written in either Swift or Objective-C. The syntax takes inspiration from (OC)Mockito but was designed to be “Swifty” in terms of type safety and expressiveness. +Mockingbird makes it easy to mock, stub, and verify objects in Swift unit tests. You can test both Swift and Objective-C without writing any boilerplate or modifying production code. -```swift -// Mocking -let bird = mock(Bird.self) - -// Stubbing -given(bird.name).willReturn("Ryan") - -// Verification -verify(bird.fly()).wasCalled() -``` - -Mockingbird was built to reduce the number of “artisanal” hand-written mocks and make it easier to write tests at Bird. Conceptually, Mockingbird uses codegen to statically mock Swift types and `NSProxy` to dynamically mock Objective-C types. The approach is similar to other automatic Swift mocking frameworks and is unlikely to change due to Swift’s limited runtime introspection capabilities. - -That said, there are a few key differences from other frameworks: - -- Generating mocks takes seconds instead of minutes on large codebases with thousands of mocked types. -- Stubbing and verification failures appear inline and don’t abort the entire test run. -- Production code is kept separate from tests and never modified with annotations. -- Xcode projects can be used as the source of truth to automatically determine source files. - -See a detailed [feature comparison table](https://github.com/birdrides/mockingbird/wiki/Alternatives-to-Mockingbird#feature-comparison) and [known limitations](https://github.com/birdrides/mockingbird/wiki/Known-Limitations). - -### Who Uses Mockingbird? - -Mockingbird powers thousands of tests at companies including [Meta](https://meta.com), [Amazon](https://amazon.com), [Twilio](https://twilio.com), and [Bird](https://bird.co). Using Mockingbird to improve your testing workflow? Consider dropping us a line on the [#mockingbird Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw). - -### An Example - -Let’s say we wanted to test a `Person` class with a method that takes a `Bird`. - -```swift -protocol Bird { - var canFly: Bool { get } - func fly() -} - -class Person { - func release(_ bird: Bird) { - guard bird.canFly else { return } - bird.fly() - } -} -``` - -With Mockingbird, it’s easy to stub return values and verify that mocked methods were called. - -```swift -// Given a bird that can fly -let bird = mock(Bird.self) -given(bird.canFly).willReturn(true) - -// When a person releases the bird -Person().release(bird) - -// Then the bird flies away -verify(bird.fly()).wasCalled() -``` - -## Quick Start - -Select your preferred dependency manager below to get started. - -
CocoaPods - -Add the framework to a test target in your `Podfile`, making sure to include the `use_frameworks!` option. - -```ruby -target 'MyAppTests' do - use_frameworks! - pod 'MockingbirdFramework', '~> 0.19' -end -``` - -In your project directory, initialize the pod. - -```console -$ pod install -``` - -Finally, configure the test target to generate mocks for specific modules or libraries. - -> The configurator adds a build phase to the test target which automatically calls [`mockingbird generate`](#generate). You can pass additional arguments to the generator after the double-dash (`--`) or [manually set up targets](https://github.com/birdrides/mockingbird/wiki/Manual-Setup). - -```console -$ Pods/MockingbirdFramework/mockingbird configure MyAppTests -- --targets MyApp MyLibrary1 MyLibrary2 -``` - -Optional but recommended: - -- [Exclude generated files from source control](https://github.com/birdrides/mockingbird/wiki/Integration-Tips#source-control-exclusion) -- [Add supporting source files for compatibility with external dependencies](https://github.com/birdrides/mockingbird/wiki/Supporting-Source-Files) - -Have questions or issues? - -- [Join the Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) -- [Search the troubleshooting guide](https://github.com/birdrides/mockingbird/wiki/Troubleshooting) -- [Check out the CocoaPods example project](/Examples/CocoaPodsExample) +## Documentation -
+Visit [MockingbirdSwift.com](https://mockingbirdswift.com) for quick start guides, walkthroughs, and API reference articles. -
Carthage +## Examples -Add the framework to your `Cartfile`. - -``` -github "birdrides/mockingbird" ~> 0.19 -``` - -In your project directory, build the framework and [link it to your test target](https://github.com/birdrides/mockingbird/wiki/Linking-Test-Targets). +Automatically generating mocks. ```console -$ carthage update --use-xcframeworks +$ mockingbird configure BirdTests -- --target Bird ``` -Finally, configure the test target to generate mocks for specific modules or libraries. - -> The configurator adds a build phase to the test target which automatically calls [`mockingbird generate`](#generate). You can pass additional arguments to the generator after the double-dash (`--`) or [manually set up targets](https://github.com/birdrides/mockingbird/wiki/Manual-Setup). +Manually generating mocks. ```console -$ Carthage/Checkouts/mockingbird/mockingbird configure MyAppTests -- --targets MyApp MyLibrary1 MyLibrary2 -``` - -Optional but recommended: - -- [Exclude generated files from source control](https://github.com/birdrides/mockingbird/wiki/Integration-Tips#source-control-exclusion) -- [Add supporting source files for compatibility with external dependencies](https://github.com/birdrides/mockingbird/wiki/Supporting-Source-Files) - -Have questions or issues? - -- [Join the Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) -- [Search the troubleshooting guide](https://github.com/birdrides/mockingbird/wiki/Troubleshooting) -- [Check out the Carthage example project](/Examples/CarthageExample) - -
- -
SwiftPM - Xcode Project - -Add the framework to your project: - -1. Navigate to **File › Add Packages…** and enter `https://github.com/birdrides/mockingbird` -2. Change **Dependency Rule** to “Up to Next Minor Version” and enter `0.19.0` -3. Click **Add Package** -4. Select your test target and click **Add Package** - -In your project directory, resolve the derived data path. This can take a few moments. - -```console -$ DERIVED_DATA="$(xcodebuild -showBuildSettings | sed -n 's|.*BUILD_ROOT = \(.*\)/Build/.*|\1|p' -``` - -Finally, configure the test target to generate mocks for specific modules or libraries. - -> The configurator adds a build phase to the test target which automatically calls [`mockingbird generate`](#generate). You can pass additional arguments to the generator after the double-dash (`--`) or [manually set up targets](https://github.com/birdrides/mockingbird/wiki/Manual-Setup). - -```console -$ "${DERIVED_DATA}/SourcePackages/checkouts/mockingbird/mockingbird" configure MyPackageTests -- --targets MyPackage MyLibrary1 MyLibrary2 -``` - -Optional but recommended: - -- [Exclude generated files from source control](https://github.com/birdrides/mockingbird/wiki/Integration-Tips#source-control-exclusion) -- [Add supporting source files for compatibility with external dependencies](https://github.com/birdrides/mockingbird/wiki/Supporting-Source-Files) - -Have questions or issues? - -- [Join the Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) -- [Search the troubleshooting guide](https://github.com/birdrides/mockingbird/wiki/Troubleshooting) -- [Check out the SwiftPM Xcode project example](/Examples/SPMProjectExample) - -
- -
SwiftPM - Package Manifest - -Add Mockingbird as a package and test target dependency in your `Package.swift` manifest. - -```swift -let package = Package( - name: "MyPackage", - dependencies: [ - .package(name: "Mockingbird", url: "https://github.com/birdrides/mockingbird.git", .upToNextMinor(from: "0.19.0")), - ], - targets: [ - .testTarget(name: "MyPackageTests", dependencies: ["Mockingbird"]), - ] -) -``` - -In your package directory, initialize the dependency. - -```console -$ swift package update Mockingbird -``` - -Next, create a Bash script named `gen-mocks.sh` in the same directory as your package manifest. Copy the example below, making sure to change the lines marked with `FIXME`. - -```bash -#!/bin/bash -set -eu -cd "$(dirname "$0")" -swift package describe --type json > project.json -.build/checkouts/mockingbird/mockingbird generate --project project.json \ - --output-dir Sources/MyPackageTests/MockingbirdMocks \ # FIXME: Where mocks should be generated. - --testbundle MyPackageTests \ # FIXME: Name of your test target. - --targets MyPackage MyLibrary1 MyLibrary2 # FIXME: Specific modules or libraries that should be mocked. -``` - -Ensure that the script runs and generates mock files. - -```console -$ chmod u+x gen-mocks.sh -$ ./gen-mocks.sh -Generated file to MockingbirdMocks/MyPackageTests-MyPackage.generated.swift -Generated file to MockingbirdMocks/MyPackageTests-MyLibrary1.generated.swift -Generated file to MockingbirdMocks/MyPackageTests-MyLibrary2.generated.swift -``` - -Finally, add each generated mock file to your test target sources. - -```swift -.testTarget( - name: "MyPackageTests", - dependencies: ["Mockingbird"], - sources: [ - "Tests/MyPackageTests", - "MockingbirdMocks/MyPackageTests-MyPackage.generated.swift", - "MockingbirdMocks/MyPackageTests-MyLibrary1.generated.swift", - "MockingbirdMocks/MyPackageTests-MyLibrary2.generated.swift", - ]), -``` - -Optional but recommended: - -- [Exclude generated files from source control](https://github.com/birdrides/mockingbird/wiki/Integration-Tips#source-control-exclusion) -- [Add supporting source files for compatibility with external dependencies](https://github.com/birdrides/mockingbird/wiki/Supporting-Source-Files) - -Have questions or issues? - -- [Join the Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) -- [Search the troubleshooting guide](https://github.com/birdrides/mockingbird/wiki/Troubleshooting) -- [Check out the SwiftPM package manifest example](/Examples/SPMPackageExample) - -
- -## Usage - -Mockingbird provides a comprehensive [API reference](https://birdrides.github.io/mockingbird/latest/) generated with [SwiftDoc](https://github.com/SwiftDocOrg/swift-doc). - -1. [Mocking](#1-mocking) -2. [Stubbing](#2-stubbing) -3. [Verification](#3-verification) -4. [Argument Matching](#4-argument-matching) -5. [Advanced Topics](#5-advanced-topics) - -### 1. Mocking - -Mocks can be passed as instances of the original type, recording any calls they receive for later verification. Note that mocks are strict by default, meaning that calls to unstubbed non-void methods will trigger a test failure. To create a relaxed or “loose” mock, use a [default value provider](#stub-as-a-relaxed-mock). - -```swift -// Swift types -let protocolMock = mock(MyProtocol.self) -let classMock = mock(MyClass.self).initialize(…) - -// Objective-C types -let protocolMock = mock(MyProtocol.self) -let classMock = mock(MyClass.self) -``` - -#### Mock Swift Classes - -Swift class mocks rely on subclassing the original type which comes with a few [known limitations](https://github.com/birdrides/mockingbird/wiki/Known-Limitations). When creating a Swift class mock, you must initialize the instance by calling `initialize(…)` with appropriate values. - -```swift -class Tree { - init(height: Int) { assert(height > 0) } -} - -let tree = mock(Tree.self).initialize(height: 42) // Initialized -let tree = mock(Tree.self).initialize(height: 0) // Assertion failed (height ≤ 0) -``` - -#### Store Mocks - -Generated Swift mock types are suffixed with `Mock`. Avoid coercing mocks into their original type as stubbing and verification will no longer work. - -```swift -// Good -let bird: BirdMock = mock(Bird.self) // Concrete type is `BirdMock` -let bird = mock(Bird.self) // Inferred type is `BirdMock` - -// Avoid -let bird: Bird = mock(Bird.self) // Type is coerced into `Bird` -``` - -#### Reset Mocks - -You can reset mocks and clear specific metadata during test runs. However, resetting mocks isn’t usually necessary in well-constructed tests. - -```swift -reset(bird) // Reset everything -clearStubs(on: bird) // Only remove stubs -clearInvocations(on: bird) // Only remove recorded invocations -``` - -### 2. Stubbing - -Stubbing allows you to define custom behavior for mocks to perform. - -```swift -given(bird.name).willReturn("Ryan") // Return a value -given(bird.chirp()).willThrow(BirdError()) // Throw an error -given(bird.chirp(volume: any())).will { volume in // Call a closure - return volume < 42 -} -``` - -This is equivalent to the shorthand syntax using the stubbing operator `~>`. - -```swift -given(bird.name) ~> "Ryan" // Return a value -given(bird.chirp()) ~> { throw BirdError() } // Throw an error -given(bird.chirp(volume: any())) ~> { volume in // Call a closure - return volume < 42 -} -``` - -#### Stub Methods with Parameters - -[Match argument values](#4-argument-matching) to stub parameterized methods. Stubs added later have a higher precedence, so add stubs with specific matchers last. - -```swift -given(bird.chirp(volume: any())).willReturn(true) // Any volume -given(bird.chirp(volume: notNil())).willReturn(true) // Any non-nil volume -given(bird.chirp(volume: 10)).willReturn(true) // Volume = 10 -``` - -#### Stub Properties - -Properties can have stubs on both their getters and setters. - -```swift -given(bird.name).willReturn("Ryan") -given(bird.name = any()).will { (name: String) in - print("Hello \(name)") -} - -print(bird.name) // Prints "Ryan" -bird.name = "Sterling" // Prints "Hello Sterling" -``` - -This is equivalent to using the synthesized getter and setter methods. - -```swift -given(bird.getName()).willReturn("Ryan") -given(bird.setName(any())).will { (name: String) in - print("Hello \(name)") -} - -print(bird.name) // Prints "Ryan" -bird.name = "Sterling" // Prints "Hello Sterling" -``` - -Readwrite properties can be stubbed to automatically save and return values. - -```swift -given(bird.name).willReturn(lastSetValue(initial: "")) -print(bird.name) // Prints "" -bird.name = "Ryan" -print(bird.name) // Prints "Ryan" -``` - -#### Stub as a Relaxed Mock - -Use a `ValueProvider` to create a relaxed mock that returns default values for unstubbed methods. Mockingbird provides preset value providers which are guaranteed to be backwards compatible, such as `.standardProvider`. - -```swift -let bird = mock(Bird.self) -bird.useDefaultValues(from: .standardProvider) -print(bird.name) // Prints "" -``` - -You can create custom value providers by registering values for specific types. - -```swift -var valueProvider = ValueProvider() -valueProvider.register("Ryan", for: String.self) -bird.useDefaultValues(from: valueProvider) -print(bird.name) // Prints "Ryan" -``` - -Values from concrete stubs always have a higher precedence than default values. - -```swift -given(bird.name).willReturn("Ryan") -print(bird.name) // Prints "Ryan" - -bird.useDefaultValues(from: .standardProvider) -print(bird.name) // Prints "Ryan" +$ mockingbird generate --testbundle BirdTests --target Bird --output Mocks.generated.swift ``` -Provide wildcard instances for generic types by conforming the base type to `Providable` and registering the type. +Using Mockingbird in tests. ```swift -extension Array: Providable { - public static func createInstance() -> Self? { - return Array() - } -} - -// Provide an empty array for all specialized `Array` types -valueProvider.registerType(Array.self) -``` - -#### Stub as a Partial Mock - -Partial mocks can be created by forwarding all calls to a specific object. Forwarding targets are strongly referenced and receive invocations until removed with `clearStubs`. - -```swift -class Crow: Bird { - let name: String - init(name: String) { self.name = name } -} - +// Mocking let bird = mock(Bird.self) -bird.forwardCalls(to: Crow(name: "Ryan")) -print(bird.name) // Prints "Ryan" -``` - -Swift class mocks can also forward invocations to its underlying superclass. - -```swift -let tree = mock(Tree.self).initialize(height: 42) -tree.forwardCallsToSuper() -print(tree.height) // Prints "42" -``` - -For more granular stubbing, it’s possible to scope both object and superclass forwarding targets to a specific declaration. - -```swift -given(bird.name).willForward(to: Crow(name: "Ryan")) // Object target -given(tree.height).willForwardToSuper() // Superclass target -``` - -Concrete stubs always have a higher priority than forwarding targets, regardless of the order -they were added. - -```swift -given(bird.name).willReturn("Ryan") -given(bird.name).willForward(to: Crow(name: "Sterling")) -print(bird.name) // Prints "Ryan" -``` - -#### Stub a Sequence of Values -Methods that return a different value each time can be stubbed with a sequence of values. The last value will be used for all subsequent invocations. - -```swift -given(bird.name).willReturn(sequence(of: "Ryan", "Sterling")) -print(bird.name) // Prints "Ryan" -print(bird.name) // Prints "Sterling" -print(bird.name) // Prints "Sterling" -``` - -It’s also possible to stub a sequence of arbitrary behaviors. - -```swift -given(bird.name) - .willReturn("Ryan") - .willReturn("Sterling") - .will { return Bool.random() ? "Ryan" : "Sterling" } -``` - -### 3. Verification - -Verification lets you assert that a mock received a particular invocation during its lifetime. +// Stubbing +given(bird.canFly).willReturn(true) -```swift +// Verification verify(bird.fly()).wasCalled() ``` -Verifying doesn’t remove recorded invocations, so it’s safe to call `verify` multiple times. - -```swift -verify(bird.fly()).wasCalled() // If this succeeds... -verify(bird.fly()).wasCalled() // ...this also succeeds -``` - -#### Verify Methods with Parameters - -[Match argument values](#4-argument-matching) to verify methods with parameters. - -```swift -verify(bird.chirp(volume: any())).wasCalled() // Any volume -verify(bird.chirp(volume: notNil())).wasCalled() // Any non-nil volume -verify(bird.chirp(volume: 10)).wasCalled() // Volume = 10 -``` - -#### Verify Properties - -Verify property invocations using their getter and setter methods. - -```swift -verify(bird.name).wasCalled() -verify(bird.name = any()).wasCalled() -``` - -#### Verify the Number of Invocations - -It’s possible to verify that an invocation was called a specific number of times with a count matcher. - -```swift -verify(bird.fly()).wasNeverCalled() // n = 0 -verify(bird.fly()).wasCalled(exactly(10)) // n = 10 -verify(bird.fly()).wasCalled(atLeast(10)) // n ≥ 10 -verify(bird.fly()).wasCalled(atMost(10)) // n ≤ 10 -verify(bird.fly()).wasCalled(between(5...10)) // 5 ≤ n ≤ 10 -``` - -Count matchers also support chaining and negation using logical operators. - -```swift -verify(bird.fly()).wasCalled(not(exactly(10))) // n ≠ 10 -verify(bird.fly()).wasCalled(exactly(10).or(atMost(5))) // n = 10 || n ≤ 5 -``` - -#### Capture Argument Values - -An argument captor extracts received argument values which can be used in other parts of the test. - -```swift -let bird = mock(Bird.self) -bird.name = "Ryan" - -let nameCaptor = ArgumentCaptor() -verify(bird.name = nameCaptor.any()).wasCalled() - -print(nameCaptor.value) // Prints "Ryan" -``` - -#### Verify Invocation Order - -Enforce the relative order of invocations with an `inOrder` verification block. - -```swift -// Verify that `canFly` was called before `fly` -inOrder { - verify(bird.canFly).wasCalled() - verify(bird.fly()).wasCalled() -} -``` - -Pass options to `inOrder` verification blocks for stricter checks with additional invariants. - -```swift -inOrder(with: .noInvocationsAfter) { - verify(bird.canFly).wasCalled() - verify(bird.fly()).wasCalled() -} -``` - -#### Verify Asynchronous Calls - -Mocked methods that are invoked asynchronously can be verified using an `eventually` block which returns an `XCTestExpectation`. - -```swift -DispatchQueue.main.async { - guard bird.canFly else { return } - bird.fly() -} - -let expectation = - eventually { - verify(bird.canFly).wasCalled() - verify(bird.fly()).wasCalled() - } - -wait(for: [expectation], timeout: 1.0) -``` - -#### Verify Overloaded Methods - -Use the `returning` modifier to disambiguate methods overloaded by return type. Methods overloaded by parameter types do not require disambiguation. - -```swift -protocol Bird { - func getMessage() -> T // Overloaded generically - func getMessage() -> String // Overloaded explicitly - func getMessage() -> Data -} - -verify(bird.getMessage()).returning(String.self).wasCalled() -``` - -### 4. Argument Matching - -Argument matching allows you to stub or verify specific invocations of parameterized methods. - -#### Match Exact Values - -Types that explicitly conform to `Equatable` work out of the box, such as `String`. - -```swift -given(bird.chirp(volume: 42)).willReturn(true) -print(bird.chirp(volume: 42)) // Prints "true" -verify(bird.chirp(volume: 42)).wasCalled() // Passes -``` - -Structs able to synthesize `Equatable` conformance must explicitly declare conformance to enable exact argument matching. - -```swift -struct Fruit: Equatable { - let size: Int -} - -bird.eat(Fruit(size: 42)) -verify(bird.eat(Fruit(size: 42))).wasCalled() -``` - -Non-equatable classes are compared by reference instead. - -```swift -class Fruit {} -let fruit = Fruit() - -bird.eat(fruit) -verify(bird.eat(fruit)).wasCalled() -``` - -#### Match Wildcard Values and Non-Equatable Types - -Argument matchers allow for wildcard or custom matching of arguments that are not `Equatable`. - -```swift -any() // Any value -any(of: 1, 2, 3) // Any value in {1, 2, 3} -any(where: { $0 > 42 }) // Any number greater than 42 -notNil() // Any non-nil value -``` - -For methods overloaded by parameter type, you should help the compiler by specifying an explicit type in the matcher. - -```swift -any(Int.self) -any(Int.self, of: 1, 2, 3) -any(Int.self, where: { $0 > 42 }) -notNil(String?.self) -``` - -You can also match elements or keys within collection types. - -```swift -any(containing: 1, 2, 3) // Any collection with values {1, 2, 3} -any(keys: "a", "b", "c") // Any dictionary with keys {"a", "b", "c"} -any(count: atMost(42)) // Any collection with at most 42 elements -notEmpty() // Any non-empty collection -``` - -#### Match Value Types in Objective-C - -You must specify an argument position when matching an Objective-C method with multiple value type parameters. Mockingbird will raise a test failure if the argument position is not inferrable and no explicit position was provided. - -```swift -@objc class Bird: NSObject { - @objc dynamic func chirp(volume: Int, duration: Int) {} -} - -verify(bird.chirp(volume: firstArg(any()), - duration: secondArg(any())).wasCalled() - -// Equivalent verbose syntax -verify(bird.chirp(volume: arg(any(), at: 1), - duration: arg(any(), at: 2)).wasCalled() -``` - -#### Match Floating Point Values - -Mathematical operations on floating point numbers can cause loss of precision. Fuzzily match floating point arguments instead of using exact values to increase the robustness of tests. - -```swift -around(10.0, tolerance: 0.01) -``` - -### 5. Advanced Topics - -#### Excluding Files - -You can exclude unwanted or problematic sources from being mocked by adding a `.mockingbird-ignore` file. Mockingbird follows the same pattern format as [`.gitignore`](https://git-scm.com/docs/gitignore#_pattern_format) and scopes ignore files to their enclosing directory. - -#### Using Supporting Source Files - -Supporting source files are used by the generator to resolve inherited types defined outside of your project. Although Mockingbird provides a preset “starter pack” for basic compatibility with common system frameworks, you will occasionally need to add your own definitions for third-party library types. Please see [Supporting Source Files](https://github.com/birdrides/mockingbird/wiki/Supporting-Source-Files) for more information. - -#### Thunk Pruning - -To improve compilation times for large projects, Mockingbird only generates mocking code (known as thunks) for types used in tests. Unused types can either produce “thunk stubs” or no code at all depending on the pruning level specified. - -| Level | Description | -| --- | --- | -| `disable` | Always generate full thunks regardless of usage in tests. | -| `stub` | Generate partial definitions filled with `fatalError`. | -| `omit` | Don’t generate any definitions for unused types. | - -Usage is determined by statically analyzing test target sources for calls to `mock(SomeType.self)`, which may not work out of the box for projects that indirectly synthesize types such as through Objective-C based dependency injection. - -- **Option 1:** Explicitly reference each indirectly synthesized type in your tests, e.g. `_ = mock(SomeType.self)`. References can be placed anywhere in the test target sources, such as in the `setUp` method of a test case or in a single file. -- **Option 2:** Disable pruning entirely by setting the prune level with `--prune disable`. Note that this may increase compilation times for large projects. - -## Mockingbird CLI - -### Generate - -Generate mocks for a set of targets in a project. - -`mockingbird generate` - -| Option | Default Value | Description | -| --- | --- | --- | -| `-t, --targets` | *(required)* | List of target names to generate mocks for. | -| `-o, --outputs` | [`(inferred)`](#--outputs) | List of output file paths corresponding to each target. | -| `-p, --project` | [`(inferred)`](#--project) | Path to an Xcode project or a [JSON project description](https://github.com/birdrides/mockingbird/wiki/Manual-Setup#generating-mocks-for-non-xcode-projects). | -| `--output-dir` | [`(inferred)`](#--outputs) | The directory where generated files should be output. | -| `--srcroot` | [`(inferred)`](#--srcroot) | The directory containing your project’s source files. | -| `--support` | [`(inferred)`](#--support) | The directory containing [supporting source files](https://github.com/birdrides/mockingbird/wiki/Supporting-Source-Files). | -| `--testbundle` | [`(inferred)`](#--testbundle) | The name of the test bundle using the mocks. | -| `--header` | `(none)` | Content to add at the beginning of each generated mock file. | -| `--condition` | `(none)` | [Compilation condition](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID538) to wrap all generated mocks in, e.g. `DEBUG`. | -| `--diagnostics` | `(none)` | List of [diagnostic generator warnings](https://github.com/birdrides/mockingbird/wiki/Diagnostic-Warnings-and-Errors) to enable. | -| `--prune` | `omit` | The [pruning method](#thunk-pruning) to use on unreferenced types. | - -| Flag | Description | -| --- | --- | -| `--only-protocols` | Only generate mocks for protocols. | -| `--disable-swiftlint` | Disable all SwiftLint rules in generated mocks. | -| `--disable-cache` | Ignore cached mock information stored on disk. | -| `--disable-relaxed-linking` | Only search explicitly imported modules. | - -### Configure - -Configure a test target to generate mocks. - -`mockingbird configure -- ` - -| Argument | Description | -| --- | --- | -| `test-target` | The name of a test target to configure. | -| `generator-options` | Arguments to use when running the generator. See the 'generate' command for all options. | - -| Option | Default Value | Description | -| --- | --- | --- | -| `-p, --project` | [`(inferred)`](#--project) | Path to an Xcode project. | -| `--srcproject` | [`(inferred)`](#--project) | Path to the Xcode project with source modules, if separate from tests. | -| `--generator` | [`(inferred)`](#--generator) | Path to the Mockingbird generator executable. | -| `--url` | [`(inferred)`](#--url) | The base URL hosting downloadable asset bundles. | - -| Flag | Description | -| --- | --- | -| `--preserve-existing` | Keep previously added Mockingbird build phases. | - -### Global Options - -| Flag | Description | -| --- | --- | -| `--verbose` | Log all errors, warnings, and debug messages. | -| `--quiet` | Only log error messages. | -| `--version` | Show the version. | -| `-h, --help` | Show help information. | - -### Default Inferred Values - -#### `--project` - -Mockingbird first checks the environment variable `PROJECT_FILE_PATH` set by the Xcode build context and then performs a shallow search of the current working directory for an `.xcodeproj` file. If multiple `.xcodeproj` files exist then you must explicitly provide a project file path. - -#### `--srcroot` - -Mockingbird checks the environment variables `SRCROOT` and `SOURCE_ROOT` set by the Xcode build context and then falls back to the directory containing the `.xcodeproj` project file. Note that source root is ignored when using JSON project descriptions. - -#### `--outputs` - -Mockingbird generates mocks into the directory `$(SRCROOT)/MockingbirdMocks` with the file name `$(PRODUCT_MODULE_NAME)Mocks-$(TEST_TARGET_NAME).generated.swift`. - -#### `--support` - -Mockingbird recursively looks for [supporting source files](https://github.com/birdrides/mockingbird/wiki/Supporting-Source-Files) in the directory `$(SRCROOT)/MockingbirdSupport`. - -#### `--testbundle` - -Mockingbird checks the environment variables `TARGET_NAME` and `TARGETNAME` set by the Xcode build context and verifies that it refers to a valid Swift unit test target. The test bundle option must be set when using [JSON project descriptions](https://github.com/birdrides/mockingbird/wiki/Manual-Setup#generating-mocks-for-non-xcode-projects) in order to enable thunk stubs. - -#### `--generator` - -Mockingbird uses the current executable path and attempts to make it relative to the project’s `SRCROOT` or derived data. To improve portability across development environments, avoid linking executables outside of project-specific directories. - -#### `--url` - -Mockingbird uses the GitHub release artifacts located at `https://github.com/birdrides/mockingbird/releases/download`. Note that asset bundles are versioned by release. - -## Additional Resources - -### Example Projects +## Contributing -- [CocoaPods](/Examples/CocoaPodsExample) -- [Carthage](/Examples/CarthageExample) -- [SwiftPM - Xcode Project](/Examples/SPMProjectExample) -- [SwiftPM - Package Manifest](/Examples/SPMPackageExample) +Please read the [contributing guide](/.github/CONTRIBUTING.md) to learn about reporting bugs, developing features, and submitting code changes. -### Help and Documentation +## License -- [API reference](https://birdrides.github.io/mockingbird/latest/) -- [Slack channel](https://join.slack.com/t/birdopensource/shared_invite/zt-wogxij50-3ZM7F8ZxFXvPkE0j8xTtmw) -- [Troubleshooting guide](https://github.com/birdrides/mockingbird/wiki/Troubleshooting) -- [Mockingbird wiki](https://github.com/birdrides/mockingbird/wiki/) +Mockingbird is [MIT licensed](/LICENSE.md). By contributing to Mockingbird, you agree that your contributions will be licensed under its MIT license. From 4688e68dec82b43fef722b0e06cd8258c92c9170 Mon Sep 17 00:00:00 2001 From: Andrew Chang Date: Fri, 7 Jan 2022 00:41:10 -1000 Subject: [PATCH 14/20] Allow building DocC archive using local docc --- .../MockingbirdAutomation/Interop/DocC.swift | 10 ++++--- .../Commands/Build.swift | 5 +++- .../Commands/BuildDocumentation.swift | 27 +++++++++++++++---- 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/Sources/MockingbirdAutomation/Interop/DocC.swift b/Sources/MockingbirdAutomation/Interop/DocC.swift index 97a03c7e..bbd06728 100644 --- a/Sources/MockingbirdAutomation/Interop/DocC.swift +++ b/Sources/MockingbirdAutomation/Interop/DocC.swift @@ -15,23 +15,27 @@ public enum DocC { public static func preview(bundle: Path, symbolGraph: Path, - renderer: Path? = nil) throws { + renderer: Path? = nil, + docc: Path? = nil) throws { try Subprocess("xcrun", [ - "docc", + docc?.string ?? "docc", "preview", bundle.string, "--additional-symbol-graph-dir", symbolGraph.string, + "--experimental-enable-custom-templates", ], environment: getEnvironment(renderer: renderer)).run() } public static func convert(bundle: Path, symbolGraph: Path, renderer: Path? = nil, + docc: Path? = nil, output: Path) throws { try Subprocess("xcrun", [ - "docc", + docc?.string ?? "docc", "convert", bundle.string, "--additional-symbol-graph-dir", symbolGraph.string, "--output-dir", output.string, + "--experimental-enable-custom-templates", ], environment: getEnvironment(renderer: renderer)).run() } } diff --git a/Sources/MockingbirdAutomationCli/Commands/Build.swift b/Sources/MockingbirdAutomationCli/Commands/Build.swift index 57e55438..6ee57d7b 100644 --- a/Sources/MockingbirdAutomationCli/Commands/Build.swift +++ b/Sources/MockingbirdAutomationCli/Commands/Build.swift @@ -49,7 +49,10 @@ struct Build: ParsableCommand { try? destination.delete() try destination.parent().mkpath() - try FileManager().zipItem(at: stagingPath.url, to: destination.url, compressionMethod: .deflate) + try FileManager().zipItem(at: stagingPath.url, + to: destination.url, + shouldKeepParent: items.count > 1, + compressionMethod: .deflate) } } diff --git a/Sources/MockingbirdAutomationCli/Commands/BuildDocumentation.swift b/Sources/MockingbirdAutomationCli/Commands/BuildDocumentation.swift index b7cc1471..b8b4e009 100644 --- a/Sources/MockingbirdAutomationCli/Commands/BuildDocumentation.swift +++ b/Sources/MockingbirdAutomationCli/Commands/BuildDocumentation.swift @@ -10,10 +10,13 @@ extension Build { abstract: "Build a documentation archive using DocC.") @Option(help: "Path to the documentation bundle directory.") - var bundle: String = "./Sources/Mockingbird.docc" + var bundle: String = "./Sources/Documentation/Mockingbird.docc" + + @Option(help: "Path to a DocC executable.") + var docc: String? @Option(help: "Path to a documentation renderer.") - var renderer: String = "./Sources/Mockingbird.docc/Renderer" + var renderer: String? @OptionGroup() var globalOptions: Options @@ -34,6 +37,16 @@ extension Build { + [symbolGraphs + "Mockingbird.symbols.json"] try mockingbirdSymbolGraphs.forEach({ try $0.copy(filteredSymbolGraphs + $0.lastComponent) }) + let rendererPath: Path? = { + guard let renderer = renderer else { return nil } + return Path(renderer) + }() + + let doccPath: Path? = { + guard let docc = docc else { return nil } + return Path(docc) + }() + let bundlePath = Path(bundle) if let location = globalOptions.archiveLocation { let outputPath = Path("./.build/mockingbird/artifacts/Mockingbird.doccarchive") @@ -41,13 +54,17 @@ extension Build { try? outputPath.delete() try DocC.convert(bundle: bundlePath, symbolGraph: filteredSymbolGraphs, - renderer: Path(renderer), + renderer: rendererPath, + docc: doccPath, output: outputPath) - try archive(artifacts: [("", outputPath)], destination: Path(location)) + try archive(artifacts: [("", outputPath)], + destination: Path(location), + includeLicense: false) } else { try DocC.preview(bundle: bundlePath, symbolGraph: filteredSymbolGraphs, - renderer: Path(renderer)) + renderer: rendererPath, + docc: doccPath) } } } From 2105f531fa4402b749e65b8301b79335201ec5d0 Mon Sep 17 00:00:00 2001 From: Andrew Chang Date: Fri, 7 Jan 2022 00:43:53 -1000 Subject: [PATCH 15/20] Modify DocC renderer site page root path --- Sources/Mockingbird.docc/Renderer/index-template.html | 2 +- Sources/Mockingbird.docc/Renderer/index.html | 2 +- ...entation-topic~topic~tutorials-overview.36db035f.js | 10 ++++++++++ ...entation-topic~topic~tutorials-overview.c5a22800.js | 10 ---------- ...ea0800.js => highlight-js-custom-swift.6a006062.js} | 2 +- Sources/Mockingbird.docc/Renderer/js/index.04a13994.js | 9 +++++++++ Sources/Mockingbird.docc/Renderer/js/index.37f0a361.js | 9 --------- 7 files changed, 22 insertions(+), 22 deletions(-) create mode 100644 Sources/Mockingbird.docc/Renderer/js/documentation-topic~topic~tutorials-overview.36db035f.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/documentation-topic~topic~tutorials-overview.c5a22800.js rename Sources/Mockingbird.docc/Renderer/js/{highlight-js-custom-swift.2aea0800.js => highlight-js-custom-swift.6a006062.js} (81%) create mode 100644 Sources/Mockingbird.docc/Renderer/js/index.04a13994.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/index.37f0a361.js diff --git a/Sources/Mockingbird.docc/Renderer/index-template.html b/Sources/Mockingbird.docc/Renderer/index-template.html index 61547001..1225a601 100644 --- a/Sources/Mockingbird.docc/Renderer/index-template.html +++ b/Sources/Mockingbird.docc/Renderer/index-template.html @@ -8,4 +8,4 @@ See https://swift.org/CONTRIBUTORS.txt for Swift project authors --> -Documentation
\ No newline at end of file +Documentation
\ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/index.html b/Sources/Mockingbird.docc/Renderer/index.html index cd21b93b..64020035 100644 --- a/Sources/Mockingbird.docc/Renderer/index.html +++ b/Sources/Mockingbird.docc/Renderer/index.html @@ -8,4 +8,4 @@ See https://swift.org/CONTRIBUTORS.txt for Swift project authors --> -Documentation
\ No newline at end of file +Documentation
\ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/documentation-topic~topic~tutorials-overview.36db035f.js b/Sources/Mockingbird.docc/Renderer/js/documentation-topic~topic~tutorials-overview.36db035f.js new file mode 100644 index 00000000..23b42725 --- /dev/null +++ b/Sources/Mockingbird.docc/Renderer/js/documentation-topic~topic~tutorials-overview.36db035f.js @@ -0,0 +1,10 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["documentation-topic~topic~tutorials-overview"],{"05a1":function(e,t,n){},"0f00":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"row"},[e._t("default")],2)},s=[],r={name:"GridRow"},a=r,o=(n("2224"),n("2877")),c=Object(o["a"])(a,i,s,!1,null,"be73599c",null);t["a"]=c.exports},1020:function(e,t){var n={exports:{}};function i(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach((function(t){var n=e[t];"object"!=typeof n||Object.isFrozen(n)||i(n)})),e}n.exports=i,n.exports.default=i;var s=n.exports;class r{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function a(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function o(e,...t){const n=Object.create(null);for(const i in e)n[i]=e[i];return t.forEach((function(e){for(const t in e)n[t]=e[t]})),n}const c="",l=e=>!!e.kind,u=(e,{prefix:t})=>{if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map((e,t)=>`${e}${"_".repeat(t+1)}`)].join(" ")}return`${t}${e}`};class d{constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=a(e)}openNode(e){if(!l(e))return;let t=e.kind;t=e.sublanguage?"language-"+t:u(t,{prefix:this.classPrefix}),this.span(t)}closeNode(e){l(e)&&(this.buffer+=c)}value(){return this.buffer}span(e){this.buffer+=``}}class h{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){while(this.closeNode());}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return"string"===typeof t?e.addText(t):t.children&&(e.openNode(t),t.children.forEach(t=>this._walk(e,t)),e.closeNode(t)),e}static _collapse(e){"string"!==typeof e&&e.children&&(e.children.every(e=>"string"===typeof e)?e.children=[e.children.join("")]:e.children.forEach(e=>{h._collapse(e)}))}}class p extends h{constructor(e){super(),this.options=e}addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())}addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){const e=new d(this,this.options);return e.value()}finalize(){return!0}}function g(e){return e?"string"===typeof e?e:e.source:null}function f(e){return v("(?=",e,")")}function m(e){return v("(?:",e,")*")}function b(e){return v("(?:",e,")?")}function v(...e){const t=e.map(e=>g(e)).join("");return t}function y(e){const t=e[e.length-1];return"object"===typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function w(...e){const t=y(e),n="("+(t.capture?"":"?:")+e.map(e=>g(e)).join("|")+")";return n}function x(e){return new RegExp(e.toString()+"|").exec("").length-1}function E(e,t){const n=e&&e.exec(t);return n&&0===n.index}const _=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function j(e,{joinWith:t}){let n=0;return e.map(e=>{n+=1;const t=n;let i=g(e),s="";while(i.length>0){const e=_.exec(i);if(!e){s+=i;break}s+=i.substring(0,e.index),i=i.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?s+="\\"+String(Number(e[1])+t):(s+=e[0],"("===e[0]&&n++)}return s}).map(e=>`(${e})`).join(t)}const k=/\b\B/,T="[a-zA-Z]\\w*",C="[a-zA-Z_]\\w*",S="\\b\\d+(\\.\\d+)?",O="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",N="\\b(0b[01]+)",L="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",I=(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=v(t,/.*\b/,e.binary,/\b.*/)),o({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},A={begin:"\\\\[\\s\\S]",relevance:0},B={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[A]},M={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[A]},$={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},R=function(e,t,n={}){const i=o({scope:"comment",begin:e,end:t,contains:[]},n);i.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const s=w("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return i.contains.push({begin:v(/[ ]+/,"(",s,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),i},D=R("//","$"),P=R("/\\*","\\*/"),F=R("#","$"),H={scope:"number",begin:S,relevance:0},q={scope:"number",begin:O,relevance:0},V={scope:"number",begin:N,relevance:0},U={begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[A,{begin:/\[/,end:/\]/,relevance:0,contains:[A]}]}]},z={scope:"title",begin:T,relevance:0},G={scope:"title",begin:C,relevance:0},W={begin:"\\.\\s*"+C,relevance:0},K=function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})};var Y=Object.freeze({__proto__:null,MATCH_NOTHING_RE:k,IDENT_RE:T,UNDERSCORE_IDENT_RE:C,NUMBER_RE:S,C_NUMBER_RE:O,BINARY_NUMBER_RE:N,RE_STARTERS_RE:L,SHEBANG:I,BACKSLASH_ESCAPE:A,APOS_STRING_MODE:B,QUOTE_STRING_MODE:M,PHRASAL_WORDS_MODE:$,COMMENT:R,C_LINE_COMMENT_MODE:D,C_BLOCK_COMMENT_MODE:P,HASH_COMMENT_MODE:F,NUMBER_MODE:H,C_NUMBER_MODE:q,BINARY_NUMBER_MODE:V,REGEXP_MODE:U,TITLE_MODE:z,UNDERSCORE_TITLE_MODE:G,METHOD_GUARD:W,END_SAME_AS_BEGIN:K});function X(e,t){const n=e.input[e.index-1];"."===n&&t.ignoreMatch()}function Z(e,t){void 0!==e.className&&(e.scope=e.className,delete e.className)}function J(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=X,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,void 0===e.relevance&&(e.relevance=0))}function Q(e,t){Array.isArray(e.illegal)&&(e.illegal=w(...e.illegal))}function ee(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function te(e,t){void 0===e.relevance&&(e.relevance=1)}const ne=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach(t=>{delete e[t]}),e.keywords=n.keywords,e.begin=v(n.beforeMatch,f(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},ie=["of","and","for","in","not","or","if","then","parent","list","value"],se="keyword";function re(e,t,n=se){const i=Object.create(null);return"string"===typeof e?s(n,e.split(" ")):Array.isArray(e)?s(n,e):Object.keys(e).forEach((function(n){Object.assign(i,re(e[n],t,n))})),i;function s(e,n){t&&(n=n.map(e=>e.toLowerCase())),n.forEach((function(t){const n=t.split("|");i[n[0]]=[e,ae(n[0],n[1])]}))}}function ae(e,t){return t?Number(t):oe(e)?0:1}function oe(e){return ie.includes(e.toLowerCase())}const ce={},le=e=>{console.error(e)},ue=(e,...t)=>{console.log("WARN: "+e,...t)},de=(e,t)=>{ce[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),ce[`${e}/${t}`]=!0)},he=new Error;function pe(e,t,{key:n}){let i=0;const s=e[n],r={},a={};for(let o=1;o<=t.length;o++)a[o+i]=s[o],r[o+i]=!0,i+=x(t[o-1]);e[n]=a,e[n]._emit=r,e[n]._multi=!0}function ge(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw le("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),he;if("object"!==typeof e.beginScope||null===e.beginScope)throw le("beginScope must be object"),he;pe(e,e.begin,{key:"beginScope"}),e.begin=j(e.begin,{joinWith:""})}}function fe(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw le("skip, excludeEnd, returnEnd not compatible with endScope: {}"),he;if("object"!==typeof e.endScope||null===e.endScope)throw le("endScope must be object"),he;pe(e,e.end,{key:"endScope"}),e.end=j(e.end,{joinWith:""})}}function me(e){e.scope&&"object"===typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,delete e.scope)}function be(e){me(e),"string"===typeof e.beginScope&&(e.beginScope={_wrap:e.beginScope}),"string"===typeof e.endScope&&(e.endScope={_wrap:e.endScope}),ge(e),fe(e)}function ve(e){function t(t,n){return new RegExp(g(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,t){t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),this.matchAt+=x(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const e=this.regexes.map(e=>e[1]);this.matcherRe=t(j(e,{joinWith:"|"}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e);if(!t)return null;const n=t.findIndex((e,t)=>t>0&&void 0!==e),i=this.matchIndexes[n];return t.splice(0,n),Object.assign(t,i)}}class i{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n;return this.rules.slice(e).forEach(([e,n])=>t.addRule(e,n)),t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex;let n=t.exec(e);if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}return n&&(this.regexIndex+=n.position+1,this.regexIndex===this.count&&this.considerAll()),n}}function s(e){const t=new i;return e.contains.forEach(e=>t.addRule(e.begin,{rule:e,type:"begin"})),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t}function r(n,i){const a=n;if(n.isCompiled)return a;[Z,ee,be,ne].forEach(e=>e(n,i)),e.compilerExtensions.forEach(e=>e(n,i)),n.__beforeBegin=null,[J,Q,te].forEach(e=>e(n,i)),n.isCompiled=!0;let o=null;return"object"===typeof n.keywords&&n.keywords.$pattern&&(n.keywords=Object.assign({},n.keywords),o=n.keywords.$pattern,delete n.keywords.$pattern),o=o||/\w+/,n.keywords&&(n.keywords=re(n.keywords,e.case_insensitive)),a.keywordPatternRe=t(o,!0),i&&(n.begin||(n.begin=/\B|\b/),a.beginRe=t(a.begin),n.end||n.endsWithParent||(n.end=/\B|\b/),n.end&&(a.endRe=t(a.end)),a.terminatorEnd=g(a.end)||"",n.endsWithParent&&i.terminatorEnd&&(a.terminatorEnd+=(n.end?"|":"")+i.terminatorEnd)),n.illegal&&(a.illegalRe=t(n.illegal)),n.contains||(n.contains=[]),n.contains=[].concat(...n.contains.map((function(e){return we("self"===e?n:e)}))),n.contains.forEach((function(e){r(e,a)})),n.starts&&r(n.starts,i),a.matcher=s(a),a}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=o(e.classNameAliases||{}),r(e)}function ye(e){return!!e&&(e.endsWithParent||ye(e.starts))}function we(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((function(t){return o(e,{variants:null},t)}))),e.cachedVariants?e.cachedVariants:ye(e)?o(e,{starts:e.starts?o(e.starts):null}):Object.isFrozen(e)?o(e):e}var xe="11.3.1";class Ee extends Error{constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}}const _e=a,je=o,ke=Symbol("nomatch"),Te=7,Ce=function(e){const t=Object.create(null),n=Object.create(null),i=[];let a=!0;const o="Could not find the language '{}', did you forget to load/include a language module?",c={disableAutodetect:!0,name:"Plain text",contains:[]};let l={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:p};function u(e){return l.noHighlightRe.test(e)}function d(e){let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"";const n=l.languageDetectRe.exec(t);if(n){const t=B(n[1]);return t||(ue(o.replace("{}",n[1])),ue("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}return t.split(/\s+/).find(e=>u(e)||B(e))}function h(e,t,n){let i="",s="";"object"===typeof t?(i=e,n=t.ignoreIllegals,s=t.language):(de("10.7.0","highlight(lang, code, ...args) has been deprecated."),de("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),s=e,i=t),void 0===n&&(n=!0);const r={code:i,language:s};P("before:highlight",r);const a=r.result?r.result:g(r.language,r.code,n);return a.code=r.code,P("after:highlight",a),a}function g(e,n,i,s){const c=Object.create(null);function u(e,t){return e.keywords[t]}function d(){if(!O.keywords)return void L.addText(I);let e=0;O.keywordPatternRe.lastIndex=0;let t=O.keywordPatternRe.exec(I),n="";while(t){n+=I.substring(e,t.index);const i=T.case_insensitive?t[0].toLowerCase():t[0],s=u(O,i);if(s){const[e,r]=s;if(L.addText(n),n="",c[i]=(c[i]||0)+1,c[i]<=Te&&(A+=r),e.startsWith("_"))n+=t[0];else{const n=T.classNameAliases[e]||e;L.addKeyword(t[0],n)}}else n+=t[0];e=O.keywordPatternRe.lastIndex,t=O.keywordPatternRe.exec(I)}n+=I.substr(e),L.addText(n)}function h(){if(""===I)return;let e=null;if("string"===typeof O.subLanguage){if(!t[O.subLanguage])return void L.addText(I);e=g(O.subLanguage,I,!0,N[O.subLanguage]),N[O.subLanguage]=e._top}else e=x(I,O.subLanguage.length?O.subLanguage:null);O.relevance>0&&(A+=e.relevance),L.addSublanguage(e._emitter,e.language)}function p(){null!=O.subLanguage?h():d(),I=""}function f(e,t){let n=1;while(void 0!==t[n]){if(!e._emit[n]){n++;continue}const i=T.classNameAliases[e[n]]||e[n],s=t[n];i?L.addKeyword(s,i):(I=s,d(),I=""),n++}}function m(e,t){return e.scope&&"string"===typeof e.scope&&L.openNode(T.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(L.addKeyword(I,T.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),I=""):e.beginScope._multi&&(f(e.beginScope,t),I="")),O=Object.create(e,{parent:{value:O}}),O}function b(e,t,n){let i=E(e.endRe,n);if(i){if(e["on:end"]){const n=new r(e);e["on:end"](t,n),n.isMatchIgnored&&(i=!1)}if(i){while(e.endsParent&&e.parent)e=e.parent;return e}}if(e.endsWithParent)return b(e.parent,t,n)}function v(e){return 0===O.matcher.regexIndex?(I+=e[0],1):(R=!0,0)}function y(e){const t=e[0],n=e.rule,i=new r(n),s=[n.__beforeBegin,n["on:begin"]];for(const r of s)if(r&&(r(e,i),i.isMatchIgnored))return v(t);return n.skip?I+=t:(n.excludeBegin&&(I+=t),p(),n.returnBegin||n.excludeBegin||(I=t)),m(n,e),n.returnBegin?0:t.length}function w(e){const t=e[0],i=n.substr(e.index),s=b(O,e,i);if(!s)return ke;const r=O;O.endScope&&O.endScope._wrap?(p(),L.addKeyword(t,O.endScope._wrap)):O.endScope&&O.endScope._multi?(p(),f(O.endScope,e)):r.skip?I+=t:(r.returnEnd||r.excludeEnd||(I+=t),p(),r.excludeEnd&&(I=t));do{O.scope&&L.closeNode(),O.skip||O.subLanguage||(A+=O.relevance),O=O.parent}while(O!==s.parent);return s.starts&&m(s.starts,e),r.returnEnd?0:t.length}function _(){const e=[];for(let t=O;t!==T;t=t.parent)t.scope&&e.unshift(t.scope);e.forEach(e=>L.openNode(e))}let j={};function k(t,s){const r=s&&s[0];if(I+=t,null==r)return p(),0;if("begin"===j.type&&"end"===s.type&&j.index===s.index&&""===r){if(I+=n.slice(s.index,s.index+1),!a){const t=new Error(`0 width match regex (${e})`);throw t.languageName=e,t.badRule=j.rule,t}return 1}if(j=s,"begin"===s.type)return y(s);if("illegal"===s.type&&!i){const e=new Error('Illegal lexeme "'+r+'" for mode "'+(O.scope||"")+'"');throw e.mode=O,e}if("end"===s.type){const e=w(s);if(e!==ke)return e}if("illegal"===s.type&&""===r)return 1;if($>1e5&&$>3*s.index){const e=new Error("potential infinite loop, way more iterations than matches");throw e}return I+=r,r.length}const T=B(e);if(!T)throw le(o.replace("{}",e)),new Error('Unknown language: "'+e+'"');const C=ve(T);let S="",O=s||C;const N={},L=new l.__emitter(l);_();let I="",A=0,M=0,$=0,R=!1;try{for(O.matcher.considerAll();;){$++,R?R=!1:O.matcher.considerAll(),O.matcher.lastIndex=M;const e=O.matcher.exec(n);if(!e)break;const t=n.substring(M,e.index),i=k(t,e);M=e.index+i}return k(n.substr(M)),L.closeAllNodes(),L.finalize(),S=L.toHTML(),{language:e,value:S,relevance:A,illegal:!1,_emitter:L,_top:O}}catch(D){if(D.message&&D.message.includes("Illegal"))return{language:e,value:_e(n),illegal:!0,relevance:0,_illegalBy:{message:D.message,index:M,context:n.slice(M-100,M+100),mode:D.mode,resultSoFar:S},_emitter:L};if(a)return{language:e,value:_e(n),illegal:!1,relevance:0,errorRaised:D,_emitter:L,_top:O};throw D}}function y(e){const t={value:_e(e),illegal:!1,relevance:0,_top:c,_emitter:new l.__emitter(l)};return t._emitter.addText(e),t}function x(e,n){n=n||l.languages||Object.keys(t);const i=y(e),s=n.filter(B).filter($).map(t=>g(t,e,!1));s.unshift(i);const r=s.sort((e,t)=>{if(e.relevance!==t.relevance)return t.relevance-e.relevance;if(e.language&&t.language){if(B(e.language).supersetOf===t.language)return 1;if(B(t.language).supersetOf===e.language)return-1}return 0}),[a,o]=r,c=a;return c.secondBest=o,c}function _(e,t,i){const s=t&&n[t]||i;e.classList.add("hljs"),e.classList.add("language-"+s)}function j(e){let t=null;const n=d(e);if(u(n))return;if(P("before:highlightElement",{el:e,language:n}),e.children.length>0&&(l.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/issues/2886"),console.warn(e)),l.throwUnescapedHTML)){const t=new Ee("One of your code blocks includes unescaped HTML.",e.innerHTML);throw t}t=e;const i=t.textContent,s=n?h(i,{language:n,ignoreIllegals:!0}):x(i);e.innerHTML=s.value,_(e,n,s.language),e.result={language:s.language,re:s.relevance,relevance:s.relevance},s.secondBest&&(e.secondBest={language:s.secondBest.language,relevance:s.secondBest.relevance}),P("after:highlightElement",{el:e,result:s,text:i})}function k(e){l=je(l,e)}const T=()=>{O(),de("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function C(){O(),de("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let S=!1;function O(){if("loading"===document.readyState)return void(S=!0);const e=document.querySelectorAll(l.cssSelector);e.forEach(j)}function N(){S&&O()}function L(n,i){let s=null;try{s=i(e)}catch(r){if(le("Language definition for '{}' could not be registered.".replace("{}",n)),!a)throw r;le(r),s=c}s.name||(s.name=n),t[n]=s,s.rawDefinition=i.bind(null,e),s.aliases&&M(s.aliases,{languageName:n})}function I(e){delete t[e];for(const t of Object.keys(n))n[t]===e&&delete n[t]}function A(){return Object.keys(t)}function B(e){return e=(e||"").toLowerCase(),t[e]||t[n[e]]}function M(e,{languageName:t}){"string"===typeof e&&(e=[e]),e.forEach(e=>{n[e.toLowerCase()]=t})}function $(e){const t=B(e);return t&&!t.disableAutodetect}function R(e){e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{e["before:highlightBlock"](Object.assign({block:t.el},t))}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{e["after:highlightBlock"](Object.assign({block:t.el},t))})}function D(e){R(e),i.push(e)}function P(e,t){const n=e;i.forEach((function(e){e[n]&&e[n](t)}))}function F(e){return de("10.7.0","highlightBlock will be removed entirely in v12.0"),de("10.7.0","Please use highlightElement now."),j(e)}"undefined"!==typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",N,!1),Object.assign(e,{highlight:h,highlightAuto:x,highlightAll:O,highlightElement:j,highlightBlock:F,configure:k,initHighlighting:T,initHighlightingOnLoad:C,registerLanguage:L,unregisterLanguage:I,listLanguages:A,getLanguage:B,registerAliases:M,autoDetection:$,inherit:je,addPlugin:D}),e.debugMode=function(){a=!1},e.safeMode=function(){a=!0},e.versionString=xe,e.regex={concat:v,lookahead:f,either:w,optional:b,anyNumberOfTimes:m};for(const r in Y)"object"===typeof Y[r]&&s(Y[r]);return Object.assign(e,Y),e};var Se=Ce({});e.exports=Se,Se.HighlightJS=Se,Se.default=Se},1417:function(e,t,n){var i={"./markdown":["84cb","highlight-js-custom-markdown"],"./markdown.js":["84cb","highlight-js-custom-markdown"],"./swift":["81c8","highlight-js-custom-swift"],"./swift.js":["81c8","highlight-js-custom-swift"]};function s(e){if(!n.o(i,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=i[e],s=t[0];return n.e(t[1]).then((function(){return n(s)}))}s.keys=function(){return Object.keys(i)},s.id="1417",e.exports=s},"146e":function(e,t,n){"use strict";var i=n("3908"),s=n("8a61");t["a"]={mixins:[s["a"]],async mounted(){this.$route.hash&&(await Object(i["a"])(8),this.scrollToElement(this.$route.hash))}}},2224:function(e,t,n){"use strict";n("b392")},"25a9":function(e,t,n){"use strict";n.d(t,"b",(function(){return m})),n.d(t,"c",(function(){return b})),n.d(t,"a",(function(){return v}));var i=n("748c"),s=n("d26a");const r={major:0,minor:2,patch:0};function a({major:e,minor:t,patch:n}){return[e,t,n].join(".")}const o=a(r);function c(e){return`[Swift-DocC-Render] The render node version for this page has a higher minor version (${e}) than Swift-DocC-Render supports (${o}). Compatibility is not guaranteed.`}const l=e=>`[Swift-DocC-Render] The render node version for this page (${e}) has a different major version component than Swift-DocC-Render supports (${o}). Compatibility is not guaranteed.`;function u(e){const{major:t,minor:n}=e,{major:i,minor:s}=r;return t!==i?l(a(e)):n>s?c(a(e)):""}function d(e){if(!e)return;const t=u(e);t&&console.warn(t)}var h=n("6842");class p extends Error{constructor(e){super("Unable to fetch data"),this.route=e}}async function g(e,t={}){function n(e){return("ide"!==Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET||0!==e.status)&&!e.ok}const i=new URL(e,window.location.href),r=Object(s["c"])(t);r&&(i.search=r);const a=await fetch(i.href);if(n(a))throw a;const o=await a.json();return d(o.schemaVersion),o}function f(e){const t=e.replace(/\/$/,""),n=Object(i["c"])([h["a"],"data","documentation","mockingbird"]);return""===t?n+".json":Object(i["c"])([n,t])+".json"}async function m(e,t,n){const i=f(e.path);let s;try{s=await g(i,e.query)}catch(r){if("ide"===Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET)throw console.error(r),!1;r.status&&404===r.status?n({name:"not-found",params:[e.path]}):n(new p(e))}return s}function b(e,t){return!Object(s["a"])(e,t)}function v(e){return JSON.parse(JSON.stringify(e))}},"2ab3":function(e,t,n){var i={"./bash":["f0f8","highlight-js-bash"],"./bash.js":["f0f8","highlight-js-bash"],"./c":["1fe5","highlight-js-c"],"./c.js":["1fe5","highlight-js-c"],"./cpp":["0209","highlight-js-cpp"],"./cpp.js":["0209","highlight-js-cpp"],"./css":["ee8c","highlight-js-css"],"./css.js":["ee8c","highlight-js-css"],"./diff":["48b8","highlight-js-diff"],"./diff.js":["48b8","highlight-js-diff"],"./http":["c01d","highlight-js-http"],"./http.js":["c01d","highlight-js-http"],"./java":["332f","highlight-js-java"],"./java.js":["332f","highlight-js-java"],"./javascript":["4dd1","highlight-js-javascript"],"./javascript.js":["4dd1","highlight-js-javascript"],"./json":["5ad2","highlight-js-json"],"./json.js":["5ad2","highlight-js-json"],"./llvm":["7c30","highlight-js-llvm"],"./llvm.js":["7c30","highlight-js-llvm"],"./markdown":["04b0","highlight-js-markdown"],"./markdown.js":["04b0","highlight-js-markdown"],"./objectivec":["9bf2","highlight-js-objectivec"],"./objectivec.js":["9bf2","highlight-js-objectivec"],"./perl":["6a51","highlight-js-perl"],"./perl.js":["6a51","highlight-js-perl"],"./php":["2907","highlight-js-php"],"./php.js":["2907","highlight-js-php"],"./python":["9510","highlight-js-python"],"./python.js":["9510","highlight-js-python"],"./ruby":["82cb","highlight-js-ruby"],"./ruby.js":["82cb","highlight-js-ruby"],"./scss":["6113","highlight-js-scss"],"./scss.js":["6113","highlight-js-scss"],"./shell":["b65b","highlight-js-shell"],"./shell.js":["b65b","highlight-js-shell"],"./swift":["2a39","highlight-js-swift"],"./swift.js":["2a39","highlight-js-swift"],"./xml":["8dcb","highlight-js-xml"],"./xml.js":["8dcb","highlight-js-xml"]};function s(e){if(!n.o(i,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=i[e],s=t[0];return n.e(t[1]).then((function(){return n.t(s,7)}))}s.keys=function(){return Object.keys(i)},s.id="2ab3",e.exports=s},"2d80":function(e,t,n){"use strict";n("3705")},"30b0":function(e,t,n){},"34b0":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"inline-chevron-right-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M2.964 1.366l0.649-0.76 7.426 6.343-7.423 6.445-0.655-0.755 6.545-5.683-6.542-5.59z"}})])},s=[],r=n("be08"),a={name:"InlineChevronRightIcon",components:{SVGIcon:r["a"]}},o=a,c=n("2877"),l=Object(c["a"])(o,i,s,!1,null,null,null);t["a"]=l.exports},3705:function(e,t,n){},"3b8f":function(e,t,n){},"47cc":function(e,t,n){},"4c7a":function(e,t,n){},"502c":function(e,t,n){"use strict";n("e1d1")},"50fc":function(e,t,n){},"52e4":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("WordBreak",{attrs:{tag:"code"}},[e._t("default")],2)},s=[],r=n("7b1f"),a={name:"CodeVoice",components:{WordBreak:r["a"]}},o=a,c=(n("8c92"),n("2877")),l=Object(c["a"])(o,i,s,!1,null,"05f4a5b7",null);t["a"]=l.exports},5677:function(e,t,n){"use strict";var i=n("e3ab"),s=n("7b69"),r=n("52e4"),a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"DictionaryExample"},[e._t("default"),n("CollapsibleCodeListing",{attrs:{content:e.example.content,showLineNumbers:""}})],2)},o=[],c=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"collapsible-code-listing",class:{"single-line":1===e.content[0].code.length}},[n("pre",[n("div",e._l(this.content,(function(t,i){return n("div",{key:i,class:["container-general",{collapsible:!0===t.collapsible},{collapsed:!0===t.collapsible&&e.collapsed}]},e._l(t.code,(function(t,i){return n("code",{key:i,staticClass:"code-line-container"},[e._v("\n "),n("div",{directives:[{name:"show",rawName:"v-show",value:e.showLineNumbers,expression:"showLineNumbers"}],staticClass:"code-number"}),e._v("\n "),n("div",{staticClass:"code-line"},[e._v(e._s(t))]),e._v("\n ")])})),0)})),0)])])},l=[],u={name:"CollapsibleCodeListing",props:{collapsed:{type:Boolean,required:!1},content:{type:Array,required:!0},showLineNumbers:{type:Boolean,default:()=>!0}}},d=u,h=(n("c919"),n("2877")),p=Object(h["a"])(d,c,l,!1,null,"369467b5",null),g=p.exports,f={name:"DictionaryExample",components:{CollapsibleCodeListing:g},props:{example:{type:Object,required:!0}}},m=f,b=Object(h["a"])(m,a,o,!1,null,null,null),v=b.exports,y=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("Row",{staticClass:"endpoint-example"},[n("Column",{staticClass:"example-code"},[e._t("default"),n("Tabnav",{model:{value:e.currentTab,callback:function(t){e.currentTab=t},expression:"currentTab"}},[n("TabnavItem",{attrs:{value:e.Tab.request}},[e._v(e._s(e.Tab.request))]),n("TabnavItem",{attrs:{value:e.Tab.response}},[e._v(e._s(e.Tab.response))])],1),n("div",{staticClass:"output"},[e.isCurrent(e.Tab.request)?n("div",{staticClass:"code"},[n("CollapsibleCodeListing",e._b({attrs:{collapsed:e.isCollapsed,showLineNumbers:""}},"CollapsibleCodeListing",e.request,!1))],1):e._e(),e.isCurrent(e.Tab.response)?n("div",{staticClass:"code"},[n("CollapsibleCodeListing",e._b({attrs:{collapsed:e.isCollapsed,showLineNumbers:""}},"CollapsibleCodeListing",e.response,!1))],1):e._e()]),e.isCollapsible?n("div",{staticClass:"controls"},[e.isCollapsed?n("a",{staticClass:"toggle",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.showMore.apply(null,arguments)}}},[n("InlinePlusCircleSolidIcon",{staticClass:"control-icon icon-inline"}),e._v(" More ")],1):n("a",{staticClass:"toggle",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.showLess.apply(null,arguments)}}},[n("InlineMinusCircleSolidIcon",{staticClass:"control-icon icon-inline"}),e._v(" Less ")],1)]):e._e()],2)],1)},w=[],x=n("0f00"),E=n("620a"),_=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("nav",{staticClass:"tabnav"},[n("ul",{staticClass:"tabnav-items"},[e._t("default")],2)])},j=[];const k="tabnavData";var T={name:"Tabnav",constants:{ProvideKey:k},provide(){const e={selectTab:this.selectTab};return Object.defineProperty(e,"activeTab",{enumerable:!0,get:()=>this.value}),{[k]:e}},props:{value:{type:String,required:!0}},methods:{selectTab(e){this.$emit("input",e)}}},C=T,S=(n("bab1"),Object(h["a"])(C,_,j,!1,null,"42371214",null)),O=S.exports,N=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("li",{staticClass:"tabnav-item"},[n("a",{staticClass:"tabnav-link",class:{active:e.isActive},attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.tabnavData.selectTab(e.value)}}},[e._t("default")],2)])},L=[],I={name:"TabnavItem",inject:{tabnavData:{default:{activeTab:null,selectTab:()=>{}}}},props:{value:{type:String,default:""}},computed:{isActive({tabnavData:e,value:t}){return e.activeTab===t}}},A=I,B=(n("c064"),Object(h["a"])(A,N,L,!1,null,"723a9588",null)),M=B.exports,$=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"inline-plus-circle-solid-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M7.005 0.5h-0.008c-1.791 0.004-3.412 0.729-4.589 1.9l0-0c-1.179 1.177-1.908 2.803-1.908 4.6 0 3.59 2.91 6.5 6.5 6.5s6.5-2.91 6.5-6.5c0-3.587-2.906-6.496-6.492-6.5h-0zM4.005 7.52v-1h2.5v-2.51h1v2.51h2.5v1h-2.501v2.49h-1v-2.49z"}})])},R=[],D=n("be08"),P={name:"InlinePlusCircleSolidIcon",components:{SVGIcon:D["a"]}},F=P,H=Object(h["a"])(F,$,R,!1,null,null,null),q=H.exports,V=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"inline-minus-circle-solid-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"m6.98999129.48999129c3.58985091 0 6.50000001 2.91014913 6.50000001 6.5 0 3.58985091-2.9101491 6.50000001-6.50000001 6.50000001-3.58985087 0-6.5-2.9101491-6.5-6.50000001 0-3.58985087 2.91014913-6.5 6.5-6.5zm3 6.02001742h-6v1h6z","fill-rule":"evenodd"}})])},U=[],z={name:"InlineMinusCircleSolidIcon",components:{SVGIcon:D["a"]}},G=z,W=Object(h["a"])(G,V,U,!1,null,null,null),K=W.exports;const Y={request:"Request",response:"Response"};var X={name:"EndpointExample",components:{InlineMinusCircleSolidIcon:K,InlinePlusCircleSolidIcon:q,TabnavItem:M,Tabnav:O,CollapsibleCodeListing:g,Row:x["a"],Column:E["a"]},constants:{Tab:Y},props:{request:{type:Object,required:!0},response:{type:Object,required:!0}},data(){return{isCollapsed:!0,currentTab:Y.request}},computed:{Tab:()=>Y,isCollapsible:({response:e,request:t,currentTab:n})=>{const i={[Y.request]:t.content,[Y.response]:e.content}[n]||[];return i.some(({collapsible:e})=>e)}},methods:{isCurrent(e){return this.currentTab===e},showMore(){this.isCollapsed=!1},showLess(){this.isCollapsed=!0}}},Z=X,J=(n("9a2b"),Object(h["a"])(Z,y,w,!1,null,"6197ce3f",null)),Q=J.exports,ee=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("figure",{attrs:{id:e.anchor}},[e._t("default")],2)},te=[],ne={name:"Figure",props:{anchor:{type:String,required:!0}}},ie=ne,se=(n("57ea"),Object(h["a"])(ie,ee,te,!1,null,"7be42fb4",null)),re=se.exports,ae=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("figcaption",{staticClass:"caption"},[n("strong",[e._v(e._s(e.title))]),e._v(" "),e._t("default")],2)},oe=[],ce={name:"FigureCaption",props:{title:{type:String,required:!0}}},le=ce,ue=(n("e7fb"),Object(h["a"])(le,ae,oe,!1,null,"0bcb8b58",null)),de=ue.exports,he=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ImageAsset",{attrs:{alt:e.alt,variants:e.variants}})},pe=[],ge=n("8bd9"),fe={name:"InlineImage",components:{ImageAsset:ge["a"]},props:{alt:{type:String,default:""},variants:{type:Array,required:!0}}},me=fe,be=(n("cb92"),Object(h["a"])(me,he,pe,!1,null,"3a939631",null)),ve=be.exports,ye=n("86d8"),we=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"table-wrapper"},[n("table",[e._t("default")],2)])},xe=[],Ee={name:"Table"},_e=Ee,je=(n("72af"),n("90f3"),Object(h["a"])(_e,we,xe,!1,null,"358dcd5e",null)),ke=je.exports,Te=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("s",[e._t("default")],2)},Ce=[],Se={name:"StrikeThrough"},Oe=Se,Ne=(n("830f"),Object(h["a"])(Oe,Te,Ce,!1,null,"eb91ce54",null)),Le=Ne.exports;const Ie={aside:"aside",codeListing:"codeListing",endpointExample:"endpointExample",heading:"heading",orderedList:"orderedList",paragraph:"paragraph",table:"table",termList:"termList",unorderedList:"unorderedList",dictionaryExample:"dictionaryExample"},Ae={codeVoice:"codeVoice",emphasis:"emphasis",image:"image",inlineHead:"inlineHead",link:"link",newTerm:"newTerm",reference:"reference",strong:"strong",text:"text",superscript:"superscript",subscript:"subscript",strikethrough:"strikethrough"},Be={both:"both",column:"column",none:"none",row:"row"};function Me(e,t){const n=n=>n.map(Me(e,t)),a=t=>t.map(t=>e("li",{},n(t.content))),o=(t,i=Be.none)=>{switch(i){case Be.both:{const[i,...s]=t;return[e("thead",{},[e("tr",{},i.map(t=>e("th",{attrs:{scope:"col"}},n(t))))]),e("tbody",{},s.map(([t,...i])=>e("tr",{},[e("th",{attrs:{scope:"row"}},n(t)),...i.map(t=>e("td",{},n(t)))])))]}case Be.column:return[e("tbody",{},t.map(([t,...i])=>e("tr",{},[e("th",{attrs:{scope:"row"}},n(t)),...i.map(t=>e("td",{},n(t)))])))];case Be.row:{const[i,...s]=t;return[e("thead",{},[e("tr",{},i.map(t=>e("th",{attrs:{scope:"col"}},n(t))))]),e("tbody",{},s.map(t=>e("tr",{},t.map(t=>e("td",{},n(t))))))]}default:return[e("tbody",{},t.map(t=>e("tr",{},t.map(t=>e("td",{},n(t))))))]}},c=({metadata:{abstract:t,anchor:i,title:s},...r})=>e(re,{props:{anchor:i}},[...s&&t&&t.length?[e(de,{props:{title:s}},n(t))]:[],n([r])]);return function(l){switch(l.type){case Ie.aside:{const t={kind:l.style,name:l.name};return e(i["a"],{props:t},n(l.content))}case Ie.codeListing:{if(l.metadata&&l.metadata.anchor)return c(l);const t={syntax:l.syntax,fileType:l.fileType,content:l.code,showLineNumbers:l.showLineNumbers};return e(s["a"],{props:t})}case Ie.endpointExample:{const t={request:l.request,response:l.response};return e(Q,{props:t},n(l.summary||[]))}case Ie.heading:return e("h"+l.level,{attrs:{id:l.anchor}},l.text);case Ie.orderedList:return e("ol",{attrs:{start:l.start}},a(l.items));case Ie.paragraph:return e("p",{},n(l.inlineContent));case Ie.table:return l.metadata&&l.metadata.anchor?c(l):e(ke,{},o(l.rows,l.header));case Ie.termList:return e("dl",{},l.items.map(({term:t,definition:i})=>[e("dt",{},n(t.inlineContent)),e("dd",{},n(i.content))]));case Ie.unorderedList:return e("ul",{},a(l.items));case Ie.dictionaryExample:{const t={example:l.example};return e(v,{props:t},n(l.summary||[]))}case Ae.codeVoice:return e(r["a"],{},l.code);case Ae.emphasis:case Ae.newTerm:return e("em",n(l.inlineContent));case Ae.image:{if(l.metadata&&l.metadata.anchor)return c(l);const n=t[l.identifier];return n?e(ve,{props:{alt:n.alt,variants:n.variants}}):null}case Ae.link:return e("a",{attrs:{href:l.destination}},l.title);case Ae.reference:{const i=t[l.identifier];if(!i)return null;const s=l.overridingTitleInlineContent||i.titleInlineContent,r=l.overridingTitle||i.title;return e(ye["a"],{props:{url:i.url,kind:i.kind,role:i.role,isActive:l.isActive,ideTitle:i.ideTitle,titleStyle:i.titleStyle}},s?n(s):r)}case Ae.strong:case Ae.inlineHead:return e("strong",n(l.inlineContent));case Ae.text:return l.text;case Ae.superscript:return e("sup",n(l.inlineContent));case Ae.subscript:return e("sub",n(l.inlineContent));case Ae.strikethrough:return e(Le,n(l.inlineContent));default:return null}}}var $e,Re,De={name:"ContentNode",constants:{TableHeaderStyle:Be},render:function(e){return e(this.tag,{class:"content"},this.content.map(Me(e,this.references),this))},inject:{references:{default(){return{}}}},props:{content:{type:Array,required:!0},tag:{type:String,default:()=>"div"}},methods:{map(e){function t(n=[]){return n.map(n=>{switch(n.type){case Ie.aside:return e({...n,content:t(n.content)});case Ie.dictionaryExample:return e({...n,summary:t(n.summary)});case Ie.paragraph:case Ae.emphasis:case Ae.strong:case Ae.inlineHead:case Ae.superscript:case Ae.subscript:case Ae.strikethrough:case Ae.newTerm:return e({...n,inlineContent:t(n.inlineContent)});case Ie.orderedList:case Ie.unorderedList:return e({...n,items:n.items.map(e=>({...e,content:t(e.content)}))});case Ie.table:return e({...n,rows:n.rows.map(e=>e.map(t))});case Ie.termList:return e({...n,items:n.items.map(e=>({...e,term:{inlineContent:t(e.term.inlineContent)},definition:{content:t(e.definition.content)}}))});default:return e(n)}})}return t(this.content)},forEach(e){function t(n=[]){n.forEach(n=>{switch(e(n),n.type){case Ie.aside:t(n.content);break;case Ie.paragraph:case Ae.emphasis:case Ae.strong:case Ae.inlineHead:case Ae.newTerm:case Ae.superscript:case Ae.subscript:case Ae.strikethrough:t(n.inlineContent);break;case Ie.orderedList:case Ie.unorderedList:n.items.forEach(e=>t(e.content));break;case Ie.dictionaryExample:t(n.summary);break;case Ie.table:n.rows.forEach(e=>{e.forEach(t)});break;case Ie.termList:n.items.forEach(e=>{t(e.term.inlineContent),t(e.definition.content)});break}})}return t(this.content)}},BlockType:Ie,InlineType:Ae},Pe=De,Fe=Object(h["a"])(Pe,$e,Re,!1,null,null,null);t["a"]=Fe.exports},"57ea":function(e,t,n){"use strict";n("971b")},"598a":function(e,t,n){},"620a":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"col",class:e.classes},[e._t("default")],2)},s=[];const r=0,a=12,o=new Set(["large","medium","small"]),c=e=>({type:Object,default:()=>({}),validator:t=>Object.keys(t).every(n=>o.has(n)&&e(t[n]))}),l=c(e=>"boolean"===typeof e),u=c(e=>"number"===typeof e&&e>=r&&e<=a);var d={name:"GridColumn",props:{isCentered:l,isUnCentered:l,span:{...u,default:()=>({large:a})}},computed:{classes:function(){return{["large-"+this.span.large]:void 0!==this.span.large,["medium-"+this.span.medium]:void 0!==this.span.medium,["small-"+this.span.small]:void 0!==this.span.small,"large-centered":!!this.isCentered.large,"medium-centered":!!this.isCentered.medium,"small-centered":!!this.isCentered.small,"large-uncentered":!!this.isUnCentered.large,"medium-uncentered":!!this.isUnCentered.medium,"small-uncentered":!!this.isUnCentered.small}}}},h=d,p=(n("6e4a"),n("2877")),g=Object(p["a"])(h,i,s,!1,null,"2ee3ad8b",null);t["a"]=g.exports},"621f":function(e,t,n){"use strict";n("b1d4")},"66cd":function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));const i={article:"article",codeListing:"codeListing",collection:"collection",collectionGroup:"collectionGroup",containerSymbol:"containerSymbol",devLink:"devLink",dictionarySymbol:"dictionarySymbol",generic:"generic",link:"link",media:"media",pseudoCollection:"pseudoCollection",pseudoSymbol:"pseudoSymbol",restRequestSymbol:"restRequestSymbol",sampleCode:"sampleCode",symbol:"symbol",table:"table",learn:"learn",overview:"overview",project:"project",tutorial:"tutorial",resources:"resources"}},"6cc4":function(e,t,n){},"6e4a":function(e,t,n){"use strict";n("05a1")},"72af":function(e,t,n){"use strict";n("d541")},"72e7":function(e,t,n){"use strict";const i={up:"up",down:"down"};t["a"]={constants:{IntersectionDirections:i},data(){return{intersectionObserver:null,intersectionPreviousScrollY:0,intersectionScrollDirection:i.down}},computed:{intersectionThreshold(){const e=[];for(let t=0;t<=1;t+=.01)e.push(t);return e},intersectionRoot(){return null},intersectionRootMargin(){return"0px 0px 0px 0px"},intersectionObserverOptions(){return{root:this.intersectionRoot,rootMargin:this.intersectionRootMargin,threshold:this.intersectionThreshold}}},async mounted(){await n.e("chunk-2d0d3105").then(n.t.bind(null,"5abe",7)),this.intersectionObserver=new IntersectionObserver(e=>{this.detectIntersectionScrollDirection();const t=this.onIntersect;t?e.forEach(t):console.warn("onIntersect not implemented")},this.intersectionObserverOptions),this.getIntersectionTargets().forEach(e=>{this.intersectionObserver.observe(e)})},beforeDestroy(){this.intersectionObserver&&this.intersectionObserver.disconnect()},methods:{getIntersectionTargets(){return[this.$el]},detectIntersectionScrollDirection(){window.scrollYthis.intersectionPreviousScrollY&&(this.intersectionScrollDirection=i.up),this.intersectionPreviousScrollY=window.scrollY}}}},"748c":function(e,t,n){"use strict";n.d(t,"d",(function(){return s})),n.d(t,"a",(function(){return r})),n.d(t,"c",(function(){return a})),n.d(t,"b",(function(){return o}));var i=n("6842");function s(e){return e.reduce((e,t)=>(t.traits.includes("dark")?e.dark.push(t):e.light.push(t),e),{light:[],dark:[]})}function r(e){const t=["1x","2x","3x"];return t.reduce((t,n)=>{const i=e.find(e=>e.traits.includes(n));return i?t.concat({density:n,src:i.url,size:i.size}):t},[])}function a(e){const t="/",n=new RegExp(t+"+","g");return e.join(t).replace(n,t)}function o(e){return e&&"string"===typeof e&&!e.startsWith(i["a"])&&e.startsWith("/")?a([i["a"],e]):e}},"76ab":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(e.resolvedComponent,e._b({tag:"component",staticClass:"button-cta",class:{"is-dark":e.isDark}},"component",e.componentProps,!1),[e._t("default")],2)},s=[],r=n("86d8"),a={name:"ButtonLink",components:{Reference:r["a"]},props:{url:{type:String,required:!1},isDark:{type:Boolean,default:!1}},computed:{resolvedComponent:({url:e})=>e?r["a"]:"button",componentProps:({url:e})=>e?{url:e}:{}}},o=a,c=(n("621f"),n("2877")),l=Object(c["a"])(o,i,s,!1,null,"494ad9c8",null);t["a"]=l.exports},"787d":function(e,t,n){},"7b1f":function(e,t,n){"use strict";var i,s,r={functional:!0,name:"WordBreak",render(e,{props:t,slots:n,data:i}){const s=n().default||[],r=s.filter(e=>e.text&&!e.tag);if(0===r.length||r.length!==s.length)return e(t.tag,i,s);const a=r.map(({text:e})=>e).join(),o=[];let c=null,l=0;while(null!==(c=t.safeBoundaryPattern.exec(a))){const t=c.index+1;o.push(a.slice(l,t)),o.push(e("wbr",{key:c.index})),l=t}return o.push(a.slice(l,a.length)),e(t.tag,i,o)},props:{safeBoundaryPattern:{type:RegExp,default:()=>/([a-z](?=[A-Z])|(:)\w|\w(?=[._]\w))/g},tag:{type:String,default:()=>"span"}}},a=r,o=n("2877"),c=Object(o["a"])(a,i,s,!1,null,null,null);t["a"]=c.exports},"7b69":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"code-listing",class:{"single-line":1===e.syntaxHighlightedLines.length},attrs:{"data-syntax":e.syntaxNameNormalized}},[e.fileName?n("Filename",{attrs:{isActionable:e.isFileNameActionable,fileType:e.fileType},on:{click:function(t){return e.$emit("file-name-click")}}},[e._v(e._s(e.fileName)+" ")]):e._e(),n("div",{staticClass:"container-general"},[n("pre",[n("code",e._l(e.syntaxHighlightedLines,(function(t,i){return n("span",{key:i,class:["code-line-container",{highlighted:e.isHighlighted(i)}]},[n("span",{directives:[{name:"show",rawName:"v-show",value:e.showLineNumbers,expression:"showLineNumbers"}],staticClass:"code-number",attrs:{"data-line-number":e.lineNumberFor(i)}}),e._v("\n"),n("span",{staticClass:"code-line",domProps:{innerHTML:e._s(t)}})])})),0)])])],1)},s=[],r=n("002d"),a=n("8649"),o=n("1020"),c=n.n(o);const l={bash:["sh","zsh"],c:["h"],cpp:["cc","c++","h++","hpp","hh","hxx","cxx"],css:[],diff:["patch"],http:["https"],java:["jsp"],javascript:["js","jsx","mjs","cjs"],json:[],llvm:[],markdown:["md","mkdown","mkd"],objectivec:["mm","objc","obj-c"],perl:["pl","pm"],php:[],python:["py","gyp","ipython"],ruby:["rb","gemspec","podspec","thor","irb"],scss:[],shell:["console","shellsession"],swift:[],xml:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"]},u=new Set(["markdown","swift"]),d=Object.entries(l),h=new Set(Object.keys(l)),p=new Map;async function g(e){const t=[e];try{return await t.reduce(async(e,t)=>{let i;await e,i=u.has(t)?await n("1417")("./"+t):await n("2ab3")("./"+t),c.a.registerLanguage(t,i.default)},Promise.resolve()),!0}catch(i){return console.error(`Could not load ${e} file`),!1}}function f(e){if(h.has(e))return e;const t=d.find(([,t])=>t.includes(e));return t?t[0]:null}function m(e){if(p.has(e))return p.get(e);const t=f(e);return p.set(e,t),t}c.a.configure({classPrefix:"syntax-",languages:[...h]});const b=async e=>{const t=m(e);return!(!t||c.a.listLanguages().includes(t))&&g(t)},v=/\r\n|\r|\n/g,y=/syntax-/;function w(e){return 0===e.length?[]:e.split(v)}function x(e){return(e.trim().match(v)||[]).length}function E(e){const t=document.createElement("template");return t.innerHTML=e,t.content.childNodes}function _(e){const{className:t}=e;if(!y.test(t))return null;const n=w(e.innerHTML).reduce((e,n)=>`${e}${n}\n`,"");return E(n.trim())}function j(e){return Array.from(e.childNodes).forEach(e=>{if(x(e.textContent))try{const t=e.childNodes.length?j(e):_(e);t&&e.replaceWith(...t)}catch(t){console.error(t)}}),_(e)}function k(e,t){if(!c.a.getLanguage(t))throw new Error("Unsupported language for syntax highlighting: "+t);return c.a.highlight(e,{language:t,ignoreIllegals:!0}).value}function T(e,t){const n=e.join("\n"),i=k(n,t),s=document.createElement("code");return s.innerHTML=i,j(s),w(s.innerHTML)}var C=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("span",{staticClass:"filename"},[e.isActionable?n("a",{attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.$emit("click")}}},[n("FileIcon",{attrs:{fileType:e.fileType}}),e._t("default")],2):n("span",[n("FileIcon",{attrs:{fileType:e.fileType}}),e._t("default")],2)])},S=[],O=function(){var e=this,t=e.$createElement,n=e._self._c||t;return"swift"===e.fileType?n("SwiftFileIcon",{staticClass:"file-icon"}):n("GenericFileIcon",{staticClass:"file-icon"})},N=[],L=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"swift-file-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M8.033 1l3.967 4.015v7.985h-10v-12zM7.615 2h-4.615v10h8v-6.574z"}}),n("path",{attrs:{d:"M7 1h1v4h-1z"}}),n("path",{attrs:{d:"M7 5h5v1h-5z"}})])},I=[],A=n("be08"),B={name:"SwiftFileIcon",components:{SVGIcon:A["a"]}},M=B,$=n("2877"),R=Object($["a"])(M,L,I,!1,null,null,null),D=R.exports,P=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"generic-file-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M8.033 1l3.967 4.015v7.985h-10v-12zM7.615 2h-4.615v10h8v-6.574z"}}),n("path",{attrs:{d:"M7 1h1v4h-1z"}}),n("path",{attrs:{d:"M7 5h5v1h-5z"}})])},F=[],H={name:"GenericFileIcon",components:{SVGIcon:A["a"]}},q=H,V=Object($["a"])(q,P,F,!1,null,null,null),U=V.exports,z={name:"CodeListingFileIcon",components:{SwiftFileIcon:D,GenericFileIcon:U},props:{fileType:String}},G=z,W=(n("e6db"),Object($["a"])(G,O,N,!1,null,"7c381064",null)),K=W.exports,Y={name:"CodeListingFilename",components:{FileIcon:K},props:{isActionable:{type:Boolean,default:()=>!1},fileType:String}},X=Y,Z=(n("8608"),Object($["a"])(X,C,S,!1,null,"c8c40662",null)),J=Z.exports,Q={name:"CodeListing",components:{Filename:J},data(){return{syntaxHighlightedLines:[]}},props:{fileName:String,isFileNameActionable:{type:Boolean,default:()=>!1},syntax:String,fileType:String,content:{type:Array,required:!0},startLineNumber:{type:Number,default:()=>1},highlights:{type:Array,default:()=>[]},showLineNumbers:{type:Boolean,default:()=>!1}},computed:{escapedContent:({content:e})=>e.map(r["c"]),highlightedLineNumbers(){return new Set(this.highlights.map(({line:e})=>e))},syntaxNameNormalized(){const e={occ:a["a"].objectiveC.key.url};return e[this.syntax]||this.syntax}},watch:{content:{handler:"syntaxHighlightLines",immediate:!0}},methods:{isHighlighted(e){return this.highlightedLineNumbers.has(this.lineNumberFor(e))},lineNumberFor(e){return this.startLineNumber+e},async syntaxHighlightLines(){let e;try{await b(this.syntaxNameNormalized),e=T(this.content,this.syntaxNameNormalized)}catch(t){e=this.escapedContent}this.syntaxHighlightedLines=e.map(e=>""===e?"\n":e)}}},ee=Q,te=(n("2d80"),Object($["a"])(ee,i,s,!1,null,"193a0b82",null));t["a"]=te.exports},"80c8":function(e,t,n){},"830f":function(e,t,n){"use strict";n("30b0")},8608:function(e,t,n){"use strict";n("a7f3")},8649:function(e,t,n){"use strict";t["a"]={objectiveC:{name:"Objective-C",key:{api:"occ",url:"objc"}},swift:{name:"Swift",key:{api:"swift",url:"swift"}}}},"86d8":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(e.refComponent,{tag:"component",attrs:{url:e.urlWithParams,"is-active":e.isActiveComputed}},[e._t("default")],2)},s=[],r=n("d26a"),a=n("66cd"),o=n("9895"),c=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.isActive?n("a",{attrs:{href:e.url}},[e._t("default")],2):n("span",[e._t("default")],2)},l=[],u={name:"ReferenceExternal",props:{url:{type:String,required:!0},isActive:{type:Boolean,default:!0}}},d=u,h=n("2877"),p=Object(h["a"])(d,c,l,!1,null,null,null),g=p.exports,f=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ReferenceInternal",e._b({},"ReferenceInternal",e.$props,!1),[n("CodeVoice",[e._t("default")],2)],1)},m=[],b=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.isActive?n("router-link",{attrs:{to:e.url}},[e._t("default")],2):n("span",[e._t("default")],2)},v=[],y={name:"ReferenceInternal",props:{url:{type:String,required:!0},isActive:{type:Boolean,default:!0}}},w=y,x=Object(h["a"])(w,b,v,!1,null,null,null),E=x.exports,_=n("52e4"),j={name:"ReferenceInternalSymbol",props:E.props,components:{ReferenceInternal:E,CodeVoice:_["a"]}},k=j,T=Object(h["a"])(k,f,m,!1,null,null,null),C=T.exports,S={name:"Reference",computed:{isInternal({url:e}){if(!e.startsWith("/")&&!e.startsWith("#"))return!1;const{resolved:{name:t}={}}=this.$router.resolve(e)||{};return t!==o["b"]},isSymbolReference(){return"symbol"===this.kind&&(this.role===a["a"].symbol||this.role===a["a"].dictionarySymbol)},isDisplaySymbol({isSymbolReference:e,titleStyle:t,ideTitle:n}){return n?e&&"symbol"===t:e},refComponent(){return this.isInternal?this.isDisplaySymbol?C:E:g},urlWithParams({isInternal:e}){return e?Object(r["b"])(this.url,this.$route.query):this.url},isActiveComputed({url:e,isActive:t}){return!(!e||!t)}},props:{url:{type:String,required:!0},kind:{type:String,required:!1},role:{type:String,required:!1},isActive:{type:Boolean,required:!1,default:!0},ideTitle:{type:String,required:!1},titleStyle:{type:String,required:!1}}},O=S,N=Object(h["a"])(O,i,s,!1,null,null,null);t["a"]=N.exports},"8a61":function(e,t,n){"use strict";t["a"]={methods:{scrollToElement(e){const t=this.$router.resolve({hash:e});return this.$router.options.scrollBehavior(t.route).then(({selector:e,offset:t})=>{const n=document.querySelector(e);return n?(n.scrollIntoView(),window.scrollBy(-t.x,-t.y),n):null})}}}},"8bd9":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("picture",[e.prefersAuto&&e.darkVariantAttributes?n("source",{attrs:{media:"(prefers-color-scheme: dark)",srcset:e.darkVariantAttributes.srcSet}}):e._e(),e.prefersDark&&e.darkVariantAttributes?n("img",e._b({attrs:{alt:e.alt}},"img",e.darkVariantAttributes,!1)):n("img",e._b({attrs:{alt:e.alt}},"img",e.defaultAttributes,!1))])},s=[],r=n("748c"),a={props:{variants:{type:Array,required:!0}},computed:{variantsGroupedByAppearance(){return Object(r["d"])(this.variants)},lightVariants(){return Object(r["a"])(this.variantsGroupedByAppearance.light)},darkVariants(){return Object(r["a"])(this.variantsGroupedByAppearance.dark)}}},o=n("e425"),c=n("821b");function l(e){if(!e.length)return null;const t=e.map(e=>`${Object(r["b"])(e.src)} ${e.density}`).join(", "),n=e[0],i={srcSet:t,src:Object(r["b"])(n.src)},{width:s}=n.size||{width:null};return s&&(i.width=s,i.height="auto"),i}var u={name:"ImageAsset",mixins:[a],data:()=>({appState:o["a"].state}),computed:{defaultAttributes:({lightVariantAttributes:e,darkVariantAttributes:t})=>e||t,darkVariantAttributes:({darkVariants:e})=>l(e),lightVariantAttributes:({lightVariants:e})=>l(e),preferredColorScheme:({appState:e})=>e.preferredColorScheme,prefersAuto:({preferredColorScheme:e})=>e===c["a"].auto.value,prefersDark:({preferredColorScheme:e})=>e===c["a"].dark.value},props:{alt:{type:String,default:""},variants:{type:Array,required:!0}}},d=u,h=n("2877"),p=Object(h["a"])(d,i,s,!1,null,null,null);t["a"]=p.exports},"8c92":function(e,t,n){"use strict";n("80c8")},"90f3":function(e,t,n){"use strict";n("6cc4")},9152:function(e,t,n){"use strict";n("50fc")},"95da":function(e,t,n){"use strict";function i(e,t){const n=document.body;let s=e,r=e;while(s=s.previousElementSibling)t(s);while(r=r.nextElementSibling)t(r);e.parentElement&&e.parentElement!==n&&i(e.parentElement,t)}const s="data-original-",r="aria-hidden",a=s+r,o=e=>{let t=e.getAttribute(a);t||(t=e.getAttribute(r)||"",e.setAttribute(a,t)),e.setAttribute(r,"true")},c=e=>{const t=e.getAttribute(a);"string"===typeof t&&(t.length?e.setAttribute(r,t):e.removeAttribute(r)),e.removeAttribute(a)};t["a"]={hide(e){i(e,o)},show(e){i(e,c)}}},"971b":function(e,t,n){},"9a2b":function(e,t,n){"use strict";n("dce7")},"9b30":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ul",{staticClass:"nav-menu-items",attrs:{"data-previous-menu-children-count":e.previousSiblingChildren}},[e._t("default")],2)},s=[],r={name:"NavMenuItems",props:{previousSiblingChildren:{type:Number,default:0}}},a=r,o=(n("502c"),n("2877")),c=Object(o["a"])(a,i,s,!1,null,"aa06bfc4",null);t["a"]=c.exports},"9bb2":function(e,t,n){"use strict";n("3b8f")},a1bd:function(e,t,n){},a7f3:function(e,t,n){},a97e:function(e,t,n){"use strict";var i=n("63b8");const s=e=>e?`(max-width: ${e}px)`:"",r=e=>e?`(min-width: ${e}px)`:"";function a({minWidth:e,maxWidth:t}){return["only screen",r(e),s(t)].filter(Boolean).join(" and ")}function o({maxWidth:e,minWidth:t}){return window.matchMedia(a({minWidth:t,maxWidth:e}))}var c,l,u={name:"BreakpointEmitter",constants:{BreakpointAttributes:i["a"],BreakpointName:i["b"],BreakpointScopes:i["c"]},props:{scope:{type:String,default:()=>i["c"].default,validator:e=>e in i["c"]}},render(){return this.$scopedSlots.default?this.$scopedSlots.default({matchingBreakpoint:this.matchingBreakpoint}):null},data:()=>({matchingBreakpoint:null}),methods:{initMediaQuery(e,t){const n=o(t),i=t=>this.handleMediaQueryChange(t,e);n.addListener(i),this.$once("hook:beforeDestroy",()=>{n.removeListener(i)}),i(n)},handleMediaQueryChange(e,t){e.matches&&(this.matchingBreakpoint=t,this.$emit("change",t))}},mounted(){const e=i["a"][this.scope]||{};Object.entries(e).forEach(([e,t])=>{this.initMediaQuery(e,t)})}},d=u,h=n("2877"),p=Object(h["a"])(d,c,l,!1,null,null,null);t["a"]=p.exports},b1d4:function(e,t,n){},b392:function(e,t,n){},bab1:function(e,t,n){"use strict";n("a1bd")},bb52:function(e,t,n){"use strict";t["a"]={inject:{performanceMetricsEnabled:{default:!1},isTargetIDE:{default:!1}},methods:{newContentMounted(){let e;this.performanceMetricsEnabled&&(e=Math.round(window.performance.now()),window.renderedTimes||(window.renderedTimes=[]),window.renderedTimes.push(e)),this.$bridge.send({type:"rendered",data:{time:e}})}}}},be08:function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("svg",{staticClass:"svg-icon",attrs:{"aria-hidden":"true",xmlns:"http://www.w3.org/2000/svg"}},[e._t("default")],2)},s=[],r={name:"SVGIcon"},a=r,o=(n("9bb2"),n("2877")),c=Object(o["a"])(a,i,s,!1,null,"0137d411",null);t["a"]=c.exports},c064:function(e,t,n){"use strict";n("ca8c")},c081:function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.action?n("DestinationDataProvider",{attrs:{destination:e.action},scopedSlots:e._u([{key:"default",fn:function(t){var i=t.url,s=t.title;return n("ButtonLink",{attrs:{url:i,isDark:e.isDark}},[e._v(" "+e._s(s)+" ")])}}],null,!1,1264376715)}):e._e()},s=[],r=n("76ab"),a=n("c7ea"),o={name:"CallToActionButton",components:{DestinationDataProvider:a["a"],ButtonLink:r["a"]},props:{action:{type:Object,required:!0},isDark:{type:Boolean,default:!1}}},c=o,l=n("2877"),u=Object(l["a"])(c,i,s,!1,null,null,null);t["a"]=u.exports},c7ea:function(e,t,n){"use strict";const i={link:"link",reference:"reference",text:"text"};var s,r,a={name:"DestinationDataProvider",props:{destination:{type:Object,required:!0,default:()=>({})}},inject:{references:{default:()=>({})},isTargetIDE:{default:()=>!1}},constants:{DestinationType:i},computed:{isExternal:({reference:e,destination:t})=>e.type===i.link||t.type===i.link,shouldAppendOpensInBrowser:({isExternal:e,isTargetIDE:t})=>e&&t,reference:({references:e,destination:t})=>e[t.identifier]||{},linkUrl:({destination:e,reference:t})=>({[i.link]:e.destination,[i.reference]:t.url,[i.text]:e.text}[e.type]),linkTitle:({reference:e,destination:t})=>({[i.link]:t.title,[i.reference]:t.overridingTitle||e.title,[i.text]:""}[t.type])},methods:{formatAriaLabel(e){return this.shouldAppendOpensInBrowser?e+" (opens in browser)":e}},render(){return this.$scopedSlots.default({url:this.linkUrl||"",title:this.linkTitle||"",formatAriaLabel:this.formatAriaLabel,isExternal:this.isExternal})}},o=a,c=n("2877"),l=Object(c["a"])(o,s,r,!1,null,null,null);t["a"]=l.exports},c8e2:function(e,t,n){"use strict";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.d(t,"a",(function(){return o}));const s=["input","select","textarea","button","optgroup","option","menuitem","fieldset","object","a[href]","*[tabindex]","*[contenteditable]"],r=s.join(",");var a={getTabbableElements(e){const t=e.querySelectorAll(r),n=t.length;let i;const s=[];for(i=0;i=0},isFocusableElement(e){const t=e.nodeName.toLowerCase(),n=s.includes(t);return!("a"!==t||!e.getAttribute("href"))||(n?!e.disabled:"true"===e.getAttribute("contenteditable")||!Number.isNaN(parseFloat(e.getAttribute("tabindex"))))}};class o{constructor(e){i(this,"focusContainer",null),i(this,"tabTargets",[]),i(this,"firstTabTarget",null),i(this,"lastTabTarget",null),i(this,"lastFocusedElement",null),this.focusContainer=e,this.onFocus=this.onFocus.bind(this)}updateFocusContainer(e){this.focusContainer=e}start(){this.collectTabTargets(),this.firstTabTarget?this.focusContainer.contains(document.activeElement)||this.firstTabTarget.focus():console.warn("There are no focusable elements. FocusTrap needs at least one."),this.lastFocusedElement=document.activeElement,document.addEventListener("focus",this.onFocus,!0)}stop(){document.removeEventListener("focus",this.onFocus,!0)}collectTabTargets(){this.tabTargets=a.getTabbableElements(this.focusContainer),this.firstTabTarget=this.tabTargets[0],this.lastTabTarget=this.tabTargets[this.tabTargets.length-1]}onFocus(e){if(this.focusContainer.contains(e.target))this.lastFocusedElement=e.target;else{if(e.preventDefault(),this.collectTabTargets(),this.lastFocusedElement===this.lastTabTarget||!this.lastFocusedElement)return this.firstTabTarget.focus(),void(this.lastFocusedElement=this.firstTabTarget);this.lastFocusedElement===this.firstTabTarget&&(this.lastTabTarget.focus(),this.lastFocusedElement=this.lastTabTarget)}}destroy(){this.stop(),this.focusContainer=null,this.tabTargets=[],this.firstTabTarget=null,this.lastTabTarget=null,this.lastFocusedElement=null}}},c919:function(e,t,n){"use strict";n("e5ca")},ca8c:function(e,t,n){},cb92:function(e,t,n){"use strict";n("598a")},cbcf:function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("nav",{ref:"nav",staticClass:"nav",class:e.rootClasses,attrs:{role:"navigation"}},[n("div",{ref:"wrapper",staticClass:"nav__wrapper"},[n("div",{staticClass:"nav__background"}),e.hasOverlay?n("div",{staticClass:"nav-overlay",on:{click:e.closeNav}}):e._e(),n("div",{staticClass:"nav-content"},[e.$slots.default?n("div",{staticClass:"nav-title"},[e._t("default")],2):e._e(),e._t("after-title"),n("div",{staticClass:"nav-menu"},[n("a",{ref:"axToggle",staticClass:"nav-ax-toggle",attrs:{href:"#",role:"button"},on:{click:function(t){return t.preventDefault(),e.toggleNav.apply(null,arguments)}}},[n("span",{staticClass:"visuallyhidden"},[e.isOpen?[e._v("Close Menu")]:[e._v("Open Menu")]],2)]),n("div",{ref:"tray",staticClass:"nav-menu-tray",on:{transitionend:function(t){return t.target!==t.currentTarget?null:e.onTransitionEnd.apply(null,arguments)},click:e.handleTrayClick}},[e._t("tray",(function(){return[n("NavMenuItems",[e._t("menu-items")],2)]}))],2)]),n("div",{staticClass:"nav-actions"},[n("a",{staticClass:"nav-menucta",attrs:{href:"#",tabindex:"-1","aria-hidden":"true"},on:{click:function(t){return t.preventDefault(),e.toggleNav.apply(null,arguments)}}},[n("span",{staticClass:"nav-menucta-chevron"})])])],2),e._t("after-content")],2),n("BreakpointEmitter",{attrs:{scope:e.BreakpointScopes.nav},on:{change:e.onBreakpointChange}})],1)},s=[],r=n("72e7"),a=n("9b30"),o=n("a97e"),c=n("c8e2"),l=n("f2af"),u=n("942d"),d=n("63b8"),h=n("95da");const{BreakpointName:p,BreakpointScopes:g}=o["a"].constants,f={isDark:"theme-dark",isOpen:"nav--is-open",inBreakpoint:"nav--in-breakpoint-range",isTransitioning:"nav--is-opening",isSticking:"nav--is-sticking",hasSolidBackground:"nav--solid-background",hasNoBorder:"nav--noborder",hasFullWidthBorder:"nav--fullwidth-border"};var m={name:"NavBase",components:{NavMenuItems:a["a"],BreakpointEmitter:o["a"]},constants:{NavStateClasses:f},props:{breakpoint:{type:String,default:p.small},hasOverlay:{type:Boolean,default:!0},hasSolidBackground:{type:Boolean,default:!1},hasNoBorder:{type:Boolean,default:!1},hasFullWidthBorder:{type:Boolean,default:!1},isDark:{type:Boolean,default:!1}},mixins:[r["a"]],data(){return{isOpen:!1,inBreakpoint:!1,isTransitioning:!1,isSticking:!1,focusTrapInstance:null}},computed:{BreakpointScopes:()=>g,rootClasses:({isOpen:e,inBreakpoint:t,isTransitioning:n,isSticking:i,hasSolidBackground:s,hasNoBorder:r,hasFullWidthBorder:a,isDark:o})=>({[f.isDark]:o,[f.isOpen]:e,[f.inBreakpoint]:t,[f.isTransitioning]:n,[f.isSticking]:i,[f.hasSolidBackground]:s,[f.hasNoBorder]:r,[f.hasFullWidthBorder]:a})},watch:{isOpen(e){this.$emit("change",e),e?this.onExpand():this.onClose()}},async mounted(){window.addEventListener("keydown",this.onEscape),window.addEventListener("popstate",this.closeNav),window.addEventListener("orientationchange",this.closeNav),document.addEventListener("click",this.handleClickOutside),await this.$nextTick(),this.focusTrapInstance=new c["a"](this.$refs.wrapper)},beforeDestroy(){window.removeEventListener("keydown",this.onEscape),window.removeEventListener("popstate",this.closeNav),window.removeEventListener("orientationchange",this.closeNav),document.removeEventListener("click",this.handleClickOutside),this.isOpen&&this.toggleScrollLock(!1),this.focusTrapInstance.destroy()},methods:{getIntersectionTargets(){return[document.getElementById(u["c"])||this.$el]},toggleNav(){this.isOpen=!this.isOpen,this.isTransitioning=!0},closeNav(){this.isOpen=!1},async onTransitionEnd({propertyName:e}){"max-height"===e&&(this.$emit("changed",this.isOpen),this.isTransitioning=!1,this.isOpen?(this.$emit("opened"),this.toggleScrollLock(!0)):this.$emit("closed"))},onBreakpointChange(e){const t=Object(d["d"])(e,this.breakpoint);this.inBreakpoint=!t,t&&this.closeNav()},onIntersect({intersectionRatio:e}){window.scrollY<0||(this.isSticking=1!==e)},onEscape({key:e}){"Escape"===e&&this.isOpen&&(this.closeNav(),this.$refs.axToggle.focus())},handleTrayClick({target:e}){e.href&&this.closeNav()},handleClickOutside({target:e}){this.$refs.nav.contains(e)||this.closeNav()},toggleScrollLock(e){e?l["a"].lockScroll(this.$refs.tray):l["a"].unlockScroll(this.$refs.tray)},onExpand(){this.$emit("open"),this.focusTrapInstance.start(),h["a"].hide(this.$refs.wrapper)},onClose(){this.$emit("close"),this.toggleScrollLock(!1),this.focusTrapInstance.stop(),h["a"].show(this.$refs.wrapper)}}},b=m,v=(n("d020"),n("2877")),y=Object(v["a"])(b,i,s,!1,null,"489e6297",null);t["a"]=y.exports},d020:function(e,t,n){"use strict";n("787d")},d541:function(e,t,n){},d8ce:function(e,t,n){"use strict";var i=n("6842");t["a"]={created(){if(this.pageTitle){const e=Object(i["c"])(["meta","title"],"Documentation"),t=[this.pageTitle,e].filter(Boolean);document.title=t.join(" | ")}}}},dce7:function(e,t,n){},e1d1:function(e,t,n){},e3ab:function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("aside",{class:e.kind,attrs:{"aria-label":e.kind}},[n("p",{staticClass:"label"},[e._v(e._s(e.label))]),e._t("default")],2)},s=[];const r={deprecated:"deprecated",experiment:"experiment",important:"important",note:"note",tip:"tip",warning:"warning"};var a={name:"Aside",props:{kind:{type:String,required:!0,validator:e=>Object.prototype.hasOwnProperty.call(r,e)},name:{type:String,required:!1}},computed:{label:({kind:e,name:t})=>t||{[r.deprecated]:"Deprecated",[r.experiment]:"Experiment",[r.important]:"Important",[r.note]:"Note",[r.tip]:"Tip",[r.warning]:"Warning"}[e]}},o=a,c=(n("9152"),n("2877")),l=Object(c["a"])(o,i,s,!1,null,"5117d474",null);t["a"]=l.exports},e5ca:function(e,t,n){},e6db:function(e,t,n){"use strict";n("47cc")},e7fb:function(e,t,n){"use strict";n("4c7a")},f2af:function(e,t,n){"use strict";let i=!1,s=-1,r=0;const a=()=>window.navigator&&window.navigator.platform&&(/iP(ad|hone|od)/.test(window.navigator.platform)||"MacIntel"===window.navigator.platform&&window.navigator.maxTouchPoints>1);function o(e){e.touches.length>1||e.preventDefault()}const c=e=>!!e&&e.scrollHeight-e.scrollTop<=e.clientHeight;function l(){r=document.body.getBoundingClientRect().top,document.body.style.overflow="hidden scroll",document.body.style.top=r+"px",document.body.style.position="fixed",document.body.style.width="100%"}function u(e){e.ontouchstart=null,e.ontouchmove=null,document.removeEventListener("touchmove",o)}function d(e,t){const n=e.targetTouches[0].clientY-s;return 0===t.scrollTop&&n>0||c(t)&&n<0?o(e):(e.stopPropagation(),!0)}function h(e){e.ontouchstart=e=>{1===e.targetTouches.length&&(s=e.targetTouches[0].clientY)},e.ontouchmove=t=>{1===t.targetTouches.length&&d(t,e)},document.addEventListener("touchmove",o,{passive:!1})}t["a"]={lockScroll(e){i||(a()?h(e):l(),i=!0)},unlockScroll(e){i&&(a()?u(e):(document.body.style.cssText="",window.scrollTo(0,Math.abs(r))),i=!1)}}}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/documentation-topic~topic~tutorials-overview.c5a22800.js b/Sources/Mockingbird.docc/Renderer/js/documentation-topic~topic~tutorials-overview.c5a22800.js deleted file mode 100644 index b8a8d6ac..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/documentation-topic~topic~tutorials-overview.c5a22800.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["documentation-topic~topic~tutorials-overview"],{"05a1":function(e,t,n){},"0f00":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"row"},[e._t("default")],2)},s=[],r={name:"GridRow"},a=r,o=(n("2224"),n("2877")),c=Object(o["a"])(a,i,s,!1,null,"be73599c",null);t["a"]=c.exports},1020:function(e,t){var n={exports:{}};function i(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach((function(t){var n=e[t];"object"!=typeof n||Object.isFrozen(n)||i(n)})),e}n.exports=i,n.exports.default=i;var s=n.exports;class r{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function a(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function o(e,...t){const n=Object.create(null);for(const i in e)n[i]=e[i];return t.forEach((function(e){for(const t in e)n[t]=e[t]})),n}const c="",l=e=>!!e.kind,u=(e,{prefix:t})=>{if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map((e,t)=>`${e}${"_".repeat(t+1)}`)].join(" ")}return`${t}${e}`};class d{constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=a(e)}openNode(e){if(!l(e))return;let t=e.kind;t=e.sublanguage?"language-"+t:u(t,{prefix:this.classPrefix}),this.span(t)}closeNode(e){l(e)&&(this.buffer+=c)}value(){return this.buffer}span(e){this.buffer+=``}}class h{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){while(this.closeNode());}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return"string"===typeof t?e.addText(t):t.children&&(e.openNode(t),t.children.forEach(t=>this._walk(e,t)),e.closeNode(t)),e}static _collapse(e){"string"!==typeof e&&e.children&&(e.children.every(e=>"string"===typeof e)?e.children=[e.children.join("")]:e.children.forEach(e=>{h._collapse(e)}))}}class p extends h{constructor(e){super(),this.options=e}addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())}addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){const e=new d(this,this.options);return e.value()}finalize(){return!0}}function g(e){return e?"string"===typeof e?e:e.source:null}function f(e){return v("(?=",e,")")}function m(e){return v("(?:",e,")*")}function b(e){return v("(?:",e,")?")}function v(...e){const t=e.map(e=>g(e)).join("");return t}function y(e){const t=e[e.length-1];return"object"===typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function w(...e){const t=y(e),n="("+(t.capture?"":"?:")+e.map(e=>g(e)).join("|")+")";return n}function x(e){return new RegExp(e.toString()+"|").exec("").length-1}function E(e,t){const n=e&&e.exec(t);return n&&0===n.index}const _=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function k(e,{joinWith:t}){let n=0;return e.map(e=>{n+=1;const t=n;let i=g(e),s="";while(i.length>0){const e=_.exec(i);if(!e){s+=i;break}s+=i.substring(0,e.index),i=i.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?s+="\\"+String(Number(e[1])+t):(s+=e[0],"("===e[0]&&n++)}return s}).map(e=>`(${e})`).join(t)}const j=/\b\B/,T="[a-zA-Z]\\w*",C="[a-zA-Z_]\\w*",S="\\b\\d+(\\.\\d+)?",O="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",N="\\b(0b[01]+)",L="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",I=(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=v(t,/.*\b/,e.binary,/\b.*/)),o({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},A={begin:"\\\\[\\s\\S]",relevance:0},B={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[A]},M={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[A]},$={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},R=function(e,t,n={}){const i=o({scope:"comment",begin:e,end:t,contains:[]},n);i.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const s=w("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return i.contains.push({begin:v(/[ ]+/,"(",s,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),i},D=R("//","$"),P=R("/\\*","\\*/"),F=R("#","$"),H={scope:"number",begin:S,relevance:0},q={scope:"number",begin:O,relevance:0},V={scope:"number",begin:N,relevance:0},U={begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[A,{begin:/\[/,end:/\]/,relevance:0,contains:[A]}]}]},z={scope:"title",begin:T,relevance:0},G={scope:"title",begin:C,relevance:0},W={begin:"\\.\\s*"+C,relevance:0},K=function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})};var Y=Object.freeze({__proto__:null,MATCH_NOTHING_RE:j,IDENT_RE:T,UNDERSCORE_IDENT_RE:C,NUMBER_RE:S,C_NUMBER_RE:O,BINARY_NUMBER_RE:N,RE_STARTERS_RE:L,SHEBANG:I,BACKSLASH_ESCAPE:A,APOS_STRING_MODE:B,QUOTE_STRING_MODE:M,PHRASAL_WORDS_MODE:$,COMMENT:R,C_LINE_COMMENT_MODE:D,C_BLOCK_COMMENT_MODE:P,HASH_COMMENT_MODE:F,NUMBER_MODE:H,C_NUMBER_MODE:q,BINARY_NUMBER_MODE:V,REGEXP_MODE:U,TITLE_MODE:z,UNDERSCORE_TITLE_MODE:G,METHOD_GUARD:W,END_SAME_AS_BEGIN:K});function X(e,t){const n=e.input[e.index-1];"."===n&&t.ignoreMatch()}function Z(e,t){void 0!==e.className&&(e.scope=e.className,delete e.className)}function J(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=X,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,void 0===e.relevance&&(e.relevance=0))}function Q(e,t){Array.isArray(e.illegal)&&(e.illegal=w(...e.illegal))}function ee(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function te(e,t){void 0===e.relevance&&(e.relevance=1)}const ne=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach(t=>{delete e[t]}),e.keywords=n.keywords,e.begin=v(n.beforeMatch,f(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},ie=["of","and","for","in","not","or","if","then","parent","list","value"],se="keyword";function re(e,t,n=se){const i=Object.create(null);return"string"===typeof e?s(n,e.split(" ")):Array.isArray(e)?s(n,e):Object.keys(e).forEach((function(n){Object.assign(i,re(e[n],t,n))})),i;function s(e,n){t&&(n=n.map(e=>e.toLowerCase())),n.forEach((function(t){const n=t.split("|");i[n[0]]=[e,ae(n[0],n[1])]}))}}function ae(e,t){return t?Number(t):oe(e)?0:1}function oe(e){return ie.includes(e.toLowerCase())}const ce={},le=e=>{console.error(e)},ue=(e,...t)=>{console.log("WARN: "+e,...t)},de=(e,t)=>{ce[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),ce[`${e}/${t}`]=!0)},he=new Error;function pe(e,t,{key:n}){let i=0;const s=e[n],r={},a={};for(let o=1;o<=t.length;o++)a[o+i]=s[o],r[o+i]=!0,i+=x(t[o-1]);e[n]=a,e[n]._emit=r,e[n]._multi=!0}function ge(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw le("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),he;if("object"!==typeof e.beginScope||null===e.beginScope)throw le("beginScope must be object"),he;pe(e,e.begin,{key:"beginScope"}),e.begin=k(e.begin,{joinWith:""})}}function fe(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw le("skip, excludeEnd, returnEnd not compatible with endScope: {}"),he;if("object"!==typeof e.endScope||null===e.endScope)throw le("endScope must be object"),he;pe(e,e.end,{key:"endScope"}),e.end=k(e.end,{joinWith:""})}}function me(e){e.scope&&"object"===typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,delete e.scope)}function be(e){me(e),"string"===typeof e.beginScope&&(e.beginScope={_wrap:e.beginScope}),"string"===typeof e.endScope&&(e.endScope={_wrap:e.endScope}),ge(e),fe(e)}function ve(e){function t(t,n){return new RegExp(g(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,t){t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),this.matchAt+=x(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const e=this.regexes.map(e=>e[1]);this.matcherRe=t(k(e,{joinWith:"|"}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e);if(!t)return null;const n=t.findIndex((e,t)=>t>0&&void 0!==e),i=this.matchIndexes[n];return t.splice(0,n),Object.assign(t,i)}}class i{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n;return this.rules.slice(e).forEach(([e,n])=>t.addRule(e,n)),t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex;let n=t.exec(e);if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}return n&&(this.regexIndex+=n.position+1,this.regexIndex===this.count&&this.considerAll()),n}}function s(e){const t=new i;return e.contains.forEach(e=>t.addRule(e.begin,{rule:e,type:"begin"})),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t}function r(n,i){const a=n;if(n.isCompiled)return a;[Z,ee,be,ne].forEach(e=>e(n,i)),e.compilerExtensions.forEach(e=>e(n,i)),n.__beforeBegin=null,[J,Q,te].forEach(e=>e(n,i)),n.isCompiled=!0;let o=null;return"object"===typeof n.keywords&&n.keywords.$pattern&&(n.keywords=Object.assign({},n.keywords),o=n.keywords.$pattern,delete n.keywords.$pattern),o=o||/\w+/,n.keywords&&(n.keywords=re(n.keywords,e.case_insensitive)),a.keywordPatternRe=t(o,!0),i&&(n.begin||(n.begin=/\B|\b/),a.beginRe=t(a.begin),n.end||n.endsWithParent||(n.end=/\B|\b/),n.end&&(a.endRe=t(a.end)),a.terminatorEnd=g(a.end)||"",n.endsWithParent&&i.terminatorEnd&&(a.terminatorEnd+=(n.end?"|":"")+i.terminatorEnd)),n.illegal&&(a.illegalRe=t(n.illegal)),n.contains||(n.contains=[]),n.contains=[].concat(...n.contains.map((function(e){return we("self"===e?n:e)}))),n.contains.forEach((function(e){r(e,a)})),n.starts&&r(n.starts,i),a.matcher=s(a),a}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=o(e.classNameAliases||{}),r(e)}function ye(e){return!!e&&(e.endsWithParent||ye(e.starts))}function we(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((function(t){return o(e,{variants:null},t)}))),e.cachedVariants?e.cachedVariants:ye(e)?o(e,{starts:e.starts?o(e.starts):null}):Object.isFrozen(e)?o(e):e}var xe="11.3.1";class Ee extends Error{constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}}const _e=a,ke=o,je=Symbol("nomatch"),Te=7,Ce=function(e){const t=Object.create(null),n=Object.create(null),i=[];let a=!0;const o="Could not find the language '{}', did you forget to load/include a language module?",c={disableAutodetect:!0,name:"Plain text",contains:[]};let l={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:p};function u(e){return l.noHighlightRe.test(e)}function d(e){let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"";const n=l.languageDetectRe.exec(t);if(n){const t=B(n[1]);return t||(ue(o.replace("{}",n[1])),ue("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}return t.split(/\s+/).find(e=>u(e)||B(e))}function h(e,t,n){let i="",s="";"object"===typeof t?(i=e,n=t.ignoreIllegals,s=t.language):(de("10.7.0","highlight(lang, code, ...args) has been deprecated."),de("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),s=e,i=t),void 0===n&&(n=!0);const r={code:i,language:s};P("before:highlight",r);const a=r.result?r.result:g(r.language,r.code,n);return a.code=r.code,P("after:highlight",a),a}function g(e,n,i,s){const c=Object.create(null);function u(e,t){return e.keywords[t]}function d(){if(!O.keywords)return void L.addText(I);let e=0;O.keywordPatternRe.lastIndex=0;let t=O.keywordPatternRe.exec(I),n="";while(t){n+=I.substring(e,t.index);const i=T.case_insensitive?t[0].toLowerCase():t[0],s=u(O,i);if(s){const[e,r]=s;if(L.addText(n),n="",c[i]=(c[i]||0)+1,c[i]<=Te&&(A+=r),e.startsWith("_"))n+=t[0];else{const n=T.classNameAliases[e]||e;L.addKeyword(t[0],n)}}else n+=t[0];e=O.keywordPatternRe.lastIndex,t=O.keywordPatternRe.exec(I)}n+=I.substr(e),L.addText(n)}function h(){if(""===I)return;let e=null;if("string"===typeof O.subLanguage){if(!t[O.subLanguage])return void L.addText(I);e=g(O.subLanguage,I,!0,N[O.subLanguage]),N[O.subLanguage]=e._top}else e=x(I,O.subLanguage.length?O.subLanguage:null);O.relevance>0&&(A+=e.relevance),L.addSublanguage(e._emitter,e.language)}function p(){null!=O.subLanguage?h():d(),I=""}function f(e,t){let n=1;while(void 0!==t[n]){if(!e._emit[n]){n++;continue}const i=T.classNameAliases[e[n]]||e[n],s=t[n];i?L.addKeyword(s,i):(I=s,d(),I=""),n++}}function m(e,t){return e.scope&&"string"===typeof e.scope&&L.openNode(T.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(L.addKeyword(I,T.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),I=""):e.beginScope._multi&&(f(e.beginScope,t),I="")),O=Object.create(e,{parent:{value:O}}),O}function b(e,t,n){let i=E(e.endRe,n);if(i){if(e["on:end"]){const n=new r(e);e["on:end"](t,n),n.isMatchIgnored&&(i=!1)}if(i){while(e.endsParent&&e.parent)e=e.parent;return e}}if(e.endsWithParent)return b(e.parent,t,n)}function v(e){return 0===O.matcher.regexIndex?(I+=e[0],1):(R=!0,0)}function y(e){const t=e[0],n=e.rule,i=new r(n),s=[n.__beforeBegin,n["on:begin"]];for(const r of s)if(r&&(r(e,i),i.isMatchIgnored))return v(t);return n.skip?I+=t:(n.excludeBegin&&(I+=t),p(),n.returnBegin||n.excludeBegin||(I=t)),m(n,e),n.returnBegin?0:t.length}function w(e){const t=e[0],i=n.substr(e.index),s=b(O,e,i);if(!s)return je;const r=O;O.endScope&&O.endScope._wrap?(p(),L.addKeyword(t,O.endScope._wrap)):O.endScope&&O.endScope._multi?(p(),f(O.endScope,e)):r.skip?I+=t:(r.returnEnd||r.excludeEnd||(I+=t),p(),r.excludeEnd&&(I=t));do{O.scope&&L.closeNode(),O.skip||O.subLanguage||(A+=O.relevance),O=O.parent}while(O!==s.parent);return s.starts&&m(s.starts,e),r.returnEnd?0:t.length}function _(){const e=[];for(let t=O;t!==T;t=t.parent)t.scope&&e.unshift(t.scope);e.forEach(e=>L.openNode(e))}let k={};function j(t,s){const r=s&&s[0];if(I+=t,null==r)return p(),0;if("begin"===k.type&&"end"===s.type&&k.index===s.index&&""===r){if(I+=n.slice(s.index,s.index+1),!a){const t=new Error(`0 width match regex (${e})`);throw t.languageName=e,t.badRule=k.rule,t}return 1}if(k=s,"begin"===s.type)return y(s);if("illegal"===s.type&&!i){const e=new Error('Illegal lexeme "'+r+'" for mode "'+(O.scope||"")+'"');throw e.mode=O,e}if("end"===s.type){const e=w(s);if(e!==je)return e}if("illegal"===s.type&&""===r)return 1;if($>1e5&&$>3*s.index){const e=new Error("potential infinite loop, way more iterations than matches");throw e}return I+=r,r.length}const T=B(e);if(!T)throw le(o.replace("{}",e)),new Error('Unknown language: "'+e+'"');const C=ve(T);let S="",O=s||C;const N={},L=new l.__emitter(l);_();let I="",A=0,M=0,$=0,R=!1;try{for(O.matcher.considerAll();;){$++,R?R=!1:O.matcher.considerAll(),O.matcher.lastIndex=M;const e=O.matcher.exec(n);if(!e)break;const t=n.substring(M,e.index),i=j(t,e);M=e.index+i}return j(n.substr(M)),L.closeAllNodes(),L.finalize(),S=L.toHTML(),{language:e,value:S,relevance:A,illegal:!1,_emitter:L,_top:O}}catch(D){if(D.message&&D.message.includes("Illegal"))return{language:e,value:_e(n),illegal:!0,relevance:0,_illegalBy:{message:D.message,index:M,context:n.slice(M-100,M+100),mode:D.mode,resultSoFar:S},_emitter:L};if(a)return{language:e,value:_e(n),illegal:!1,relevance:0,errorRaised:D,_emitter:L,_top:O};throw D}}function y(e){const t={value:_e(e),illegal:!1,relevance:0,_top:c,_emitter:new l.__emitter(l)};return t._emitter.addText(e),t}function x(e,n){n=n||l.languages||Object.keys(t);const i=y(e),s=n.filter(B).filter($).map(t=>g(t,e,!1));s.unshift(i);const r=s.sort((e,t)=>{if(e.relevance!==t.relevance)return t.relevance-e.relevance;if(e.language&&t.language){if(B(e.language).supersetOf===t.language)return 1;if(B(t.language).supersetOf===e.language)return-1}return 0}),[a,o]=r,c=a;return c.secondBest=o,c}function _(e,t,i){const s=t&&n[t]||i;e.classList.add("hljs"),e.classList.add("language-"+s)}function k(e){let t=null;const n=d(e);if(u(n))return;if(P("before:highlightElement",{el:e,language:n}),e.children.length>0&&(l.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/issues/2886"),console.warn(e)),l.throwUnescapedHTML)){const t=new Ee("One of your code blocks includes unescaped HTML.",e.innerHTML);throw t}t=e;const i=t.textContent,s=n?h(i,{language:n,ignoreIllegals:!0}):x(i);e.innerHTML=s.value,_(e,n,s.language),e.result={language:s.language,re:s.relevance,relevance:s.relevance},s.secondBest&&(e.secondBest={language:s.secondBest.language,relevance:s.secondBest.relevance}),P("after:highlightElement",{el:e,result:s,text:i})}function j(e){l=ke(l,e)}const T=()=>{O(),de("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function C(){O(),de("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let S=!1;function O(){if("loading"===document.readyState)return void(S=!0);const e=document.querySelectorAll(l.cssSelector);e.forEach(k)}function N(){S&&O()}function L(n,i){let s=null;try{s=i(e)}catch(r){if(le("Language definition for '{}' could not be registered.".replace("{}",n)),!a)throw r;le(r),s=c}s.name||(s.name=n),t[n]=s,s.rawDefinition=i.bind(null,e),s.aliases&&M(s.aliases,{languageName:n})}function I(e){delete t[e];for(const t of Object.keys(n))n[t]===e&&delete n[t]}function A(){return Object.keys(t)}function B(e){return e=(e||"").toLowerCase(),t[e]||t[n[e]]}function M(e,{languageName:t}){"string"===typeof e&&(e=[e]),e.forEach(e=>{n[e.toLowerCase()]=t})}function $(e){const t=B(e);return t&&!t.disableAutodetect}function R(e){e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{e["before:highlightBlock"](Object.assign({block:t.el},t))}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{e["after:highlightBlock"](Object.assign({block:t.el},t))})}function D(e){R(e),i.push(e)}function P(e,t){const n=e;i.forEach((function(e){e[n]&&e[n](t)}))}function F(e){return de("10.7.0","highlightBlock will be removed entirely in v12.0"),de("10.7.0","Please use highlightElement now."),k(e)}"undefined"!==typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",N,!1),Object.assign(e,{highlight:h,highlightAuto:x,highlightAll:O,highlightElement:k,highlightBlock:F,configure:j,initHighlighting:T,initHighlightingOnLoad:C,registerLanguage:L,unregisterLanguage:I,listLanguages:A,getLanguage:B,registerAliases:M,autoDetection:$,inherit:ke,addPlugin:D}),e.debugMode=function(){a=!1},e.safeMode=function(){a=!0},e.versionString=xe,e.regex={concat:v,lookahead:f,either:w,optional:b,anyNumberOfTimes:m};for(const r in Y)"object"===typeof Y[r]&&s(Y[r]);return Object.assign(e,Y),e};var Se=Ce({});e.exports=Se,Se.HighlightJS=Se,Se.default=Se},1417:function(e,t,n){var i={"./markdown":["84cb","highlight-js-custom-markdown"],"./markdown.js":["84cb","highlight-js-custom-markdown"],"./swift":["81c8","highlight-js-custom-swift"],"./swift.js":["81c8","highlight-js-custom-swift"]};function s(e){if(!n.o(i,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=i[e],s=t[0];return n.e(t[1]).then((function(){return n(s)}))}s.keys=function(){return Object.keys(i)},s.id="1417",e.exports=s},"146e":function(e,t,n){"use strict";var i=n("3908"),s=n("8a61");t["a"]={mixins:[s["a"]],async mounted(){this.$route.hash&&(await Object(i["a"])(8),this.scrollToElement(this.$route.hash))}}},2224:function(e,t,n){"use strict";n("b392")},"25a9":function(e,t,n){"use strict";n.d(t,"b",(function(){return m})),n.d(t,"c",(function(){return b})),n.d(t,"a",(function(){return v}));var i=n("748c"),s=n("d26a");const r={major:0,minor:2,patch:0};function a({major:e,minor:t,patch:n}){return[e,t,n].join(".")}const o=a(r);function c(e){return`[Swift-DocC-Render] The render node version for this page has a higher minor version (${e}) than Swift-DocC-Render supports (${o}). Compatibility is not guaranteed.`}const l=e=>`[Swift-DocC-Render] The render node version for this page (${e}) has a different major version component than Swift-DocC-Render supports (${o}). Compatibility is not guaranteed.`;function u(e){const{major:t,minor:n}=e,{major:i,minor:s}=r;return t!==i?l(a(e)):n>s?c(a(e)):""}function d(e){if(!e)return;const t=u(e);t&&console.warn(t)}var h=n("6842");class p extends Error{constructor(e){super("Unable to fetch data"),this.route=e}}async function g(e,t={}){function n(e){return("ide"!==Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET||0!==e.status)&&!e.ok}const i=new URL(e,window.location.href),r=Object(s["c"])(t);r&&(i.search=r);const a=await fetch(i.href);if(n(a))throw a;const o=await a.json();return d(o.schemaVersion),o}function f(e){const t=e.replace(/\/$/,"");return Object(i["c"])([h["a"],"data",t])+".json"}async function m(e,t,n){const i=f(e.path);let s;try{s=await g(i,e.query)}catch(r){if("ide"===Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET)throw console.error(r),!1;r.status&&404===r.status?n({name:"not-found",params:[e.path]}):n(new p(e))}return s}function b(e,t){return!Object(s["a"])(e,t)}function v(e){return JSON.parse(JSON.stringify(e))}},"2ab3":function(e,t,n){var i={"./bash":["f0f8","highlight-js-bash"],"./bash.js":["f0f8","highlight-js-bash"],"./c":["1fe5","highlight-js-c"],"./c.js":["1fe5","highlight-js-c"],"./cpp":["0209","highlight-js-cpp"],"./cpp.js":["0209","highlight-js-cpp"],"./css":["ee8c","highlight-js-css"],"./css.js":["ee8c","highlight-js-css"],"./diff":["48b8","highlight-js-diff"],"./diff.js":["48b8","highlight-js-diff"],"./http":["c01d","highlight-js-http"],"./http.js":["c01d","highlight-js-http"],"./java":["332f","highlight-js-java"],"./java.js":["332f","highlight-js-java"],"./javascript":["4dd1","highlight-js-javascript"],"./javascript.js":["4dd1","highlight-js-javascript"],"./json":["5ad2","highlight-js-json"],"./json.js":["5ad2","highlight-js-json"],"./llvm":["7c30","highlight-js-llvm"],"./llvm.js":["7c30","highlight-js-llvm"],"./markdown":["04b0","highlight-js-markdown"],"./markdown.js":["04b0","highlight-js-markdown"],"./objectivec":["9bf2","highlight-js-objectivec"],"./objectivec.js":["9bf2","highlight-js-objectivec"],"./perl":["6a51","highlight-js-perl"],"./perl.js":["6a51","highlight-js-perl"],"./php":["2907","highlight-js-php"],"./php.js":["2907","highlight-js-php"],"./python":["9510","highlight-js-python"],"./python.js":["9510","highlight-js-python"],"./ruby":["82cb","highlight-js-ruby"],"./ruby.js":["82cb","highlight-js-ruby"],"./scss":["6113","highlight-js-scss"],"./scss.js":["6113","highlight-js-scss"],"./shell":["b65b","highlight-js-shell"],"./shell.js":["b65b","highlight-js-shell"],"./swift":["2a39","highlight-js-swift"],"./swift.js":["2a39","highlight-js-swift"],"./xml":["8dcb","highlight-js-xml"],"./xml.js":["8dcb","highlight-js-xml"]};function s(e){if(!n.o(i,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=i[e],s=t[0];return n.e(t[1]).then((function(){return n.t(s,7)}))}s.keys=function(){return Object.keys(i)},s.id="2ab3",e.exports=s},"2d80":function(e,t,n){"use strict";n("3705")},"30b0":function(e,t,n){},"34b0":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"inline-chevron-right-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M2.964 1.366l0.649-0.76 7.426 6.343-7.423 6.445-0.655-0.755 6.545-5.683-6.542-5.59z"}})])},s=[],r=n("be08"),a={name:"InlineChevronRightIcon",components:{SVGIcon:r["a"]}},o=a,c=n("2877"),l=Object(c["a"])(o,i,s,!1,null,null,null);t["a"]=l.exports},3705:function(e,t,n){},"3b8f":function(e,t,n){},"47cc":function(e,t,n){},"4c7a":function(e,t,n){},"502c":function(e,t,n){"use strict";n("e1d1")},"50fc":function(e,t,n){},"52e4":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("WordBreak",{attrs:{tag:"code"}},[e._t("default")],2)},s=[],r=n("7b1f"),a={name:"CodeVoice",components:{WordBreak:r["a"]}},o=a,c=(n("8c92"),n("2877")),l=Object(c["a"])(o,i,s,!1,null,"05f4a5b7",null);t["a"]=l.exports},5677:function(e,t,n){"use strict";var i=n("e3ab"),s=n("7b69"),r=n("52e4"),a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"DictionaryExample"},[e._t("default"),n("CollapsibleCodeListing",{attrs:{content:e.example.content,showLineNumbers:""}})],2)},o=[],c=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"collapsible-code-listing",class:{"single-line":1===e.content[0].code.length}},[n("pre",[n("div",e._l(this.content,(function(t,i){return n("div",{key:i,class:["container-general",{collapsible:!0===t.collapsible},{collapsed:!0===t.collapsible&&e.collapsed}]},e._l(t.code,(function(t,i){return n("code",{key:i,staticClass:"code-line-container"},[e._v("\n "),n("div",{directives:[{name:"show",rawName:"v-show",value:e.showLineNumbers,expression:"showLineNumbers"}],staticClass:"code-number"}),e._v("\n "),n("div",{staticClass:"code-line"},[e._v(e._s(t))]),e._v("\n ")])})),0)})),0)])])},l=[],u={name:"CollapsibleCodeListing",props:{collapsed:{type:Boolean,required:!1},content:{type:Array,required:!0},showLineNumbers:{type:Boolean,default:()=>!0}}},d=u,h=(n("c919"),n("2877")),p=Object(h["a"])(d,c,l,!1,null,"369467b5",null),g=p.exports,f={name:"DictionaryExample",components:{CollapsibleCodeListing:g},props:{example:{type:Object,required:!0}}},m=f,b=Object(h["a"])(m,a,o,!1,null,null,null),v=b.exports,y=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("Row",{staticClass:"endpoint-example"},[n("Column",{staticClass:"example-code"},[e._t("default"),n("Tabnav",{model:{value:e.currentTab,callback:function(t){e.currentTab=t},expression:"currentTab"}},[n("TabnavItem",{attrs:{value:e.Tab.request}},[e._v(e._s(e.Tab.request))]),n("TabnavItem",{attrs:{value:e.Tab.response}},[e._v(e._s(e.Tab.response))])],1),n("div",{staticClass:"output"},[e.isCurrent(e.Tab.request)?n("div",{staticClass:"code"},[n("CollapsibleCodeListing",e._b({attrs:{collapsed:e.isCollapsed,showLineNumbers:""}},"CollapsibleCodeListing",e.request,!1))],1):e._e(),e.isCurrent(e.Tab.response)?n("div",{staticClass:"code"},[n("CollapsibleCodeListing",e._b({attrs:{collapsed:e.isCollapsed,showLineNumbers:""}},"CollapsibleCodeListing",e.response,!1))],1):e._e()]),e.isCollapsible?n("div",{staticClass:"controls"},[e.isCollapsed?n("a",{staticClass:"toggle",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.showMore.apply(null,arguments)}}},[n("InlinePlusCircleSolidIcon",{staticClass:"control-icon icon-inline"}),e._v(" More ")],1):n("a",{staticClass:"toggle",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.showLess.apply(null,arguments)}}},[n("InlineMinusCircleSolidIcon",{staticClass:"control-icon icon-inline"}),e._v(" Less ")],1)]):e._e()],2)],1)},w=[],x=n("0f00"),E=n("620a"),_=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("nav",{staticClass:"tabnav"},[n("ul",{staticClass:"tabnav-items"},[e._t("default")],2)])},k=[];const j="tabnavData";var T={name:"Tabnav",constants:{ProvideKey:j},provide(){const e={selectTab:this.selectTab};return Object.defineProperty(e,"activeTab",{enumerable:!0,get:()=>this.value}),{[j]:e}},props:{value:{type:String,required:!0}},methods:{selectTab(e){this.$emit("input",e)}}},C=T,S=(n("bab1"),Object(h["a"])(C,_,k,!1,null,"42371214",null)),O=S.exports,N=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("li",{staticClass:"tabnav-item"},[n("a",{staticClass:"tabnav-link",class:{active:e.isActive},attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.tabnavData.selectTab(e.value)}}},[e._t("default")],2)])},L=[],I={name:"TabnavItem",inject:{tabnavData:{default:{activeTab:null,selectTab:()=>{}}}},props:{value:{type:String,default:""}},computed:{isActive({tabnavData:e,value:t}){return e.activeTab===t}}},A=I,B=(n("c064"),Object(h["a"])(A,N,L,!1,null,"723a9588",null)),M=B.exports,$=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"inline-plus-circle-solid-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M7.005 0.5h-0.008c-1.791 0.004-3.412 0.729-4.589 1.9l0-0c-1.179 1.177-1.908 2.803-1.908 4.6 0 3.59 2.91 6.5 6.5 6.5s6.5-2.91 6.5-6.5c0-3.587-2.906-6.496-6.492-6.5h-0zM4.005 7.52v-1h2.5v-2.51h1v2.51h2.5v1h-2.501v2.49h-1v-2.49z"}})])},R=[],D=n("be08"),P={name:"InlinePlusCircleSolidIcon",components:{SVGIcon:D["a"]}},F=P,H=Object(h["a"])(F,$,R,!1,null,null,null),q=H.exports,V=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"inline-minus-circle-solid-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"m6.98999129.48999129c3.58985091 0 6.50000001 2.91014913 6.50000001 6.5 0 3.58985091-2.9101491 6.50000001-6.50000001 6.50000001-3.58985087 0-6.5-2.9101491-6.5-6.50000001 0-3.58985087 2.91014913-6.5 6.5-6.5zm3 6.02001742h-6v1h6z","fill-rule":"evenodd"}})])},U=[],z={name:"InlineMinusCircleSolidIcon",components:{SVGIcon:D["a"]}},G=z,W=Object(h["a"])(G,V,U,!1,null,null,null),K=W.exports;const Y={request:"Request",response:"Response"};var X={name:"EndpointExample",components:{InlineMinusCircleSolidIcon:K,InlinePlusCircleSolidIcon:q,TabnavItem:M,Tabnav:O,CollapsibleCodeListing:g,Row:x["a"],Column:E["a"]},constants:{Tab:Y},props:{request:{type:Object,required:!0},response:{type:Object,required:!0}},data(){return{isCollapsed:!0,currentTab:Y.request}},computed:{Tab:()=>Y,isCollapsible:({response:e,request:t,currentTab:n})=>{const i={[Y.request]:t.content,[Y.response]:e.content}[n]||[];return i.some(({collapsible:e})=>e)}},methods:{isCurrent(e){return this.currentTab===e},showMore(){this.isCollapsed=!1},showLess(){this.isCollapsed=!0}}},Z=X,J=(n("9a2b"),Object(h["a"])(Z,y,w,!1,null,"6197ce3f",null)),Q=J.exports,ee=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("figure",{attrs:{id:e.anchor}},[e._t("default")],2)},te=[],ne={name:"Figure",props:{anchor:{type:String,required:!0}}},ie=ne,se=(n("57ea"),Object(h["a"])(ie,ee,te,!1,null,"7be42fb4",null)),re=se.exports,ae=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("figcaption",{staticClass:"caption"},[n("strong",[e._v(e._s(e.title))]),e._v(" "),e._t("default")],2)},oe=[],ce={name:"FigureCaption",props:{title:{type:String,required:!0}}},le=ce,ue=(n("e7fb"),Object(h["a"])(le,ae,oe,!1,null,"0bcb8b58",null)),de=ue.exports,he=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ImageAsset",{attrs:{alt:e.alt,variants:e.variants}})},pe=[],ge=n("8bd9"),fe={name:"InlineImage",components:{ImageAsset:ge["a"]},props:{alt:{type:String,default:""},variants:{type:Array,required:!0}}},me=fe,be=(n("cb92"),Object(h["a"])(me,he,pe,!1,null,"3a939631",null)),ve=be.exports,ye=n("86d8"),we=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"table-wrapper"},[n("table",[e._t("default")],2)])},xe=[],Ee={name:"Table"},_e=Ee,ke=(n("72af"),n("90f3"),Object(h["a"])(_e,we,xe,!1,null,"358dcd5e",null)),je=ke.exports,Te=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("s",[e._t("default")],2)},Ce=[],Se={name:"StrikeThrough"},Oe=Se,Ne=(n("830f"),Object(h["a"])(Oe,Te,Ce,!1,null,"eb91ce54",null)),Le=Ne.exports;const Ie={aside:"aside",codeListing:"codeListing",endpointExample:"endpointExample",heading:"heading",orderedList:"orderedList",paragraph:"paragraph",table:"table",termList:"termList",unorderedList:"unorderedList",dictionaryExample:"dictionaryExample"},Ae={codeVoice:"codeVoice",emphasis:"emphasis",image:"image",inlineHead:"inlineHead",link:"link",newTerm:"newTerm",reference:"reference",strong:"strong",text:"text",superscript:"superscript",subscript:"subscript",strikethrough:"strikethrough"},Be={both:"both",column:"column",none:"none",row:"row"};function Me(e,t){const n=n=>n.map(Me(e,t)),a=t=>t.map(t=>e("li",{},n(t.content))),o=(t,i=Be.none)=>{switch(i){case Be.both:{const[i,...s]=t;return[e("thead",{},[e("tr",{},i.map(t=>e("th",{attrs:{scope:"col"}},n(t))))]),e("tbody",{},s.map(([t,...i])=>e("tr",{},[e("th",{attrs:{scope:"row"}},n(t)),...i.map(t=>e("td",{},n(t)))])))]}case Be.column:return[e("tbody",{},t.map(([t,...i])=>e("tr",{},[e("th",{attrs:{scope:"row"}},n(t)),...i.map(t=>e("td",{},n(t)))])))];case Be.row:{const[i,...s]=t;return[e("thead",{},[e("tr",{},i.map(t=>e("th",{attrs:{scope:"col"}},n(t))))]),e("tbody",{},s.map(t=>e("tr",{},t.map(t=>e("td",{},n(t))))))]}default:return[e("tbody",{},t.map(t=>e("tr",{},t.map(t=>e("td",{},n(t))))))]}},c=({metadata:{abstract:t,anchor:i,title:s},...r})=>e(re,{props:{anchor:i}},[...s&&t&&t.length?[e(de,{props:{title:s}},n(t))]:[],n([r])]);return function(l){switch(l.type){case Ie.aside:{const t={kind:l.style,name:l.name};return e(i["a"],{props:t},n(l.content))}case Ie.codeListing:{if(l.metadata&&l.metadata.anchor)return c(l);const t={syntax:l.syntax,fileType:l.fileType,content:l.code,showLineNumbers:l.showLineNumbers};return e(s["a"],{props:t})}case Ie.endpointExample:{const t={request:l.request,response:l.response};return e(Q,{props:t},n(l.summary||[]))}case Ie.heading:return e("h"+l.level,{attrs:{id:l.anchor}},l.text);case Ie.orderedList:return e("ol",{attrs:{start:l.start}},a(l.items));case Ie.paragraph:return e("p",{},n(l.inlineContent));case Ie.table:return l.metadata&&l.metadata.anchor?c(l):e(je,{},o(l.rows,l.header));case Ie.termList:return e("dl",{},l.items.map(({term:t,definition:i})=>[e("dt",{},n(t.inlineContent)),e("dd",{},n(i.content))]));case Ie.unorderedList:return e("ul",{},a(l.items));case Ie.dictionaryExample:{const t={example:l.example};return e(v,{props:t},n(l.summary||[]))}case Ae.codeVoice:return e(r["a"],{},l.code);case Ae.emphasis:case Ae.newTerm:return e("em",n(l.inlineContent));case Ae.image:{if(l.metadata&&l.metadata.anchor)return c(l);const n=t[l.identifier];return n?e(ve,{props:{alt:n.alt,variants:n.variants}}):null}case Ae.link:return e("a",{attrs:{href:l.destination}},l.title);case Ae.reference:{const i=t[l.identifier];if(!i)return null;const s=l.overridingTitleInlineContent||i.titleInlineContent,r=l.overridingTitle||i.title;return e(ye["a"],{props:{url:i.url,kind:i.kind,role:i.role,isActive:l.isActive,ideTitle:i.ideTitle,titleStyle:i.titleStyle}},s?n(s):r)}case Ae.strong:case Ae.inlineHead:return e("strong",n(l.inlineContent));case Ae.text:return l.text;case Ae.superscript:return e("sup",n(l.inlineContent));case Ae.subscript:return e("sub",n(l.inlineContent));case Ae.strikethrough:return e(Le,n(l.inlineContent));default:return null}}}var $e,Re,De={name:"ContentNode",constants:{TableHeaderStyle:Be},render:function(e){return e(this.tag,{class:"content"},this.content.map(Me(e,this.references),this))},inject:{references:{default(){return{}}}},props:{content:{type:Array,required:!0},tag:{type:String,default:()=>"div"}},methods:{map(e){function t(n=[]){return n.map(n=>{switch(n.type){case Ie.aside:return e({...n,content:t(n.content)});case Ie.dictionaryExample:return e({...n,summary:t(n.summary)});case Ie.paragraph:case Ae.emphasis:case Ae.strong:case Ae.inlineHead:case Ae.superscript:case Ae.subscript:case Ae.strikethrough:case Ae.newTerm:return e({...n,inlineContent:t(n.inlineContent)});case Ie.orderedList:case Ie.unorderedList:return e({...n,items:n.items.map(e=>({...e,content:t(e.content)}))});case Ie.table:return e({...n,rows:n.rows.map(e=>e.map(t))});case Ie.termList:return e({...n,items:n.items.map(e=>({...e,term:{inlineContent:t(e.term.inlineContent)},definition:{content:t(e.definition.content)}}))});default:return e(n)}})}return t(this.content)},forEach(e){function t(n=[]){n.forEach(n=>{switch(e(n),n.type){case Ie.aside:t(n.content);break;case Ie.paragraph:case Ae.emphasis:case Ae.strong:case Ae.inlineHead:case Ae.newTerm:case Ae.superscript:case Ae.subscript:case Ae.strikethrough:t(n.inlineContent);break;case Ie.orderedList:case Ie.unorderedList:n.items.forEach(e=>t(e.content));break;case Ie.dictionaryExample:t(n.summary);break;case Ie.table:n.rows.forEach(e=>{e.forEach(t)});break;case Ie.termList:n.items.forEach(e=>{t(e.term.inlineContent),t(e.definition.content)});break}})}return t(this.content)}},BlockType:Ie,InlineType:Ae},Pe=De,Fe=Object(h["a"])(Pe,$e,Re,!1,null,null,null);t["a"]=Fe.exports},"57ea":function(e,t,n){"use strict";n("971b")},"598a":function(e,t,n){},"620a":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"col",class:e.classes},[e._t("default")],2)},s=[];const r=0,a=12,o=new Set(["large","medium","small"]),c=e=>({type:Object,default:()=>({}),validator:t=>Object.keys(t).every(n=>o.has(n)&&e(t[n]))}),l=c(e=>"boolean"===typeof e),u=c(e=>"number"===typeof e&&e>=r&&e<=a);var d={name:"GridColumn",props:{isCentered:l,isUnCentered:l,span:{...u,default:()=>({large:a})}},computed:{classes:function(){return{["large-"+this.span.large]:void 0!==this.span.large,["medium-"+this.span.medium]:void 0!==this.span.medium,["small-"+this.span.small]:void 0!==this.span.small,"large-centered":!!this.isCentered.large,"medium-centered":!!this.isCentered.medium,"small-centered":!!this.isCentered.small,"large-uncentered":!!this.isUnCentered.large,"medium-uncentered":!!this.isUnCentered.medium,"small-uncentered":!!this.isUnCentered.small}}}},h=d,p=(n("6e4a"),n("2877")),g=Object(p["a"])(h,i,s,!1,null,"2ee3ad8b",null);t["a"]=g.exports},"621f":function(e,t,n){"use strict";n("b1d4")},"66cd":function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));const i={article:"article",codeListing:"codeListing",collection:"collection",collectionGroup:"collectionGroup",containerSymbol:"containerSymbol",devLink:"devLink",dictionarySymbol:"dictionarySymbol",generic:"generic",link:"link",media:"media",pseudoCollection:"pseudoCollection",pseudoSymbol:"pseudoSymbol",restRequestSymbol:"restRequestSymbol",sampleCode:"sampleCode",symbol:"symbol",table:"table",learn:"learn",overview:"overview",project:"project",tutorial:"tutorial",resources:"resources"}},"6cc4":function(e,t,n){},"6e4a":function(e,t,n){"use strict";n("05a1")},"72af":function(e,t,n){"use strict";n("d541")},"72e7":function(e,t,n){"use strict";const i={up:"up",down:"down"};t["a"]={constants:{IntersectionDirections:i},data(){return{intersectionObserver:null,intersectionPreviousScrollY:0,intersectionScrollDirection:i.down}},computed:{intersectionThreshold(){const e=[];for(let t=0;t<=1;t+=.01)e.push(t);return e},intersectionRoot(){return null},intersectionRootMargin(){return"0px 0px 0px 0px"},intersectionObserverOptions(){return{root:this.intersectionRoot,rootMargin:this.intersectionRootMargin,threshold:this.intersectionThreshold}}},async mounted(){await n.e("chunk-2d0d3105").then(n.t.bind(null,"5abe",7)),this.intersectionObserver=new IntersectionObserver(e=>{this.detectIntersectionScrollDirection();const t=this.onIntersect;t?e.forEach(t):console.warn("onIntersect not implemented")},this.intersectionObserverOptions),this.getIntersectionTargets().forEach(e=>{this.intersectionObserver.observe(e)})},beforeDestroy(){this.intersectionObserver&&this.intersectionObserver.disconnect()},methods:{getIntersectionTargets(){return[this.$el]},detectIntersectionScrollDirection(){window.scrollYthis.intersectionPreviousScrollY&&(this.intersectionScrollDirection=i.up),this.intersectionPreviousScrollY=window.scrollY}}}},"748c":function(e,t,n){"use strict";n.d(t,"d",(function(){return s})),n.d(t,"a",(function(){return r})),n.d(t,"c",(function(){return a})),n.d(t,"b",(function(){return o}));var i=n("6842");function s(e){return e.reduce((e,t)=>(t.traits.includes("dark")?e.dark.push(t):e.light.push(t),e),{light:[],dark:[]})}function r(e){const t=["1x","2x","3x"];return t.reduce((t,n)=>{const i=e.find(e=>e.traits.includes(n));return i?t.concat({density:n,src:i.url,size:i.size}):t},[])}function a(e){const t="/",n=new RegExp(t+"+","g");return e.join(t).replace(n,t)}function o(e){return e&&"string"===typeof e&&!e.startsWith(i["a"])&&e.startsWith("/")?a([i["a"],e]):e}},"76ab":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(e.resolvedComponent,e._b({tag:"component",staticClass:"button-cta",class:{"is-dark":e.isDark}},"component",e.componentProps,!1),[e._t("default")],2)},s=[],r=n("86d8"),a={name:"ButtonLink",components:{Reference:r["a"]},props:{url:{type:String,required:!1},isDark:{type:Boolean,default:!1}},computed:{resolvedComponent:({url:e})=>e?r["a"]:"button",componentProps:({url:e})=>e?{url:e}:{}}},o=a,c=(n("621f"),n("2877")),l=Object(c["a"])(o,i,s,!1,null,"494ad9c8",null);t["a"]=l.exports},"787d":function(e,t,n){},"7b1f":function(e,t,n){"use strict";var i,s,r={functional:!0,name:"WordBreak",render(e,{props:t,slots:n,data:i}){const s=n().default||[],r=s.filter(e=>e.text&&!e.tag);if(0===r.length||r.length!==s.length)return e(t.tag,i,s);const a=r.map(({text:e})=>e).join(),o=[];let c=null,l=0;while(null!==(c=t.safeBoundaryPattern.exec(a))){const t=c.index+1;o.push(a.slice(l,t)),o.push(e("wbr",{key:c.index})),l=t}return o.push(a.slice(l,a.length)),e(t.tag,i,o)},props:{safeBoundaryPattern:{type:RegExp,default:()=>/([a-z](?=[A-Z])|(:)\w|\w(?=[._]\w))/g},tag:{type:String,default:()=>"span"}}},a=r,o=n("2877"),c=Object(o["a"])(a,i,s,!1,null,null,null);t["a"]=c.exports},"7b69":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"code-listing",class:{"single-line":1===e.syntaxHighlightedLines.length},attrs:{"data-syntax":e.syntaxNameNormalized}},[e.fileName?n("Filename",{attrs:{isActionable:e.isFileNameActionable,fileType:e.fileType},on:{click:function(t){return e.$emit("file-name-click")}}},[e._v(e._s(e.fileName)+" ")]):e._e(),n("div",{staticClass:"container-general"},[n("pre",[n("code",e._l(e.syntaxHighlightedLines,(function(t,i){return n("span",{key:i,class:["code-line-container",{highlighted:e.isHighlighted(i)}]},[n("span",{directives:[{name:"show",rawName:"v-show",value:e.showLineNumbers,expression:"showLineNumbers"}],staticClass:"code-number",attrs:{"data-line-number":e.lineNumberFor(i)}}),e._v("\n"),n("span",{staticClass:"code-line",domProps:{innerHTML:e._s(t)}})])})),0)])])],1)},s=[],r=n("002d"),a=n("8649"),o=n("1020"),c=n.n(o);const l={bash:["sh","zsh"],c:["h"],cpp:["cc","c++","h++","hpp","hh","hxx","cxx"],css:[],diff:["patch"],http:["https"],java:["jsp"],javascript:["js","jsx","mjs","cjs"],json:[],llvm:[],markdown:["md","mkdown","mkd"],objectivec:["mm","objc","obj-c"],perl:["pl","pm"],php:[],python:["py","gyp","ipython"],ruby:["rb","gemspec","podspec","thor","irb"],scss:[],shell:["console","shellsession"],swift:[],xml:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"]},u=new Set(["markdown","swift"]),d=Object.entries(l),h=new Set(Object.keys(l)),p=new Map;async function g(e){const t=[e];try{return await t.reduce(async(e,t)=>{let i;await e,i=u.has(t)?await n("1417")("./"+t):await n("2ab3")("./"+t),c.a.registerLanguage(t,i.default)},Promise.resolve()),!0}catch(i){return console.error(`Could not load ${e} file`),!1}}function f(e){if(h.has(e))return e;const t=d.find(([,t])=>t.includes(e));return t?t[0]:null}function m(e){if(p.has(e))return p.get(e);const t=f(e);return p.set(e,t),t}c.a.configure({classPrefix:"syntax-",languages:[...h]});const b=async e=>{const t=m(e);return!(!t||c.a.listLanguages().includes(t))&&g(t)},v=/\r\n|\r|\n/g,y=/syntax-/;function w(e){return 0===e.length?[]:e.split(v)}function x(e){return(e.trim().match(v)||[]).length}function E(e){const t=document.createElement("template");return t.innerHTML=e,t.content.childNodes}function _(e){const{className:t}=e;if(!y.test(t))return null;const n=w(e.innerHTML).reduce((e,n)=>`${e}${n}\n`,"");return E(n.trim())}function k(e){return Array.from(e.childNodes).forEach(e=>{if(x(e.textContent))try{const t=e.childNodes.length?k(e):_(e);t&&e.replaceWith(...t)}catch(t){console.error(t)}}),_(e)}function j(e,t){if(!c.a.getLanguage(t))throw new Error("Unsupported language for syntax highlighting: "+t);return c.a.highlight(e,{language:t,ignoreIllegals:!0}).value}function T(e,t){const n=e.join("\n"),i=j(n,t),s=document.createElement("code");return s.innerHTML=i,k(s),w(s.innerHTML)}var C=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("span",{staticClass:"filename"},[e.isActionable?n("a",{attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.$emit("click")}}},[n("FileIcon",{attrs:{fileType:e.fileType}}),e._t("default")],2):n("span",[n("FileIcon",{attrs:{fileType:e.fileType}}),e._t("default")],2)])},S=[],O=function(){var e=this,t=e.$createElement,n=e._self._c||t;return"swift"===e.fileType?n("SwiftFileIcon",{staticClass:"file-icon"}):n("GenericFileIcon",{staticClass:"file-icon"})},N=[],L=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"swift-file-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M8.033 1l3.967 4.015v7.985h-10v-12zM7.615 2h-4.615v10h8v-6.574z"}}),n("path",{attrs:{d:"M7 1h1v4h-1z"}}),n("path",{attrs:{d:"M7 5h5v1h-5z"}})])},I=[],A=n("be08"),B={name:"SwiftFileIcon",components:{SVGIcon:A["a"]}},M=B,$=n("2877"),R=Object($["a"])(M,L,I,!1,null,null,null),D=R.exports,P=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"generic-file-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M8.033 1l3.967 4.015v7.985h-10v-12zM7.615 2h-4.615v10h8v-6.574z"}}),n("path",{attrs:{d:"M7 1h1v4h-1z"}}),n("path",{attrs:{d:"M7 5h5v1h-5z"}})])},F=[],H={name:"GenericFileIcon",components:{SVGIcon:A["a"]}},q=H,V=Object($["a"])(q,P,F,!1,null,null,null),U=V.exports,z={name:"CodeListingFileIcon",components:{SwiftFileIcon:D,GenericFileIcon:U},props:{fileType:String}},G=z,W=(n("e6db"),Object($["a"])(G,O,N,!1,null,"7c381064",null)),K=W.exports,Y={name:"CodeListingFilename",components:{FileIcon:K},props:{isActionable:{type:Boolean,default:()=>!1},fileType:String}},X=Y,Z=(n("8608"),Object($["a"])(X,C,S,!1,null,"c8c40662",null)),J=Z.exports,Q={name:"CodeListing",components:{Filename:J},data(){return{syntaxHighlightedLines:[]}},props:{fileName:String,isFileNameActionable:{type:Boolean,default:()=>!1},syntax:String,fileType:String,content:{type:Array,required:!0},startLineNumber:{type:Number,default:()=>1},highlights:{type:Array,default:()=>[]},showLineNumbers:{type:Boolean,default:()=>!1}},computed:{escapedContent:({content:e})=>e.map(r["c"]),highlightedLineNumbers(){return new Set(this.highlights.map(({line:e})=>e))},syntaxNameNormalized(){const e={occ:a["a"].objectiveC.key.url};return e[this.syntax]||this.syntax}},watch:{content:{handler:"syntaxHighlightLines",immediate:!0}},methods:{isHighlighted(e){return this.highlightedLineNumbers.has(this.lineNumberFor(e))},lineNumberFor(e){return this.startLineNumber+e},async syntaxHighlightLines(){let e;try{await b(this.syntaxNameNormalized),e=T(this.content,this.syntaxNameNormalized)}catch(t){e=this.escapedContent}this.syntaxHighlightedLines=e.map(e=>""===e?"\n":e)}}},ee=Q,te=(n("2d80"),Object($["a"])(ee,i,s,!1,null,"193a0b82",null));t["a"]=te.exports},"80c8":function(e,t,n){},"830f":function(e,t,n){"use strict";n("30b0")},8608:function(e,t,n){"use strict";n("a7f3")},8649:function(e,t,n){"use strict";t["a"]={objectiveC:{name:"Objective-C",key:{api:"occ",url:"objc"}},swift:{name:"Swift",key:{api:"swift",url:"swift"}}}},"86d8":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(e.refComponent,{tag:"component",attrs:{url:e.urlWithParams,"is-active":e.isActiveComputed}},[e._t("default")],2)},s=[],r=n("d26a"),a=n("66cd"),o=n("9895"),c=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.isActive?n("a",{attrs:{href:e.url}},[e._t("default")],2):n("span",[e._t("default")],2)},l=[],u={name:"ReferenceExternal",props:{url:{type:String,required:!0},isActive:{type:Boolean,default:!0}}},d=u,h=n("2877"),p=Object(h["a"])(d,c,l,!1,null,null,null),g=p.exports,f=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ReferenceInternal",e._b({},"ReferenceInternal",e.$props,!1),[n("CodeVoice",[e._t("default")],2)],1)},m=[],b=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.isActive?n("router-link",{attrs:{to:e.url}},[e._t("default")],2):n("span",[e._t("default")],2)},v=[],y={name:"ReferenceInternal",props:{url:{type:String,required:!0},isActive:{type:Boolean,default:!0}}},w=y,x=Object(h["a"])(w,b,v,!1,null,null,null),E=x.exports,_=n("52e4"),k={name:"ReferenceInternalSymbol",props:E.props,components:{ReferenceInternal:E,CodeVoice:_["a"]}},j=k,T=Object(h["a"])(j,f,m,!1,null,null,null),C=T.exports,S={name:"Reference",computed:{isInternal({url:e}){if(!e.startsWith("/")&&!e.startsWith("#"))return!1;const{resolved:{name:t}={}}=this.$router.resolve(e)||{};return t!==o["b"]},isSymbolReference(){return"symbol"===this.kind&&(this.role===a["a"].symbol||this.role===a["a"].dictionarySymbol)},isDisplaySymbol({isSymbolReference:e,titleStyle:t,ideTitle:n}){return n?e&&"symbol"===t:e},refComponent(){return this.isInternal?this.isDisplaySymbol?C:E:g},urlWithParams({isInternal:e}){return e?Object(r["b"])(this.url,this.$route.query):this.url},isActiveComputed({url:e,isActive:t}){return!(!e||!t)}},props:{url:{type:String,required:!0},kind:{type:String,required:!1},role:{type:String,required:!1},isActive:{type:Boolean,required:!1,default:!0},ideTitle:{type:String,required:!1},titleStyle:{type:String,required:!1}}},O=S,N=Object(h["a"])(O,i,s,!1,null,null,null);t["a"]=N.exports},"8a61":function(e,t,n){"use strict";t["a"]={methods:{scrollToElement(e){const t=this.$router.resolve({hash:e});return this.$router.options.scrollBehavior(t.route).then(({selector:e,offset:t})=>{const n=document.querySelector(e);return n?(n.scrollIntoView(),window.scrollBy(-t.x,-t.y),n):null})}}}},"8bd9":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("picture",[e.prefersAuto&&e.darkVariantAttributes?n("source",{attrs:{media:"(prefers-color-scheme: dark)",srcset:e.darkVariantAttributes.srcSet}}):e._e(),e.prefersDark&&e.darkVariantAttributes?n("img",e._b({attrs:{alt:e.alt}},"img",e.darkVariantAttributes,!1)):n("img",e._b({attrs:{alt:e.alt}},"img",e.defaultAttributes,!1))])},s=[],r=n("748c"),a={props:{variants:{type:Array,required:!0}},computed:{variantsGroupedByAppearance(){return Object(r["d"])(this.variants)},lightVariants(){return Object(r["a"])(this.variantsGroupedByAppearance.light)},darkVariants(){return Object(r["a"])(this.variantsGroupedByAppearance.dark)}}},o=n("e425"),c=n("821b");function l(e){if(!e.length)return null;const t=e.map(e=>`${Object(r["b"])(e.src)} ${e.density}`).join(", "),n=e[0],i={srcSet:t,src:Object(r["b"])(n.src)},{width:s}=n.size||{width:null};return s&&(i.width=s,i.height="auto"),i}var u={name:"ImageAsset",mixins:[a],data:()=>({appState:o["a"].state}),computed:{defaultAttributes:({lightVariantAttributes:e,darkVariantAttributes:t})=>e||t,darkVariantAttributes:({darkVariants:e})=>l(e),lightVariantAttributes:({lightVariants:e})=>l(e),preferredColorScheme:({appState:e})=>e.preferredColorScheme,prefersAuto:({preferredColorScheme:e})=>e===c["a"].auto.value,prefersDark:({preferredColorScheme:e})=>e===c["a"].dark.value},props:{alt:{type:String,default:""},variants:{type:Array,required:!0}}},d=u,h=n("2877"),p=Object(h["a"])(d,i,s,!1,null,null,null);t["a"]=p.exports},"8c92":function(e,t,n){"use strict";n("80c8")},"90f3":function(e,t,n){"use strict";n("6cc4")},9152:function(e,t,n){"use strict";n("50fc")},"95da":function(e,t,n){"use strict";function i(e,t){const n=document.body;let s=e,r=e;while(s=s.previousElementSibling)t(s);while(r=r.nextElementSibling)t(r);e.parentElement&&e.parentElement!==n&&i(e.parentElement,t)}const s="data-original-",r="aria-hidden",a=s+r,o=e=>{let t=e.getAttribute(a);t||(t=e.getAttribute(r)||"",e.setAttribute(a,t)),e.setAttribute(r,"true")},c=e=>{const t=e.getAttribute(a);"string"===typeof t&&(t.length?e.setAttribute(r,t):e.removeAttribute(r)),e.removeAttribute(a)};t["a"]={hide(e){i(e,o)},show(e){i(e,c)}}},"971b":function(e,t,n){},"9a2b":function(e,t,n){"use strict";n("dce7")},"9b30":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ul",{staticClass:"nav-menu-items",attrs:{"data-previous-menu-children-count":e.previousSiblingChildren}},[e._t("default")],2)},s=[],r={name:"NavMenuItems",props:{previousSiblingChildren:{type:Number,default:0}}},a=r,o=(n("502c"),n("2877")),c=Object(o["a"])(a,i,s,!1,null,"aa06bfc4",null);t["a"]=c.exports},"9bb2":function(e,t,n){"use strict";n("3b8f")},a1bd:function(e,t,n){},a7f3:function(e,t,n){},a97e:function(e,t,n){"use strict";var i=n("63b8");const s=e=>e?`(max-width: ${e}px)`:"",r=e=>e?`(min-width: ${e}px)`:"";function a({minWidth:e,maxWidth:t}){return["only screen",r(e),s(t)].filter(Boolean).join(" and ")}function o({maxWidth:e,minWidth:t}){return window.matchMedia(a({minWidth:t,maxWidth:e}))}var c,l,u={name:"BreakpointEmitter",constants:{BreakpointAttributes:i["a"],BreakpointName:i["b"],BreakpointScopes:i["c"]},props:{scope:{type:String,default:()=>i["c"].default,validator:e=>e in i["c"]}},render(){return this.$scopedSlots.default?this.$scopedSlots.default({matchingBreakpoint:this.matchingBreakpoint}):null},data:()=>({matchingBreakpoint:null}),methods:{initMediaQuery(e,t){const n=o(t),i=t=>this.handleMediaQueryChange(t,e);n.addListener(i),this.$once("hook:beforeDestroy",()=>{n.removeListener(i)}),i(n)},handleMediaQueryChange(e,t){e.matches&&(this.matchingBreakpoint=t,this.$emit("change",t))}},mounted(){const e=i["a"][this.scope]||{};Object.entries(e).forEach(([e,t])=>{this.initMediaQuery(e,t)})}},d=u,h=n("2877"),p=Object(h["a"])(d,c,l,!1,null,null,null);t["a"]=p.exports},b1d4:function(e,t,n){},b392:function(e,t,n){},bab1:function(e,t,n){"use strict";n("a1bd")},bb52:function(e,t,n){"use strict";t["a"]={inject:{performanceMetricsEnabled:{default:!1},isTargetIDE:{default:!1}},methods:{newContentMounted(){let e;this.performanceMetricsEnabled&&(e=Math.round(window.performance.now()),window.renderedTimes||(window.renderedTimes=[]),window.renderedTimes.push(e)),this.$bridge.send({type:"rendered",data:{time:e}})}}}},be08:function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("svg",{staticClass:"svg-icon",attrs:{"aria-hidden":"true",xmlns:"http://www.w3.org/2000/svg"}},[e._t("default")],2)},s=[],r={name:"SVGIcon"},a=r,o=(n("9bb2"),n("2877")),c=Object(o["a"])(a,i,s,!1,null,"0137d411",null);t["a"]=c.exports},c064:function(e,t,n){"use strict";n("ca8c")},c081:function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.action?n("DestinationDataProvider",{attrs:{destination:e.action},scopedSlots:e._u([{key:"default",fn:function(t){var i=t.url,s=t.title;return n("ButtonLink",{attrs:{url:i,isDark:e.isDark}},[e._v(" "+e._s(s)+" ")])}}],null,!1,1264376715)}):e._e()},s=[],r=n("76ab"),a=n("c7ea"),o={name:"CallToActionButton",components:{DestinationDataProvider:a["a"],ButtonLink:r["a"]},props:{action:{type:Object,required:!0},isDark:{type:Boolean,default:!1}}},c=o,l=n("2877"),u=Object(l["a"])(c,i,s,!1,null,null,null);t["a"]=u.exports},c7ea:function(e,t,n){"use strict";const i={link:"link",reference:"reference",text:"text"};var s,r,a={name:"DestinationDataProvider",props:{destination:{type:Object,required:!0,default:()=>({})}},inject:{references:{default:()=>({})},isTargetIDE:{default:()=>!1}},constants:{DestinationType:i},computed:{isExternal:({reference:e,destination:t})=>e.type===i.link||t.type===i.link,shouldAppendOpensInBrowser:({isExternal:e,isTargetIDE:t})=>e&&t,reference:({references:e,destination:t})=>e[t.identifier]||{},linkUrl:({destination:e,reference:t})=>({[i.link]:e.destination,[i.reference]:t.url,[i.text]:e.text}[e.type]),linkTitle:({reference:e,destination:t})=>({[i.link]:t.title,[i.reference]:t.overridingTitle||e.title,[i.text]:""}[t.type])},methods:{formatAriaLabel(e){return this.shouldAppendOpensInBrowser?e+" (opens in browser)":e}},render(){return this.$scopedSlots.default({url:this.linkUrl||"",title:this.linkTitle||"",formatAriaLabel:this.formatAriaLabel,isExternal:this.isExternal})}},o=a,c=n("2877"),l=Object(c["a"])(o,s,r,!1,null,null,null);t["a"]=l.exports},c8e2:function(e,t,n){"use strict";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.d(t,"a",(function(){return o}));const s=["input","select","textarea","button","optgroup","option","menuitem","fieldset","object","a[href]","*[tabindex]","*[contenteditable]"],r=s.join(",");var a={getTabbableElements(e){const t=e.querySelectorAll(r),n=t.length;let i;const s=[];for(i=0;i=0},isFocusableElement(e){const t=e.nodeName.toLowerCase(),n=s.includes(t);return!("a"!==t||!e.getAttribute("href"))||(n?!e.disabled:"true"===e.getAttribute("contenteditable")||!Number.isNaN(parseFloat(e.getAttribute("tabindex"))))}};class o{constructor(e){i(this,"focusContainer",null),i(this,"tabTargets",[]),i(this,"firstTabTarget",null),i(this,"lastTabTarget",null),i(this,"lastFocusedElement",null),this.focusContainer=e,this.onFocus=this.onFocus.bind(this)}updateFocusContainer(e){this.focusContainer=e}start(){this.collectTabTargets(),this.firstTabTarget?this.focusContainer.contains(document.activeElement)||this.firstTabTarget.focus():console.warn("There are no focusable elements. FocusTrap needs at least one."),this.lastFocusedElement=document.activeElement,document.addEventListener("focus",this.onFocus,!0)}stop(){document.removeEventListener("focus",this.onFocus,!0)}collectTabTargets(){this.tabTargets=a.getTabbableElements(this.focusContainer),this.firstTabTarget=this.tabTargets[0],this.lastTabTarget=this.tabTargets[this.tabTargets.length-1]}onFocus(e){if(this.focusContainer.contains(e.target))this.lastFocusedElement=e.target;else{if(e.preventDefault(),this.collectTabTargets(),this.lastFocusedElement===this.lastTabTarget||!this.lastFocusedElement)return this.firstTabTarget.focus(),void(this.lastFocusedElement=this.firstTabTarget);this.lastFocusedElement===this.firstTabTarget&&(this.lastTabTarget.focus(),this.lastFocusedElement=this.lastTabTarget)}}destroy(){this.stop(),this.focusContainer=null,this.tabTargets=[],this.firstTabTarget=null,this.lastTabTarget=null,this.lastFocusedElement=null}}},c919:function(e,t,n){"use strict";n("e5ca")},ca8c:function(e,t,n){},cb92:function(e,t,n){"use strict";n("598a")},cbcf:function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("nav",{ref:"nav",staticClass:"nav",class:e.rootClasses,attrs:{role:"navigation"}},[n("div",{ref:"wrapper",staticClass:"nav__wrapper"},[n("div",{staticClass:"nav__background"}),e.hasOverlay?n("div",{staticClass:"nav-overlay",on:{click:e.closeNav}}):e._e(),n("div",{staticClass:"nav-content"},[e.$slots.default?n("div",{staticClass:"nav-title"},[e._t("default")],2):e._e(),e._t("after-title"),n("div",{staticClass:"nav-menu"},[n("a",{ref:"axToggle",staticClass:"nav-ax-toggle",attrs:{href:"#",role:"button"},on:{click:function(t){return t.preventDefault(),e.toggleNav.apply(null,arguments)}}},[n("span",{staticClass:"visuallyhidden"},[e.isOpen?[e._v("Close Menu")]:[e._v("Open Menu")]],2)]),n("div",{ref:"tray",staticClass:"nav-menu-tray",on:{transitionend:function(t){return t.target!==t.currentTarget?null:e.onTransitionEnd.apply(null,arguments)},click:e.handleTrayClick}},[e._t("tray",(function(){return[n("NavMenuItems",[e._t("menu-items")],2)]}))],2)]),n("div",{staticClass:"nav-actions"},[n("a",{staticClass:"nav-menucta",attrs:{href:"#",tabindex:"-1","aria-hidden":"true"},on:{click:function(t){return t.preventDefault(),e.toggleNav.apply(null,arguments)}}},[n("span",{staticClass:"nav-menucta-chevron"})])])],2),e._t("after-content")],2),n("BreakpointEmitter",{attrs:{scope:e.BreakpointScopes.nav},on:{change:e.onBreakpointChange}})],1)},s=[],r=n("72e7"),a=n("9b30"),o=n("a97e"),c=n("c8e2"),l=n("f2af"),u=n("942d"),d=n("63b8"),h=n("95da");const{BreakpointName:p,BreakpointScopes:g}=o["a"].constants,f={isDark:"theme-dark",isOpen:"nav--is-open",inBreakpoint:"nav--in-breakpoint-range",isTransitioning:"nav--is-opening",isSticking:"nav--is-sticking",hasSolidBackground:"nav--solid-background",hasNoBorder:"nav--noborder",hasFullWidthBorder:"nav--fullwidth-border"};var m={name:"NavBase",components:{NavMenuItems:a["a"],BreakpointEmitter:o["a"]},constants:{NavStateClasses:f},props:{breakpoint:{type:String,default:p.small},hasOverlay:{type:Boolean,default:!0},hasSolidBackground:{type:Boolean,default:!1},hasNoBorder:{type:Boolean,default:!1},hasFullWidthBorder:{type:Boolean,default:!1},isDark:{type:Boolean,default:!1}},mixins:[r["a"]],data(){return{isOpen:!1,inBreakpoint:!1,isTransitioning:!1,isSticking:!1,focusTrapInstance:null}},computed:{BreakpointScopes:()=>g,rootClasses:({isOpen:e,inBreakpoint:t,isTransitioning:n,isSticking:i,hasSolidBackground:s,hasNoBorder:r,hasFullWidthBorder:a,isDark:o})=>({[f.isDark]:o,[f.isOpen]:e,[f.inBreakpoint]:t,[f.isTransitioning]:n,[f.isSticking]:i,[f.hasSolidBackground]:s,[f.hasNoBorder]:r,[f.hasFullWidthBorder]:a})},watch:{isOpen(e){this.$emit("change",e),e?this.onExpand():this.onClose()}},async mounted(){window.addEventListener("keydown",this.onEscape),window.addEventListener("popstate",this.closeNav),window.addEventListener("orientationchange",this.closeNav),document.addEventListener("click",this.handleClickOutside),await this.$nextTick(),this.focusTrapInstance=new c["a"](this.$refs.wrapper)},beforeDestroy(){window.removeEventListener("keydown",this.onEscape),window.removeEventListener("popstate",this.closeNav),window.removeEventListener("orientationchange",this.closeNav),document.removeEventListener("click",this.handleClickOutside),this.isOpen&&this.toggleScrollLock(!1),this.focusTrapInstance.destroy()},methods:{getIntersectionTargets(){return[document.getElementById(u["c"])||this.$el]},toggleNav(){this.isOpen=!this.isOpen,this.isTransitioning=!0},closeNav(){this.isOpen=!1},async onTransitionEnd({propertyName:e}){"max-height"===e&&(this.$emit("changed",this.isOpen),this.isTransitioning=!1,this.isOpen?(this.$emit("opened"),this.toggleScrollLock(!0)):this.$emit("closed"))},onBreakpointChange(e){const t=Object(d["d"])(e,this.breakpoint);this.inBreakpoint=!t,t&&this.closeNav()},onIntersect({intersectionRatio:e}){window.scrollY<0||(this.isSticking=1!==e)},onEscape({key:e}){"Escape"===e&&this.isOpen&&(this.closeNav(),this.$refs.axToggle.focus())},handleTrayClick({target:e}){e.href&&this.closeNav()},handleClickOutside({target:e}){this.$refs.nav.contains(e)||this.closeNav()},toggleScrollLock(e){e?l["a"].lockScroll(this.$refs.tray):l["a"].unlockScroll(this.$refs.tray)},onExpand(){this.$emit("open"),this.focusTrapInstance.start(),h["a"].hide(this.$refs.wrapper)},onClose(){this.$emit("close"),this.toggleScrollLock(!1),this.focusTrapInstance.stop(),h["a"].show(this.$refs.wrapper)}}},b=m,v=(n("d020"),n("2877")),y=Object(v["a"])(b,i,s,!1,null,"489e6297",null);t["a"]=y.exports},d020:function(e,t,n){"use strict";n("787d")},d541:function(e,t,n){},d8ce:function(e,t,n){"use strict";var i=n("6842");t["a"]={created(){if(this.pageTitle){const e=Object(i["c"])(["meta","title"],"Documentation"),t=[this.pageTitle,e].filter(Boolean);document.title=t.join(" | ")}}}},dce7:function(e,t,n){},e1d1:function(e,t,n){},e3ab:function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("aside",{class:e.kind,attrs:{"aria-label":e.kind}},[n("p",{staticClass:"label"},[e._v(e._s(e.label))]),e._t("default")],2)},s=[];const r={deprecated:"deprecated",experiment:"experiment",important:"important",note:"note",tip:"tip",warning:"warning"};var a={name:"Aside",props:{kind:{type:String,required:!0,validator:e=>Object.prototype.hasOwnProperty.call(r,e)},name:{type:String,required:!1}},computed:{label:({kind:e,name:t})=>t||{[r.deprecated]:"Deprecated",[r.experiment]:"Experiment",[r.important]:"Important",[r.note]:"Note",[r.tip]:"Tip",[r.warning]:"Warning"}[e]}},o=a,c=(n("9152"),n("2877")),l=Object(c["a"])(o,i,s,!1,null,"5117d474",null);t["a"]=l.exports},e5ca:function(e,t,n){},e6db:function(e,t,n){"use strict";n("47cc")},e7fb:function(e,t,n){"use strict";n("4c7a")},f2af:function(e,t,n){"use strict";let i=!1,s=-1,r=0;const a=()=>window.navigator&&window.navigator.platform&&(/iP(ad|hone|od)/.test(window.navigator.platform)||"MacIntel"===window.navigator.platform&&window.navigator.maxTouchPoints>1);function o(e){e.touches.length>1||e.preventDefault()}const c=e=>!!e&&e.scrollHeight-e.scrollTop<=e.clientHeight;function l(){r=document.body.getBoundingClientRect().top,document.body.style.overflow="hidden scroll",document.body.style.top=r+"px",document.body.style.position="fixed",document.body.style.width="100%"}function u(e){e.ontouchstart=null,e.ontouchmove=null,document.removeEventListener("touchmove",o)}function d(e,t){const n=e.targetTouches[0].clientY-s;return 0===t.scrollTop&&n>0||c(t)&&n<0?o(e):(e.stopPropagation(),!0)}function h(e){e.ontouchstart=e=>{1===e.targetTouches.length&&(s=e.targetTouches[0].clientY)},e.ontouchmove=t=>{1===t.targetTouches.length&&d(t,e)},document.addEventListener("touchmove",o,{passive:!1})}t["a"]={lockScroll(e){i||(a()?h(e):l(),i=!0)},unlockScroll(e){i&&(a()?u(e):(document.body.style.cssText="",window.scrollTo(0,Math.abs(r))),i=!1)}}}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/highlight-js-custom-swift.2aea0800.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-custom-swift.6a006062.js similarity index 81% rename from Sources/Mockingbird.docc/Renderer/js/highlight-js-custom-swift.2aea0800.js rename to Sources/Mockingbird.docc/Renderer/js/highlight-js-custom-swift.6a006062.js index 4009d3ad..490f1980 100644 --- a/Sources/Mockingbird.docc/Renderer/js/highlight-js-custom-swift.2aea0800.js +++ b/Sources/Mockingbird.docc/Renderer/js/highlight-js-custom-swift.6a006062.js @@ -7,4 +7,4 @@ * See https://swift.org/LICENSE.txt for license information * See https://swift.org/CONTRIBUTORS.txt for Swift project authors */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-custom-swift","highlight-js-swift"],{"2a39":function(e,n){function t(e){return e?"string"===typeof e?e:e.source:null}function a(e){return i("(?=",e,")")}function i(...e){const n=e.map(e=>t(e)).join("");return n}function s(e){const n=e[e.length-1];return"object"===typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{}}function c(...e){const n=s(e),a="("+(n.capture?"":"?:")+e.map(e=>t(e)).join("|")+")";return a}const u=e=>i(/\b/,e,/\w$/.test(e)?/\b/:/\B/),o=["Protocol","Type"].map(u),r=["init","self"].map(u),l=["Any","Self"],m=["actor","associatedtype","async","await",/as\?/,/as!/,"as","break","case","catch","class","continue","convenience","default","defer","deinit","didSet","do","dynamic","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],p=["false","nil","true"],d=["assignment","associativity","higherThan","left","lowerThan","none","right"],b=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warn_unqualified_access","#warning"],F=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],f=c(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),h=c(f,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),w=i(f,h,"*"),y=c(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),g=c(y,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),E=i(y,g,"*"),v=i(/[A-Z]/,g,"*"),A=["autoclosure",i(/convention\(/,c("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",i(/objc\(/,E,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","testable","UIApplicationMain","unknown","usableFromInline"],N=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function C(e){const n={match:/\s+/,relevance:0},t=e.COMMENT("/\\*","\\*/",{contains:["self"]}),s=[e.C_LINE_COMMENT_MODE,t],f={match:[/\./,c(...o,...r)],className:{2:"keyword"}},y={match:i(/\./,c(...m)),relevance:0},C=m.filter(e=>"string"===typeof e).concat(["_|0"]),k=m.filter(e=>"string"!==typeof e).concat(l).map(u),D={variants:[{className:"keyword",match:c(...k,...r)}]},B={$pattern:c(/\b\w+/,/#\w+/),keyword:C.concat(b),literal:p},_=[f,y,D],S={match:i(/\./,c(...F)),relevance:0},x={className:"built_in",match:i(/\b/,c(...F),/(?=\()/)},M=[S,x],I={match:/->/,relevance:0},O={className:"operator",relevance:0,variants:[{match:w},{match:`\\.(\\.|${h})+`}]},$=[I,O],L="([0-9]_*)+",j="([0-9a-fA-F]_*)+",T={className:"number",relevance:0,variants:[{match:`\\b(${L})(\\.(${L}))?([eE][+-]?(${L}))?\\b`},{match:`\\b0x(${j})(\\.(${j}))?([pP][+-]?(${L}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},K=(e="")=>({className:"subst",variants:[{match:i(/\\/,e,/[0\\tnr"']/)},{match:i(/\\/,e,/u\{[0-9a-fA-F]{1,8}\}/)}]}),P=(e="")=>({className:"subst",match:i(/\\/,e,/[\t ]*(?:[\r\n]|\r\n)/)}),z=(e="")=>({className:"subst",label:"interpol",begin:i(/\\/,e,/\(/),end:/\)/}),Z=(e="")=>({begin:i(e,/"""/),end:i(/"""/,e),contains:[K(e),P(e),z(e)]}),q=(e="")=>({begin:i(e,/"/),end:i(/"/,e),contains:[K(e),z(e)]}),U={className:"string",variants:[Z(),Z("#"),Z("##"),Z("###"),q(),q("#"),q("##"),q("###")]},V={match:i(/`/,E,/`/)},W={className:"variable",match:/\$\d+/},G={className:"variable",match:`\\$${g}+`},J=[V,W,G],R={match:/(@|#)available/,className:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:N,contains:[...$,T,U]}]}},X={className:"keyword",match:i(/@/,c(...A))},H={className:"meta",match:i(/@/,E)},Q=[R,X,H],Y={match:a(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:i(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,g,"+")},{className:"type",match:v,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:i(/\s+&\s+/,a(v)),relevance:0}]},ee={begin://,keywords:B,contains:[...s,..._,...Q,I,Y]};Y.contains.push(ee);const ne={match:i(E,/\s*:/),keywords:"_|0",relevance:0},te={begin:/\(/,end:/\)/,relevance:0,keywords:B,contains:["self",ne,...s,..._,...M,...$,T,U,...J,...Q,Y]},ae={begin://,contains:[...s,Y]},ie={begin:c(a(i(E,/\s*:/)),a(i(E,/\s+/,E,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:E}]},se={begin:/\(/,end:/\)/,keywords:B,contains:[ie,...s,..._,...$,T,U,...Q,Y,te],endsParent:!0,illegal:/["']/},ce={match:[/func/,/\s+/,c(V.match,E,w)],className:{1:"keyword",3:"title.function"},contains:[ae,se,n],illegal:[/\[/,/%/]},ue={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[ae,se,n],illegal:/\[|%/},oe={match:[/operator/,/\s+/,w],className:{1:"keyword",3:"title"}},re={begin:[/precedencegroup/,/\s+/,v],className:{1:"keyword",3:"title"},contains:[Y],keywords:[...d,...p],end:/}/};for(const a of U.variants){const e=a.contains.find(e=>"interpol"===e.label);e.keywords=B;const n=[..._,...M,...$,T,U,...J];e.contains=[...n,{begin:/\(/,end:/\)/,contains:["self",...n]}]}return{name:"Swift",keywords:B,contains:[...s,ce,ue,{beginKeywords:"struct protocol class extension enum actor",end:"\\{",excludeEnd:!0,keywords:B,contains:[e.inherit(e.TITLE_MODE,{className:"title.class",begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/}),..._]},oe,re,{beginKeywords:"import",end:/$/,contains:[...s],relevance:0},..._,...M,...$,T,U,...J,...Q,Y,te]}}e.exports=C},"81c8":function(e,n,t){"use strict";t.r(n),t.d(n,"either",(function(){return s})),t.d(n,"concat",(function(){return c}));var a=t("2a39"),i=t.n(a);function s(...e){const n=stripOptionsFromArgs(e),t="("+(n.capture?"":"?:")+e.map(e=>source(e)).join("|")+")";return t}function c(...e){const n=e.map(e=>source(e)).join("");return n}n["default"]=function(e){const n=i()(e),t=({beginKeywords:e=""})=>e.split(" ").includes("class"),a=n.contains.findIndex(t);if(a>=0){const{beginKeywords:e,...t}=n.contains[a];n.contains[a]={...t,begin:/\b(struct\b|protocol\b|extension\b|enum\b|actor\b|class\b(?!.*\bfunc\b))/}}return n.contains.push({className:"function",match:/\b[a-zA-Z_]\w*(?=\()/}),n}}}]); \ No newline at end of file +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-custom-swift","highlight-js-swift"],{"2a39":function(e,n){function t(e){return e?"string"===typeof e?e:e.source:null}function a(e){return i("(?=",e,")")}function i(...e){const n=e.map(e=>t(e)).join("");return n}function s(e){const n=e[e.length-1];return"object"===typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{}}function c(...e){const n=s(e),a="("+(n.capture?"":"?:")+e.map(e=>t(e)).join("|")+")";return a}const u=e=>i(/\b/,e,/\w$/.test(e)?/\b/:/\B/),o=["Protocol","Type"].map(u),r=["init","self"].map(u),l=["Any","Self"],m=["actor","associatedtype","async","await",/as\?/,/as!/,"as","break","case","catch","class","continue","convenience","default","defer","deinit","didSet","do","dynamic","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],p=["false","nil","true"],d=["assignment","associativity","higherThan","left","lowerThan","none","right"],b=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warn_unqualified_access","#warning"],F=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],h=c(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),f=c(h,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),w=i(h,f,"*"),y=c(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),g=c(y,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),E=i(y,g,"*"),v=i(/[A-Z]/,g,"*"),A=["autoclosure",i(/convention\(/,c("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",i(/objc\(/,E,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","testable","UIApplicationMain","unknown","usableFromInline"],N=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function C(e){const n={match:/\s+/,relevance:0},t=e.COMMENT("/\\*","\\*/",{contains:["self"]}),s=[e.C_LINE_COMMENT_MODE,t],h={match:[/\./,c(...o,...r)],className:{2:"keyword"}},y={match:i(/\./,c(...m)),relevance:0},C=m.filter(e=>"string"===typeof e).concat(["_|0"]),k=m.filter(e=>"string"!==typeof e).concat(l).map(u),D={variants:[{className:"keyword",match:c(...k,...r)}]},B={$pattern:c(/\b\w+/,/#\w+/),keyword:C.concat(b),literal:p},_=[h,y,D],S={match:i(/\./,c(...F)),relevance:0},x={className:"built_in",match:i(/\b/,c(...F),/(?=\()/)},M=[S,x],I={match:/->/,relevance:0},$={className:"operator",relevance:0,variants:[{match:w},{match:`\\.(\\.|${f})+`}]},O=[I,$],L="([0-9]_*)+",T="([0-9a-fA-F]_*)+",j={className:"number",relevance:0,variants:[{match:`\\b(${L})(\\.(${L}))?([eE][+-]?(${L}))?\\b`},{match:`\\b0x(${T})(\\.(${T}))?([pP][+-]?(${L}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},K=(e="")=>({className:"subst",variants:[{match:i(/\\/,e,/[0\\tnr"']/)},{match:i(/\\/,e,/u\{[0-9a-fA-F]{1,8}\}/)}]}),P=(e="")=>({className:"subst",match:i(/\\/,e,/[\t ]*(?:[\r\n]|\r\n)/)}),z=(e="")=>({className:"subst",label:"interpol",begin:i(/\\/,e,/\(/),end:/\)/}),Z=(e="")=>({begin:i(e,/"""/),end:i(/"""/,e),contains:[K(e),P(e),z(e)]}),q=(e="")=>({begin:i(e,/"/),end:i(/"/,e),contains:[K(e),z(e)]}),U={className:"string",variants:[Z(),Z("#"),Z("##"),Z("###"),q(),q("#"),q("##"),q("###")]},V={match:i(/`/,E,/`/)},W={className:"variable",match:/\$\d+/},G={className:"variable",match:`\\$${g}+`},J=[V,W,G],R={match:/(@|#)available/,className:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:N,contains:[...O,j,U]}]}},X={className:"keyword",match:i(/@/,c(...A))},H={className:"meta",match:i(/@/,E)},Q=[R,X,H],Y={match:a(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:i(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,g,"+")},{className:"type",match:v,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:i(/\s+&\s+/,a(v)),relevance:0}]},ee={begin://,keywords:B,contains:[...s,..._,...Q,I,Y]};Y.contains.push(ee);const ne={match:i(E,/\s*:/),keywords:"_|0",relevance:0},te={begin:/\(/,end:/\)/,relevance:0,keywords:B,contains:["self",ne,...s,..._,...M,...O,j,U,...J,...Q,Y]},ae={begin://,contains:[...s,Y]},ie={begin:c(a(i(E,/\s*:/)),a(i(E,/\s+/,E,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:E}]},se={begin:/\(/,end:/\)/,keywords:B,contains:[ie,...s,..._,...O,j,U,...Q,Y,te],endsParent:!0,illegal:/["']/},ce={match:[/func/,/\s+/,c(V.match,E,w)],className:{1:"keyword",3:"title.function"},contains:[ae,se,n],illegal:[/\[/,/%/]},ue={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[ae,se,n],illegal:/\[|%/},oe={match:[/operator/,/\s+/,w],className:{1:"keyword",3:"title"}},re={begin:[/precedencegroup/,/\s+/,v],className:{1:"keyword",3:"title"},contains:[Y],keywords:[...d,...p],end:/}/};for(const a of U.variants){const e=a.contains.find(e=>"interpol"===e.label);e.keywords=B;const n=[..._,...M,...O,j,U,...J];e.contains=[...n,{begin:/\(/,end:/\)/,contains:["self",...n]}]}return{name:"Swift",keywords:B,contains:[...s,ce,ue,{beginKeywords:"struct protocol class extension enum actor",end:"\\{",excludeEnd:!0,keywords:B,contains:[e.inherit(e.TITLE_MODE,{className:"title.class",begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/}),..._]},oe,re,{beginKeywords:"import",end:/$/,contains:[...s],relevance:0},..._,...M,...O,j,U,...J,...Q,Y,te]}}e.exports=C},"81c8":function(e,n,t){"use strict";t.r(n);var a=t("2a39"),i=t.n(a);n["default"]=function(e){const n=i()(e),t=({beginKeywords:e=""})=>e.split(" ").includes("class"),a=n.contains.findIndex(t);if(a>=0){const{beginKeywords:e,...t}=n.contains[a];n.contains[a]={...t,begin:/\b(struct\b|protocol\b|extension\b|enum\b|actor\b|class\b(?!.*\bfunc\b))/}}return n.contains.push({className:"function",match:/\b[a-zA-Z_]\w*(?=\()/}),n}}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/index.04a13994.js b/Sources/Mockingbird.docc/Renderer/js/index.04a13994.js new file mode 100644 index 00000000..68457d2c --- /dev/null +++ b/Sources/Mockingbird.docc/Renderer/js/index.04a13994.js @@ -0,0 +1,9 @@ +/*! + * This source file is part of the Swift.org open source project + * + * Copyright (c) 2021 Apple Inc. and the Swift project authors + * Licensed under Apache License v2.0 with Runtime Library Exception + * + * See https://swift.org/LICENSE.txt for license information + * See https://swift.org/CONTRIBUTORS.txt for Swift project authors + */(function(e){function t(t){for(var i,n,h=t[0],a=t[1],c=t[2],l=0,u=[];l])/g,n=/^-+/,r=/["'&<>]/g;function s(e){return e.trim().replace(i,"-").replace(n,"").toLowerCase()}function h(e){const t=e=>({'"':""","'":"'","&":"&","<":"<",">":">"}[e]||e);return e.replace(r,t)}const a={zero:"zero",one:"one",two:"two",few:"few",many:"many",other:"other"},c={cardinal:"cardinal",ordinal:"ordinal"};function l(e,t){const{cardinal:o}=c,{one:i,other:n}=a,r="en",s=1===t?i:n;if(!e[r]||!e[r][s])throw new Error("No default choices provided to pluralize using default locale "+r);let h=r,l=s;if("Intl"in window&&"PluralRules"in window.Intl){const i=navigator.languages?navigator.languages:[navigator.language],n=new Intl.PluralRules(i,{type:o}),r=n.select(t),s=n.resolvedOptions().locale;e[s]&&e[s][r]&&(h=s,l=r)}return e[h][l]}function u(e){const t=/#(\d)(.*)/.exec(e);if(null===t)return e;const[o,i]=t.slice(1),n=`\\3${o} `;return`#${n}${i}`}},"1b02":function(e,t,o){"use strict";o("a6ff")},"2be1":function(e,t,o){"use strict";o("9b4f")},3908:function(e,t,o){"use strict";function i(e){let t=null,o=e-1;const i=new Promise(e=>{t=e});return requestAnimationFrame((function e(){o-=1,o<=0?t():requestAnimationFrame(e)})),i}o.d(t,"a",(function(){return i}))},"5c0b":function(e,t,o){"use strict";o("9c0c")},"63b8":function(e,t,o){"use strict";o.d(t,"b",(function(){return i})),o.d(t,"c",(function(){return n})),o.d(t,"a",(function(){return r})),o.d(t,"d",(function(){return h}));const i={large:"large",medium:"medium",small:"small"},n={default:"default",nav:"nav"},r={[n.default]:{[i.large]:{minWidth:1069,contentWidth:980},[i.medium]:{minWidth:736,maxWidth:1068,contentWidth:692},[i.small]:{minWidth:320,maxWidth:735,contentWidth:280}},[n.nav]:{[i.large]:{minWidth:1024},[i.medium]:{minWidth:768,maxWidth:1023},[i.small]:{minWidth:320,maxWidth:767}}},s={[i.small]:0,[i.medium]:1,[i.large]:2};function h(e,t){return s[e]>s[t]}},6842:function(e,t,o){"use strict";function i(e,t,o){let i,n=e,r=t;for("string"===typeof r&&(r=[r]),i=0;ie.json()).catch(()=>({}))}const h=(e,t)=>i(n,e,t)},7138:function(e,t,o){"use strict";o("813c")},"813c":function(e,t,o){},"821b":function(e,t,o){"use strict";t["a"]={auto:{label:"Auto",value:"auto"},dark:{label:"Dark",value:"dark"},light:{label:"Light",value:"light"}}},"942d":function(e,t,o){"use strict";o.d(t,"a",(function(){return i})),o.d(t,"b",(function(){return n})),o.d(t,"c",(function(){return r}));const i=52,n=48,r="nav-sticky-anchor"},9895:function(e,t,o){"use strict";o.d(t,"b",(function(){return i})),o.d(t,"a",(function(){return n}));const i="not-found",n="documentation-topic"},"9b4f":function(e,t,o){},"9c0c":function(e,t,o){},a6aa:function(e,t,o){"use strict";o("d964")},a6ff:function(e,t,o){},d26a:function(e,t,o){"use strict";o.d(t,"c",(function(){return n})),o.d(t,"b",(function(){return r})),o.d(t,"a",(function(){return s}));var i={input:"input",tags:"tags"};function n(e={}){return Object.entries(e).reduce((e,[t,o])=>o?e.concat(`${encodeURIComponent(t)}=${encodeURIComponent(o)}`):e,[]).join("&")}function r(e,{changes:t,language:o,context:i}={}){const[r,s]=e.split("#"),h=r.match(/\?.*/),a=n({changes:t,language:o,context:i}),c=h?"&":"?",l=(s?r:e).replace(/^\/documentation\/mockingbird$/,"/").replace(/^\/documentation\/mockingbird/,""),u=a?`${c}${a}`:"",d=s?"#"+s:"";return`${l}${u}${d}`}function s(e,t){const{query:{changes:o,[i.input]:n,[i.tags]:r,...s}={}}=e,{query:{changes:h,[i.input]:a,[i.tags]:c,...l}={}}=t;return e.name===t.name&&JSON.stringify({path:e.path,query:s})===JSON.stringify({path:t.path,query:l})}},d369:function(e,t,o){"use strict";const i={getItem:e=>{try{return localStorage.getItem(e)}catch(t){return null}},setItem:(e,t)=>{try{localStorage.setItem(e,t)}catch(o){}}},n={preferredColorScheme:"developer.setting.preferredColorScheme",preferredLanguage:"docs.setting.preferredLanguage"},r={preferredColorScheme:"docs.setting.preferredColorScheme"};t["a"]=Object.defineProperties({},Object.keys(n).reduce((e,t)=>({...e,[t]:{get:()=>{const e=r[t],o=i.getItem(n[t]);return e?o||i.getItem(e):o},set:e=>i.setItem(n[t],e)}}),{}))},d964:function(e,t,o){},e425:function(e,t,o){"use strict";var i=o("821b"),n=o("d369");const r="undefined"!==typeof window.matchMedia&&[i["a"].light.value,i["a"].dark.value,"no-preference"].some(e=>window.matchMedia(`(prefers-color-scheme: ${e})`).matches),s=r?i["a"].auto:i["a"].light;t["a"]={state:{preferredColorScheme:n["a"].preferredColorScheme||s.value,supportsAutoColorScheme:r,systemColorScheme:i["a"].light.value},setPreferredColorScheme(e){this.state.preferredColorScheme=e,n["a"].preferredColorScheme=e},setSystemColorScheme(e){this.state.systemColorScheme=e},syncPreferredColorScheme(){n["a"].preferredColorScheme&&n["a"].preferredColorScheme!==this.state.preferredColorScheme&&(this.state.preferredColorScheme=n["a"].preferredColorScheme)}}},e4ca:function(e,t,o){},e51f:function(e,t,o){"use strict";o("e4ca")},ed96:function(e,t,o){o.p=window.baseUrl},f161:function(e,t,o){"use strict";o.r(t);o("ed96");var i=o("2b0e"),n=o("8c4f"),r=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{class:{fromkeyboard:e.fromKeyboard,hascustomheader:e.hasCustomHeader},attrs:{id:"app"}},[o("a",{attrs:{href:"#main",id:"skip-nav"}},[e._v("Skip Navigation")]),o("InitialLoadingPlaceholder"),e._t("header",(function(){return[e.hasCustomHeader?o("custom-header",{attrs:{"data-color-scheme":e.preferredColorScheme}}):e._e()]}),{isTargetIDE:e.isTargetIDE}),o("div",{attrs:{id:e.baseNavStickyAnchorId}}),e._t("default",(function(){return[o("router-view"),e.hasCustomFooter?o("custom-footer",{attrs:{"data-color-scheme":e.preferredColorScheme}}):o("Footer")]}),{isTargetIDE:e.isTargetIDE}),e._t("footer",null,{isTargetIDE:e.isTargetIDE})],2)},s=[],h=o("e425"),a=o("821b"),c=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("footer",{staticClass:"footer"},[o("div",{staticClass:"row"},[o("ColorSchemeToggle")],1)])},l=[],u=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{staticClass:"color-scheme-toggle",attrs:{"aria-label":"Select a color scheme preference",role:"radiogroup",tabindex:"0"}},e._l(e.options,(function(t){return o("label",{key:t.value},[o("input",{attrs:{type:"radio"},domProps:{checked:t.value==e.preferredColorScheme,value:t.value},on:{input:e.setPreferredColorScheme}}),o("div",{staticClass:"text"},[e._v(e._s(t.label))])])})),0)},d=[],g={name:"ColorSchemeToggle",data:()=>({appState:h["a"].state}),computed:{options:({supportsAutoColorScheme:e})=>[a["a"].light,a["a"].dark,...e?[a["a"].auto]:[]],preferredColorScheme:({appState:e})=>e.preferredColorScheme,supportsAutoColorScheme:({appState:e})=>e.supportsAutoColorScheme},methods:{setPreferredColorScheme:e=>{h["a"].setPreferredColorScheme(e.target.value)}},watch:{preferredColorScheme:{immediate:!0,handler(e){document.body.dataset.colorScheme=e}}}},f=g,m=(o("2be1"),o("2877")),p=Object(m["a"])(f,u,d,!1,null,"4472ec1e",null),j=p.exports,v={name:"Footer",components:{ColorSchemeToggle:j}},w=v,b=(o("1b02"),Object(m["a"])(w,c,l,!1,null,"67c823d8",null)),y=b.exports,S=function(){var e=this,t=e.$createElement,o=e._self._c||t;return e.loaded?e._e():o("div",{staticClass:"InitialLoadingPlaceholder",attrs:{id:"loading-placeholder"}})},E=[],C={name:"InitialLoadingPlaceholder",data(){return{loaded:!1}},created(){this.$router.onReady(()=>{this.loaded=!0})}},_=C,P=(o("e51f"),Object(m["a"])(_,S,E,!1,null,"47e4ace8",null)),T=P.exports,k=o("942d"),A=o("6842");function O(e,t){return e&&"object"===typeof e&&Object.prototype.hasOwnProperty.call(e,t)&&"string"===typeof e[t]}function x(e,t,o,i){if(!t||"object"!==typeof t||i&&(O(t,"light")||O(t,"dark"))){let n=t;if(O(t,i)&&(n=t[i]),"object"===typeof n)return;o[e]=n}else Object.entries(t).forEach(([t,n])=>{const r=[e,t].join("-");x(r,n,o,i)})}function L(e,t="light"){const o={},i=e||{};return x("-",i,o,t),o}var D={name:"CoreApp",components:{Footer:y,InitialLoadingPlaceholder:T},provide(){return{isTargetIDE:this.isTargetIDE,performanceMetricsEnabled:"true"===Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_PERFORMANCE_ENABLED}},data(){return{appState:h["a"].state,fromKeyboard:!1,isTargetIDE:"ide"===Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET,themeSettings:A["d"],baseNavStickyAnchorId:k["c"]}},computed:{currentColorScheme:({appState:e})=>e.systemColorScheme,preferredColorScheme:({appState:e})=>e.preferredColorScheme,CSSCustomProperties:({themeSettings:e,currentColorScheme:t})=>L(e.theme,t),hasCustomHeader:()=>!!window.customElements.get("custom-header"),hasCustomFooter:()=>!!window.customElements.get("custom-footer")},props:{enableThemeSettings:{type:Boolean,default:!0}},watch:{CSSCustomProperties:{immediate:!0,handler(e){this.detachStylesFromRoot(e),this.attachStylesToRoot(e)}}},async created(){window.addEventListener("keydown",this.onKeyDown),this.$bridge.on("navigation",this.handleNavigationRequest),this.enableThemeSettings&&Object.assign(this.themeSettings,await Object(A["b"])()),window.addEventListener("pageshow",this.syncPreferredColorScheme),this.$once("hook:beforeDestroy",()=>{window.removeEventListener("pageshow",this.syncPreferredColorScheme)})},mounted(){(document.querySelector(".footer-current-year")||{}).innerText=(new Date).getFullYear(),this.attachColorSchemeListeners()},beforeDestroy(){this.fromKeyboard?window.removeEventListener("mousedown",this.onMouseDown):window.removeEventListener("keydown",this.onKeyDown),this.$bridge.off("navigation",this.handleNavigationRequest),this.detachStylesFromRoot(this.CSSCustomProperties)},methods:{onKeyDown(){this.fromKeyboard=!0,window.addEventListener("mousedown",this.onMouseDown),window.removeEventListener("keydown",this.onKeyDown)},onMouseDown(){this.fromKeyboard=!1,window.addEventListener("keydown",this.onKeyDown),window.removeEventListener("mousedown",this.onMouseDown)},handleNavigationRequest(e){this.$router.push(e)},attachColorSchemeListeners(){if(!window.matchMedia)return;const e=window.matchMedia("(prefers-color-scheme: dark)");e.addListener(this.onColorSchemePreferenceChange),this.$once("hook:beforeDestroy",()=>{e.removeListener(this.onColorSchemePreferenceChange)}),this.onColorSchemePreferenceChange(e)},onColorSchemePreferenceChange({matches:e}){const t=e?a["a"].dark:a["a"].light;h["a"].setSystemColorScheme(t.value)},attachStylesToRoot(e){const t=document.documentElement;Object.entries(e).filter(([,e])=>Boolean(e)).forEach(([e,o])=>{t.style.setProperty(e,o)})},detachStylesFromRoot(e){const t=document.documentElement;Object.entries(e).forEach(([e])=>{t.style.removeProperty(e)})},syncPreferredColorScheme(){h["a"].syncPreferredColorScheme()}}},I=D,$=(o("5c0b"),o("a6aa"),Object(m["a"])(I,r,s,!1,null,"bf0cd418",null)),N=$.exports;class R{constructor(){this.$send=()=>{}}send(e){this.$send(e)}}class U{constructor(){const{webkit:{messageHandlers:{bridge:e={}}={}}={}}=window;this.bridge=e;const{postMessage:t=(()=>{})}=e;this.$send=t.bind(e)}send(e){this.$send(e)}}class M{constructor(e=new R){this.backend=e,this.listeners={}}send(e){this.backend.send(e)}receive(e){this.emit(e.type,e.data)}emit(e,t){this.listeners[e]&&this.listeners[e].forEach(e=>e(t))}on(e,t){this.listeners[e]||(this.listeners[e]=new Set),this.listeners[e].add(t)}off(e,t){this.listeners[e]&&this.listeners[e].delete(t)}}var B={install(e,t){let o;o=t.performanceMetricsEnabled||"ide"===t.appTarget?new U:new R,e.prototype.$bridge=new M(o)}};function W(e){return"custom-"+e}function V(e){return class extends HTMLElement{constructor(){super();const t=this.attachShadow({mode:"open"}),o=e.content.cloneNode(!0);t.appendChild(o)}}}function q(e){const t=W(e),o=document.getElementById(t);o&&window.customElements.define(t,V(o))}function F(e,t={names:["header","footer"]}){const{names:o}=t;e.config.ignoredElements=/^custom-/,o.forEach(q)}function H(e,t){const{value:o=!1}=t;e.style.display=o?"none":""}var K={hide:H};function G(e,{performanceMetrics:t=!1}={}){e.config.productionTip=!1,e.use(F),e.directive("hide",K.hide),e.use(B,{appTarget:Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET,performanceMetricsEnabled:t}),window.bridge=e.prototype.$bridge,e.config.performance=t}var J=o("9895"),z=o("63b8"),Y=o("3908"),X=o("002d"),Q=o("d26a");function Z(){const{location:e}=window;return e.pathname+e.search+e.hash}function ee(){const e=Math.max(document.documentElement.clientWidth||0,window.innerWidth||0);return ePromise.all([o.e("documentation-topic~topic~tutorials-overview"),o.e("tutorials-overview")]).then(o.bind(null,"f025"))},{path:"/tutorials/:id/*",name:"topic",component:()=>Promise.all([o.e("documentation-topic~topic~tutorials-overview"),o.e("topic")]).then(o.bind(null,"3213"))},{path:"*",name:J["a"],component:()=>Promise.all([o.e("documentation-topic~topic~tutorials-overview"),o.e("documentation-topic")]).then(o.bind(null,"f8ac"))},{path:"*",name:J["b"],component:ye},{path:"*",name:"server-error",component:me}];function Ee(e={}){const t=new n["a"]({mode:"history",base:A["a"],scrollBehavior:te,...e,routes:e.routes||Se});return t.onReady(()=>{"scrollRestoration"in window.history&&(window.history.scrollRestoration="manual"),oe()}),"ide"!==Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET&&t.onError(e=>{const{route:o={path:"/"}}=e;t.replace({name:"server-error",params:[o.path]})}),window.addEventListener("unload",ie),t}i["default"].use(G),i["default"].use(n["a"]),new i["default"]({router:Ee(),render:e=>e(N)}).$mount("#app")}}); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/index.37f0a361.js b/Sources/Mockingbird.docc/Renderer/js/index.37f0a361.js deleted file mode 100644 index c8cd6392..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/index.37f0a361.js +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */(function(e){function t(t){for(var i,n,h=t[0],a=t[1],c=t[2],l=0,u=[];l])/g,n=/^-+/,r=/["'&<>]/g;function s(e){return e.trim().replace(i,"-").replace(n,"").toLowerCase()}function h(e){const t=e=>({'"':""","'":"'","&":"&","<":"<",">":">"}[e]||e);return e.replace(r,t)}const a={zero:"zero",one:"one",two:"two",few:"few",many:"many",other:"other"},c={cardinal:"cardinal",ordinal:"ordinal"};function l(e,t){const{cardinal:o}=c,{one:i,other:n}=a,r="en",s=1===t?i:n;if(!e[r]||!e[r][s])throw new Error("No default choices provided to pluralize using default locale "+r);let h=r,l=s;if("Intl"in window&&"PluralRules"in window.Intl){const i=navigator.languages?navigator.languages:[navigator.language],n=new Intl.PluralRules(i,{type:o}),r=n.select(t),s=n.resolvedOptions().locale;e[s]&&e[s][r]&&(h=s,l=r)}return e[h][l]}function u(e){const t=/#(\d)(.*)/.exec(e);if(null===t)return e;const[o,i]=t.slice(1),n=`\\3${o} `;return`#${n}${i}`}},"1b02":function(e,t,o){"use strict";o("a6ff")},"2be1":function(e,t,o){"use strict";o("9b4f")},3908:function(e,t,o){"use strict";function i(e){let t=null,o=e-1;const i=new Promise(e=>{t=e});return requestAnimationFrame((function e(){o-=1,o<=0?t():requestAnimationFrame(e)})),i}o.d(t,"a",(function(){return i}))},"5c0b":function(e,t,o){"use strict";o("9c0c")},"63b8":function(e,t,o){"use strict";o.d(t,"b",(function(){return i})),o.d(t,"c",(function(){return n})),o.d(t,"a",(function(){return r})),o.d(t,"d",(function(){return h}));const i={large:"large",medium:"medium",small:"small"},n={default:"default",nav:"nav"},r={[n.default]:{[i.large]:{minWidth:1069,contentWidth:980},[i.medium]:{minWidth:736,maxWidth:1068,contentWidth:692},[i.small]:{minWidth:320,maxWidth:735,contentWidth:280}},[n.nav]:{[i.large]:{minWidth:1024},[i.medium]:{minWidth:768,maxWidth:1023},[i.small]:{minWidth:320,maxWidth:767}}},s={[i.small]:0,[i.medium]:1,[i.large]:2};function h(e,t){return s[e]>s[t]}},6842:function(e,t,o){"use strict";function i(e,t,o){let i,n=e,r=t;for("string"===typeof r&&(r=[r]),i=0;ie.json()).catch(()=>({}))}const h=(e,t)=>i(n,e,t)},7138:function(e,t,o){"use strict";o("813c")},"813c":function(e,t,o){},"821b":function(e,t,o){"use strict";t["a"]={auto:{label:"Auto",value:"auto"},dark:{label:"Dark",value:"dark"},light:{label:"Light",value:"light"}}},"942d":function(e,t,o){"use strict";o.d(t,"a",(function(){return i})),o.d(t,"b",(function(){return n})),o.d(t,"c",(function(){return r}));const i=52,n=48,r="nav-sticky-anchor"},9895:function(e,t,o){"use strict";o.d(t,"b",(function(){return i})),o.d(t,"a",(function(){return n}));const i="not-found",n="documentation-topic"},"9b4f":function(e,t,o){},"9c0c":function(e,t,o){},a6aa:function(e,t,o){"use strict";o("d964")},a6ff:function(e,t,o){},d26a:function(e,t,o){"use strict";o.d(t,"c",(function(){return n})),o.d(t,"b",(function(){return r})),o.d(t,"a",(function(){return s}));var i={input:"input",tags:"tags"};function n(e={}){return Object.entries(e).reduce((e,[t,o])=>o?e.concat(`${encodeURIComponent(t)}=${encodeURIComponent(o)}`):e,[]).join("&")}function r(e,{changes:t,language:o,context:i}={}){const[r,s]=e.split("#"),h=r.match(/\?.*/),a=n({changes:t,language:o,context:i}),c=h?"&":"?",l=s?r:e,u=a?`${c}${a}`:"",d=s?"#"+s:"";return`${l}${u}${d}`}function s(e,t){const{query:{changes:o,[i.input]:n,[i.tags]:r,...s}={}}=e,{query:{changes:h,[i.input]:a,[i.tags]:c,...l}={}}=t;return e.name===t.name&&JSON.stringify({path:e.path,query:s})===JSON.stringify({path:t.path,query:l})}},d369:function(e,t,o){"use strict";const i={getItem:e=>{try{return localStorage.getItem(e)}catch(t){return null}},setItem:(e,t)=>{try{localStorage.setItem(e,t)}catch(o){}}},n={preferredColorScheme:"developer.setting.preferredColorScheme",preferredLanguage:"docs.setting.preferredLanguage"},r={preferredColorScheme:"docs.setting.preferredColorScheme"};t["a"]=Object.defineProperties({},Object.keys(n).reduce((e,t)=>({...e,[t]:{get:()=>{const e=r[t],o=i.getItem(n[t]);return e?o||i.getItem(e):o},set:e=>i.setItem(n[t],e)}}),{}))},d964:function(e,t,o){},e425:function(e,t,o){"use strict";var i=o("821b"),n=o("d369");const r="undefined"!==typeof window.matchMedia&&[i["a"].light.value,i["a"].dark.value,"no-preference"].some(e=>window.matchMedia(`(prefers-color-scheme: ${e})`).matches),s=r?i["a"].auto:i["a"].light;t["a"]={state:{preferredColorScheme:n["a"].preferredColorScheme||s.value,supportsAutoColorScheme:r,systemColorScheme:i["a"].light.value},setPreferredColorScheme(e){this.state.preferredColorScheme=e,n["a"].preferredColorScheme=e},setSystemColorScheme(e){this.state.systemColorScheme=e},syncPreferredColorScheme(){n["a"].preferredColorScheme&&n["a"].preferredColorScheme!==this.state.preferredColorScheme&&(this.state.preferredColorScheme=n["a"].preferredColorScheme)}}},e4ca:function(e,t,o){},e51f:function(e,t,o){"use strict";o("e4ca")},ed96:function(e,t,o){o.p=window.baseUrl},f161:function(e,t,o){"use strict";o.r(t);o("ed96");var i=o("2b0e"),n=o("8c4f"),r=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{class:{fromkeyboard:e.fromKeyboard,hascustomheader:e.hasCustomHeader},attrs:{id:"app"}},[o("a",{attrs:{href:"#main",id:"skip-nav"}},[e._v("Skip Navigation")]),o("InitialLoadingPlaceholder"),e._t("header",(function(){return[e.hasCustomHeader?o("custom-header",{attrs:{"data-color-scheme":e.preferredColorScheme}}):e._e()]}),{isTargetIDE:e.isTargetIDE}),o("div",{attrs:{id:e.baseNavStickyAnchorId}}),e._t("default",(function(){return[o("router-view"),e.hasCustomFooter?o("custom-footer",{attrs:{"data-color-scheme":e.preferredColorScheme}}):o("Footer")]}),{isTargetIDE:e.isTargetIDE}),e._t("footer",null,{isTargetIDE:e.isTargetIDE})],2)},s=[],h=o("e425"),a=o("821b"),c=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("footer",{staticClass:"footer"},[o("div",{staticClass:"row"},[o("ColorSchemeToggle")],1)])},l=[],u=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{staticClass:"color-scheme-toggle",attrs:{"aria-label":"Select a color scheme preference",role:"radiogroup",tabindex:"0"}},e._l(e.options,(function(t){return o("label",{key:t.value},[o("input",{attrs:{type:"radio"},domProps:{checked:t.value==e.preferredColorScheme,value:t.value},on:{input:e.setPreferredColorScheme}}),o("div",{staticClass:"text"},[e._v(e._s(t.label))])])})),0)},d=[],g={name:"ColorSchemeToggle",data:()=>({appState:h["a"].state}),computed:{options:({supportsAutoColorScheme:e})=>[a["a"].light,a["a"].dark,...e?[a["a"].auto]:[]],preferredColorScheme:({appState:e})=>e.preferredColorScheme,supportsAutoColorScheme:({appState:e})=>e.supportsAutoColorScheme},methods:{setPreferredColorScheme:e=>{h["a"].setPreferredColorScheme(e.target.value)}},watch:{preferredColorScheme:{immediate:!0,handler(e){document.body.dataset.colorScheme=e}}}},f=g,m=(o("2be1"),o("2877")),p=Object(m["a"])(f,u,d,!1,null,"4472ec1e",null),j=p.exports,v={name:"Footer",components:{ColorSchemeToggle:j}},w=v,b=(o("1b02"),Object(m["a"])(w,c,l,!1,null,"67c823d8",null)),y=b.exports,S=function(){var e=this,t=e.$createElement,o=e._self._c||t;return e.loaded?e._e():o("div",{staticClass:"InitialLoadingPlaceholder",attrs:{id:"loading-placeholder"}})},E=[],C={name:"InitialLoadingPlaceholder",data(){return{loaded:!1}},created(){this.$router.onReady(()=>{this.loaded=!0})}},_=C,P=(o("e51f"),Object(m["a"])(_,S,E,!1,null,"47e4ace8",null)),T=P.exports,k=o("942d"),A=o("6842");function O(e,t){return e&&"object"===typeof e&&Object.prototype.hasOwnProperty.call(e,t)&&"string"===typeof e[t]}function x(e,t,o,i){if(!t||"object"!==typeof t||i&&(O(t,"light")||O(t,"dark"))){let n=t;if(O(t,i)&&(n=t[i]),"object"===typeof n)return;o[e]=n}else Object.entries(t).forEach(([t,n])=>{const r=[e,t].join("-");x(r,n,o,i)})}function L(e,t="light"){const o={},i=e||{};return x("-",i,o,t),o}var D={name:"CoreApp",components:{Footer:y,InitialLoadingPlaceholder:T},provide(){return{isTargetIDE:this.isTargetIDE,performanceMetricsEnabled:"true"===Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_PERFORMANCE_ENABLED}},data(){return{appState:h["a"].state,fromKeyboard:!1,isTargetIDE:"ide"===Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET,themeSettings:A["d"],baseNavStickyAnchorId:k["c"]}},computed:{currentColorScheme:({appState:e})=>e.systemColorScheme,preferredColorScheme:({appState:e})=>e.preferredColorScheme,CSSCustomProperties:({themeSettings:e,currentColorScheme:t})=>L(e.theme,t),hasCustomHeader:()=>!!window.customElements.get("custom-header"),hasCustomFooter:()=>!!window.customElements.get("custom-footer")},props:{enableThemeSettings:{type:Boolean,default:!0}},watch:{CSSCustomProperties:{immediate:!0,handler(e){this.detachStylesFromRoot(e),this.attachStylesToRoot(e)}}},async created(){window.addEventListener("keydown",this.onKeyDown),this.$bridge.on("navigation",this.handleNavigationRequest),this.enableThemeSettings&&Object.assign(this.themeSettings,await Object(A["b"])()),window.addEventListener("pageshow",this.syncPreferredColorScheme),this.$once("hook:beforeDestroy",()=>{window.removeEventListener("pageshow",this.syncPreferredColorScheme)})},mounted(){(document.querySelector(".footer-current-year")||{}).innerText=(new Date).getFullYear(),this.attachColorSchemeListeners()},beforeDestroy(){this.fromKeyboard?window.removeEventListener("mousedown",this.onMouseDown):window.removeEventListener("keydown",this.onKeyDown),this.$bridge.off("navigation",this.handleNavigationRequest),this.detachStylesFromRoot(this.CSSCustomProperties)},methods:{onKeyDown(){this.fromKeyboard=!0,window.addEventListener("mousedown",this.onMouseDown),window.removeEventListener("keydown",this.onKeyDown)},onMouseDown(){this.fromKeyboard=!1,window.addEventListener("keydown",this.onKeyDown),window.removeEventListener("mousedown",this.onMouseDown)},handleNavigationRequest(e){this.$router.push(e)},attachColorSchemeListeners(){if(!window.matchMedia)return;const e=window.matchMedia("(prefers-color-scheme: dark)");e.addListener(this.onColorSchemePreferenceChange),this.$once("hook:beforeDestroy",()=>{e.removeListener(this.onColorSchemePreferenceChange)}),this.onColorSchemePreferenceChange(e)},onColorSchemePreferenceChange({matches:e}){const t=e?a["a"].dark:a["a"].light;h["a"].setSystemColorScheme(t.value)},attachStylesToRoot(e){const t=document.documentElement;Object.entries(e).filter(([,e])=>Boolean(e)).forEach(([e,o])=>{t.style.setProperty(e,o)})},detachStylesFromRoot(e){const t=document.documentElement;Object.entries(e).forEach(([e])=>{t.style.removeProperty(e)})},syncPreferredColorScheme(){h["a"].syncPreferredColorScheme()}}},I=D,$=(o("5c0b"),o("a6aa"),Object(m["a"])(I,r,s,!1,null,"bf0cd418",null)),N=$.exports;class R{constructor(){this.$send=()=>{}}send(e){this.$send(e)}}class U{constructor(){const{webkit:{messageHandlers:{bridge:e={}}={}}={}}=window;this.bridge=e;const{postMessage:t=(()=>{})}=e;this.$send=t.bind(e)}send(e){this.$send(e)}}class M{constructor(e=new R){this.backend=e,this.listeners={}}send(e){this.backend.send(e)}receive(e){this.emit(e.type,e.data)}emit(e,t){this.listeners[e]&&this.listeners[e].forEach(e=>e(t))}on(e,t){this.listeners[e]||(this.listeners[e]=new Set),this.listeners[e].add(t)}off(e,t){this.listeners[e]&&this.listeners[e].delete(t)}}var B={install(e,t){let o;o=t.performanceMetricsEnabled||"ide"===t.appTarget?new U:new R,e.prototype.$bridge=new M(o)}};function W(e){return"custom-"+e}function V(e){return class extends HTMLElement{constructor(){super();const t=this.attachShadow({mode:"open"}),o=e.content.cloneNode(!0);t.appendChild(o)}}}function q(e){const t=W(e),o=document.getElementById(t);o&&window.customElements.define(t,V(o))}function F(e,t={names:["header","footer"]}){const{names:o}=t;e.config.ignoredElements=/^custom-/,o.forEach(q)}function H(e,t){const{value:o=!1}=t;e.style.display=o?"none":""}var K={hide:H};function G(e,{performanceMetrics:t=!1}={}){e.config.productionTip=!1,e.use(F),e.directive("hide",K.hide),e.use(B,{appTarget:Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET,performanceMetricsEnabled:t}),window.bridge=e.prototype.$bridge,e.config.performance=t}var J=o("9895"),z=o("63b8"),Y=o("3908"),X=o("002d"),Q=o("d26a");function Z(){const{location:e}=window;return e.pathname+e.search+e.hash}function ee(){const e=Math.max(document.documentElement.clientWidth||0,window.innerWidth||0);return ePromise.all([o.e("documentation-topic~topic~tutorials-overview"),o.e("tutorials-overview")]).then(o.bind(null,"f025"))},{path:"/tutorials/:id/*",name:"topic",component:()=>Promise.all([o.e("documentation-topic~topic~tutorials-overview"),o.e("topic")]).then(o.bind(null,"3213"))},{path:"/documentation/*",name:J["a"],component:()=>Promise.all([o.e("documentation-topic~topic~tutorials-overview"),o.e("documentation-topic")]).then(o.bind(null,"f8ac"))},{path:"*",name:J["b"],component:ye},{path:"*",name:"server-error",component:me}];function Ee(e={}){const t=new n["a"]({mode:"history",base:A["a"],scrollBehavior:te,...e,routes:e.routes||Se});return t.onReady(()=>{"scrollRestoration"in window.history&&(window.history.scrollRestoration="manual"),oe()}),"ide"!==Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET&&t.onError(e=>{const{route:o={path:"/"}}=e;t.replace({name:"server-error",params:[o.path]})}),window.addEventListener("unload",ie),t}i["default"].use(G),i["default"].use(n["a"]),new i["default"]({router:Ee(),render:e=>e(N)}).$mount("#app")}}); \ No newline at end of file From eb6cdacbf939c585e86db1901111bdf473d8767b Mon Sep 17 00:00:00 2001 From: Andrew Chang Date: Fri, 7 Jan 2022 00:44:41 -1000 Subject: [PATCH 16/20] Add custom header using DocC experimental features Requires running DocC from mainline --- Sources/Mockingbird.docc/LICENSE.txt | 211 +++++++++++++ .../Resources/nav-logo@2x.png | Bin 0 -> 7396 bytes .../Mockingbird.docc/Templates/header.html | 16 + Sources/Mockingbird.docc/header.html | 294 ++++++++++++++++++ 4 files changed, 521 insertions(+) create mode 100644 Sources/Mockingbird.docc/LICENSE.txt create mode 100644 Sources/Mockingbird.docc/Resources/nav-logo@2x.png create mode 100644 Sources/Mockingbird.docc/Templates/header.html create mode 100644 Sources/Mockingbird.docc/header.html diff --git a/Sources/Mockingbird.docc/LICENSE.txt b/Sources/Mockingbird.docc/LICENSE.txt new file mode 100644 index 00000000..78129ccb --- /dev/null +++ b/Sources/Mockingbird.docc/LICENSE.txt @@ -0,0 +1,211 @@ + Apache 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: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) 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 + + (d) 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. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + +### Runtime Library Exception to the Apache 2.0 License: ### + + + As an exception, if you use this Software to compile your source code and + portions of this Software are embedded into the binary product as a result, + you may redistribute such product without providing attribution as would + otherwise be required by Sections 4(a), 4(b) and 4(d) of the License. diff --git a/Sources/Mockingbird.docc/Resources/nav-logo@2x.png b/Sources/Mockingbird.docc/Resources/nav-logo@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..259eecbaf3d693ab0a4ce968af06ad7c783dc7f2 GIT binary patch literal 7396 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 WGw8B|S$V+#0000 + + diff --git a/Sources/Mockingbird.docc/header.html b/Sources/Mockingbird.docc/header.html new file mode 100644 index 00000000..ceb620e0 --- /dev/null +++ b/Sources/Mockingbird.docc/header.html @@ -0,0 +1,294 @@ + + + + + + + + + From 4fe5ff2b0914070e4c649a1055fee649c02a49ad Mon Sep 17 00:00:00 2001 From: Andrew Chang Date: Fri, 7 Jan 2022 01:48:36 -1000 Subject: [PATCH 17/20] Move Mockingbird.docc into Sources/Documentation --- README.md | 2 +- .../Mockingbird.docc/Info.plist | 0 .../Mockingbird.docc/LICENSE.txt | 0 .../Pages/Advanced Topics/Excluding-Files.md | 0 .../Advanced Topics/Mocking-External-Types.md | 0 .../Supporting-Source-Files.md | 0 .../Pages/Command Line Interface/Configure.md | 0 .../Command Line Interface/Default-Values.md | 0 .../Pages/Command Line Interface/Generate.md | 0 .../JSON-Project-Description.md | 0 .../Command Line Interface/Thunk-Pruning.md | 0 .../Pages/Essentials/Matching-Arguments.md | 0 .../Pages/Essentials/Mocking.md | 0 .../Essentials/ObjC-Stubbing-Operator.md | 0 .../Pages/Essentials/Stubbing.md | 0 .../Pages/Essentials/Verification.md | 0 .../Getting Started/Carthage-QuickStart.md | 0 .../Getting Started/CocoaPods-QuickStart.md | 0 .../Getting Started/SPM-Package-QuickStart.md | 0 .../Getting Started/SPM-Project-QuickStart.md | 0 .../Pages/Meta/Feature-Comparison.md | 0 .../Mockingbird.docc/Pages/Meta/Internal.md | 0 .../Pages/Meta/Known-Limitations.md | 0 .../Pages/Meta/Local-Development.md | 0 .../Mockingbird.docc/Pages/Mockingbird.md | 2 +- .../Pages/Troubleshooting/Common-Problems.md | 0 .../Debugging-the-Generator.md | 0 .../Troubleshooting/Generator-Diagnostics.md | 0 .../Resources/build-log@2x.png | Bin .../Resources/build-log~dark@2x.png | Bin .../Mockingbird.docc/Resources/hero@2x.png | Bin .../Resources/hero~dark@2x.png | Bin .../Resources/launch-args@2x.png | Bin .../Resources/launch-args~dark@2x.png | Bin .../Mockingbird.docc/Resources/logo@3x.png | Bin .../Resources/nav-logo@2x.png | Bin .../Resources/report-navigator@2x.png | Bin .../Resources/report-navigator~dark@2x.png | Bin .../Mockingbird.docc/Templates/header.html | 0 .../Mockingbird.docc/header.html | 0 .../css/documentation-topic.de084985.css | 9 --- ...opic~topic~tutorials-overview.cb5e3789.css | 9 --- .../Renderer/css/index.a111dc80.css | 9 --- .../Renderer/css/topic.fe88ced3.css | 9 --- .../css/tutorials-overview.8754eb09.css | 9 --- Sources/Mockingbird.docc/Renderer/favicon.ico | Bin 329400 -> 0 bytes Sources/Mockingbird.docc/Renderer/favicon.svg | 11 ---- .../Renderer/img/added-icon.d6f7e47d.svg | 11 ---- .../Renderer/img/deprecated-icon.015b4f17.svg | 11 ---- .../Renderer/img/modified-icon.f496e73d.svg | 11 ---- .../Renderer/index-template.html | 11 ---- Sources/Mockingbird.docc/Renderer/index.html | 11 ---- .../Renderer/js/chunk-2d0d3105.cd72cc8e.js | 10 --- .../Renderer/js/chunk-vendors.00bf82af.js | 21 ------- .../js/documentation-topic.b1a26a74.js | 10 --- ...topic~topic~tutorials-overview.36db035f.js | 10 --- .../Renderer/js/highlight-js-bash.1b52852f.js | 10 --- .../Renderer/js/highlight-js-c.d1db3f17.js | 10 --- .../Renderer/js/highlight-js-cpp.eaddddbe.js | 10 --- .../Renderer/js/highlight-js-css.75eab1fe.js | 10 --- .../highlight-js-custom-markdown.7cffc4b3.js | 10 --- .../js/highlight-js-custom-swift.6a006062.js | 10 --- .../Renderer/js/highlight-js-diff.62d66733.js | 10 --- .../Renderer/js/highlight-js-http.163e45b6.js | 10 --- .../Renderer/js/highlight-js-java.8326d9d8.js | 10 --- .../js/highlight-js-javascript.acb8a8eb.js | 10 --- .../Renderer/js/highlight-js-json.471128d2.js | 10 --- .../Renderer/js/highlight-js-llvm.6100b125.js | 10 --- .../js/highlight-js-markdown.90077643.js | 10 --- .../js/highlight-js-objectivec.bcdf5156.js | 10 --- .../Renderer/js/highlight-js-perl.757d7b6f.js | 10 --- .../Renderer/js/highlight-js-php.cc8d6c27.js | 10 --- .../js/highlight-js-python.c214ed92.js | 10 --- .../Renderer/js/highlight-js-ruby.f889d392.js | 10 --- .../Renderer/js/highlight-js-scss.62ee18da.js | 10 --- .../js/highlight-js-shell.dd7f411f.js | 10 --- .../js/highlight-js-swift.84f3e88c.js | 10 --- .../Renderer/js/highlight-js-xml.9c3688c7.js | 10 --- .../Renderer/js/index.04a13994.js | 9 --- .../Renderer/js/topic.c4c8f983.js | 20 ------ .../js/tutorials-overview.0dfedc70.js | 10 --- .../Renderer/theme-settings.json | 59 ------------------ 82 files changed, 2 insertions(+), 482 deletions(-) rename Sources/{ => Documentation}/Mockingbird.docc/Info.plist (100%) rename Sources/{ => Documentation}/Mockingbird.docc/LICENSE.txt (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Advanced Topics/Excluding-Files.md (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Advanced Topics/Mocking-External-Types.md (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Advanced Topics/Supporting-Source-Files.md (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Command Line Interface/Configure.md (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Command Line Interface/Default-Values.md (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Command Line Interface/Generate.md (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Command Line Interface/JSON-Project-Description.md (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Command Line Interface/Thunk-Pruning.md (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Essentials/Matching-Arguments.md (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Essentials/Mocking.md (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Essentials/ObjC-Stubbing-Operator.md (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Essentials/Stubbing.md (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Essentials/Verification.md (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Getting Started/Carthage-QuickStart.md (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Getting Started/CocoaPods-QuickStart.md (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Getting Started/SPM-Package-QuickStart.md (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Getting Started/SPM-Project-QuickStart.md (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Meta/Feature-Comparison.md (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Meta/Internal.md (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Meta/Known-Limitations.md (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Meta/Local-Development.md (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Mockingbird.md (93%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Troubleshooting/Common-Problems.md (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Troubleshooting/Debugging-the-Generator.md (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Pages/Troubleshooting/Generator-Diagnostics.md (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Resources/build-log@2x.png (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Resources/build-log~dark@2x.png (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Resources/hero@2x.png (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Resources/hero~dark@2x.png (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Resources/launch-args@2x.png (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Resources/launch-args~dark@2x.png (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Resources/logo@3x.png (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Resources/nav-logo@2x.png (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Resources/report-navigator@2x.png (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Resources/report-navigator~dark@2x.png (100%) rename Sources/{ => Documentation}/Mockingbird.docc/Templates/header.html (100%) rename Sources/{ => Documentation}/Mockingbird.docc/header.html (100%) delete mode 100644 Sources/Mockingbird.docc/Renderer/css/documentation-topic.de084985.css delete mode 100644 Sources/Mockingbird.docc/Renderer/css/documentation-topic~topic~tutorials-overview.cb5e3789.css delete mode 100644 Sources/Mockingbird.docc/Renderer/css/index.a111dc80.css delete mode 100644 Sources/Mockingbird.docc/Renderer/css/topic.fe88ced3.css delete mode 100644 Sources/Mockingbird.docc/Renderer/css/tutorials-overview.8754eb09.css delete mode 100644 Sources/Mockingbird.docc/Renderer/favicon.ico delete mode 100644 Sources/Mockingbird.docc/Renderer/favicon.svg delete mode 100644 Sources/Mockingbird.docc/Renderer/img/added-icon.d6f7e47d.svg delete mode 100644 Sources/Mockingbird.docc/Renderer/img/deprecated-icon.015b4f17.svg delete mode 100644 Sources/Mockingbird.docc/Renderer/img/modified-icon.f496e73d.svg delete mode 100644 Sources/Mockingbird.docc/Renderer/index-template.html delete mode 100644 Sources/Mockingbird.docc/Renderer/index.html delete mode 100644 Sources/Mockingbird.docc/Renderer/js/chunk-2d0d3105.cd72cc8e.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/chunk-vendors.00bf82af.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/documentation-topic.b1a26a74.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/documentation-topic~topic~tutorials-overview.36db035f.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/highlight-js-bash.1b52852f.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/highlight-js-c.d1db3f17.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/highlight-js-cpp.eaddddbe.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/highlight-js-css.75eab1fe.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/highlight-js-custom-markdown.7cffc4b3.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/highlight-js-custom-swift.6a006062.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/highlight-js-diff.62d66733.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/highlight-js-http.163e45b6.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/highlight-js-java.8326d9d8.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/highlight-js-javascript.acb8a8eb.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/highlight-js-json.471128d2.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/highlight-js-llvm.6100b125.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/highlight-js-markdown.90077643.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/highlight-js-objectivec.bcdf5156.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/highlight-js-perl.757d7b6f.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/highlight-js-php.cc8d6c27.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/highlight-js-python.c214ed92.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/highlight-js-ruby.f889d392.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/highlight-js-scss.62ee18da.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/highlight-js-shell.dd7f411f.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/highlight-js-swift.84f3e88c.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/highlight-js-xml.9c3688c7.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/index.04a13994.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/topic.c4c8f983.js delete mode 100644 Sources/Mockingbird.docc/Renderer/js/tutorials-overview.0dfedc70.js delete mode 100644 Sources/Mockingbird.docc/Renderer/theme-settings.json diff --git a/README.md b/README.md index 14d9221c..70dd386c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- Mockingbird - Swift Mocking Framework + Mockingbird - Swift Mocking Framework

Mockingbird

diff --git a/Sources/Mockingbird.docc/Info.plist b/Sources/Documentation/Mockingbird.docc/Info.plist similarity index 100% rename from Sources/Mockingbird.docc/Info.plist rename to Sources/Documentation/Mockingbird.docc/Info.plist diff --git a/Sources/Mockingbird.docc/LICENSE.txt b/Sources/Documentation/Mockingbird.docc/LICENSE.txt similarity index 100% rename from Sources/Mockingbird.docc/LICENSE.txt rename to Sources/Documentation/Mockingbird.docc/LICENSE.txt diff --git a/Sources/Mockingbird.docc/Pages/Advanced Topics/Excluding-Files.md b/Sources/Documentation/Mockingbird.docc/Pages/Advanced Topics/Excluding-Files.md similarity index 100% rename from Sources/Mockingbird.docc/Pages/Advanced Topics/Excluding-Files.md rename to Sources/Documentation/Mockingbird.docc/Pages/Advanced Topics/Excluding-Files.md diff --git a/Sources/Mockingbird.docc/Pages/Advanced Topics/Mocking-External-Types.md b/Sources/Documentation/Mockingbird.docc/Pages/Advanced Topics/Mocking-External-Types.md similarity index 100% rename from Sources/Mockingbird.docc/Pages/Advanced Topics/Mocking-External-Types.md rename to Sources/Documentation/Mockingbird.docc/Pages/Advanced Topics/Mocking-External-Types.md diff --git a/Sources/Mockingbird.docc/Pages/Advanced Topics/Supporting-Source-Files.md b/Sources/Documentation/Mockingbird.docc/Pages/Advanced Topics/Supporting-Source-Files.md similarity index 100% rename from Sources/Mockingbird.docc/Pages/Advanced Topics/Supporting-Source-Files.md rename to Sources/Documentation/Mockingbird.docc/Pages/Advanced Topics/Supporting-Source-Files.md diff --git a/Sources/Mockingbird.docc/Pages/Command Line Interface/Configure.md b/Sources/Documentation/Mockingbird.docc/Pages/Command Line Interface/Configure.md similarity index 100% rename from Sources/Mockingbird.docc/Pages/Command Line Interface/Configure.md rename to Sources/Documentation/Mockingbird.docc/Pages/Command Line Interface/Configure.md diff --git a/Sources/Mockingbird.docc/Pages/Command Line Interface/Default-Values.md b/Sources/Documentation/Mockingbird.docc/Pages/Command Line Interface/Default-Values.md similarity index 100% rename from Sources/Mockingbird.docc/Pages/Command Line Interface/Default-Values.md rename to Sources/Documentation/Mockingbird.docc/Pages/Command Line Interface/Default-Values.md diff --git a/Sources/Mockingbird.docc/Pages/Command Line Interface/Generate.md b/Sources/Documentation/Mockingbird.docc/Pages/Command Line Interface/Generate.md similarity index 100% rename from Sources/Mockingbird.docc/Pages/Command Line Interface/Generate.md rename to Sources/Documentation/Mockingbird.docc/Pages/Command Line Interface/Generate.md diff --git a/Sources/Mockingbird.docc/Pages/Command Line Interface/JSON-Project-Description.md b/Sources/Documentation/Mockingbird.docc/Pages/Command Line Interface/JSON-Project-Description.md similarity index 100% rename from Sources/Mockingbird.docc/Pages/Command Line Interface/JSON-Project-Description.md rename to Sources/Documentation/Mockingbird.docc/Pages/Command Line Interface/JSON-Project-Description.md diff --git a/Sources/Mockingbird.docc/Pages/Command Line Interface/Thunk-Pruning.md b/Sources/Documentation/Mockingbird.docc/Pages/Command Line Interface/Thunk-Pruning.md similarity index 100% rename from Sources/Mockingbird.docc/Pages/Command Line Interface/Thunk-Pruning.md rename to Sources/Documentation/Mockingbird.docc/Pages/Command Line Interface/Thunk-Pruning.md diff --git a/Sources/Mockingbird.docc/Pages/Essentials/Matching-Arguments.md b/Sources/Documentation/Mockingbird.docc/Pages/Essentials/Matching-Arguments.md similarity index 100% rename from Sources/Mockingbird.docc/Pages/Essentials/Matching-Arguments.md rename to Sources/Documentation/Mockingbird.docc/Pages/Essentials/Matching-Arguments.md diff --git a/Sources/Mockingbird.docc/Pages/Essentials/Mocking.md b/Sources/Documentation/Mockingbird.docc/Pages/Essentials/Mocking.md similarity index 100% rename from Sources/Mockingbird.docc/Pages/Essentials/Mocking.md rename to Sources/Documentation/Mockingbird.docc/Pages/Essentials/Mocking.md diff --git a/Sources/Mockingbird.docc/Pages/Essentials/ObjC-Stubbing-Operator.md b/Sources/Documentation/Mockingbird.docc/Pages/Essentials/ObjC-Stubbing-Operator.md similarity index 100% rename from Sources/Mockingbird.docc/Pages/Essentials/ObjC-Stubbing-Operator.md rename to Sources/Documentation/Mockingbird.docc/Pages/Essentials/ObjC-Stubbing-Operator.md diff --git a/Sources/Mockingbird.docc/Pages/Essentials/Stubbing.md b/Sources/Documentation/Mockingbird.docc/Pages/Essentials/Stubbing.md similarity index 100% rename from Sources/Mockingbird.docc/Pages/Essentials/Stubbing.md rename to Sources/Documentation/Mockingbird.docc/Pages/Essentials/Stubbing.md diff --git a/Sources/Mockingbird.docc/Pages/Essentials/Verification.md b/Sources/Documentation/Mockingbird.docc/Pages/Essentials/Verification.md similarity index 100% rename from Sources/Mockingbird.docc/Pages/Essentials/Verification.md rename to Sources/Documentation/Mockingbird.docc/Pages/Essentials/Verification.md diff --git a/Sources/Mockingbird.docc/Pages/Getting Started/Carthage-QuickStart.md b/Sources/Documentation/Mockingbird.docc/Pages/Getting Started/Carthage-QuickStart.md similarity index 100% rename from Sources/Mockingbird.docc/Pages/Getting Started/Carthage-QuickStart.md rename to Sources/Documentation/Mockingbird.docc/Pages/Getting Started/Carthage-QuickStart.md diff --git a/Sources/Mockingbird.docc/Pages/Getting Started/CocoaPods-QuickStart.md b/Sources/Documentation/Mockingbird.docc/Pages/Getting Started/CocoaPods-QuickStart.md similarity index 100% rename from Sources/Mockingbird.docc/Pages/Getting Started/CocoaPods-QuickStart.md rename to Sources/Documentation/Mockingbird.docc/Pages/Getting Started/CocoaPods-QuickStart.md diff --git a/Sources/Mockingbird.docc/Pages/Getting Started/SPM-Package-QuickStart.md b/Sources/Documentation/Mockingbird.docc/Pages/Getting Started/SPM-Package-QuickStart.md similarity index 100% rename from Sources/Mockingbird.docc/Pages/Getting Started/SPM-Package-QuickStart.md rename to Sources/Documentation/Mockingbird.docc/Pages/Getting Started/SPM-Package-QuickStart.md diff --git a/Sources/Mockingbird.docc/Pages/Getting Started/SPM-Project-QuickStart.md b/Sources/Documentation/Mockingbird.docc/Pages/Getting Started/SPM-Project-QuickStart.md similarity index 100% rename from Sources/Mockingbird.docc/Pages/Getting Started/SPM-Project-QuickStart.md rename to Sources/Documentation/Mockingbird.docc/Pages/Getting Started/SPM-Project-QuickStart.md diff --git a/Sources/Mockingbird.docc/Pages/Meta/Feature-Comparison.md b/Sources/Documentation/Mockingbird.docc/Pages/Meta/Feature-Comparison.md similarity index 100% rename from Sources/Mockingbird.docc/Pages/Meta/Feature-Comparison.md rename to Sources/Documentation/Mockingbird.docc/Pages/Meta/Feature-Comparison.md diff --git a/Sources/Mockingbird.docc/Pages/Meta/Internal.md b/Sources/Documentation/Mockingbird.docc/Pages/Meta/Internal.md similarity index 100% rename from Sources/Mockingbird.docc/Pages/Meta/Internal.md rename to Sources/Documentation/Mockingbird.docc/Pages/Meta/Internal.md diff --git a/Sources/Mockingbird.docc/Pages/Meta/Known-Limitations.md b/Sources/Documentation/Mockingbird.docc/Pages/Meta/Known-Limitations.md similarity index 100% rename from Sources/Mockingbird.docc/Pages/Meta/Known-Limitations.md rename to Sources/Documentation/Mockingbird.docc/Pages/Meta/Known-Limitations.md diff --git a/Sources/Mockingbird.docc/Pages/Meta/Local-Development.md b/Sources/Documentation/Mockingbird.docc/Pages/Meta/Local-Development.md similarity index 100% rename from Sources/Mockingbird.docc/Pages/Meta/Local-Development.md rename to Sources/Documentation/Mockingbird.docc/Pages/Meta/Local-Development.md diff --git a/Sources/Mockingbird.docc/Pages/Mockingbird.md b/Sources/Documentation/Mockingbird.docc/Pages/Mockingbird.md similarity index 93% rename from Sources/Mockingbird.docc/Pages/Mockingbird.md rename to Sources/Documentation/Mockingbird.docc/Pages/Mockingbird.md index 2c7d5c6d..f876d10a 100644 --- a/Sources/Mockingbird.docc/Pages/Mockingbird.md +++ b/Sources/Documentation/Mockingbird.docc/Pages/Mockingbird.md @@ -8,7 +8,7 @@ Mockingbird makes it easy to mock, stub, and verify objects in Swift unit tests. ![Mockingbird hero](hero) -Mockingbird’s syntax takes inspiration from (OC)Mockito but was designed to be “Swifty” in terms of type safety, expressiveness, and readability. In addition to the basics, it provides functionality for advanced features such as creating partial mocks, verifying the order of calls, and testing asynchronous code. +Mockingbird’s syntax takes inspiration from (OC)Mockito but was designed to be “Swifty” in terms of type safety, expressiveness, and readability. In addition to the basics, it provides advanced features like creating partial mocks, verifying the order of calls, and testing asynchronous code. Conceptually, Mockingbird uses codegen to statically mock Swift types at compile time and `NSProxy` to dynamically mock Objective-C types at run time. Although the approach is similar to other frameworks that augment Swift’s limited introspection capabilities with codegen, there are a few key differences: diff --git a/Sources/Mockingbird.docc/Pages/Troubleshooting/Common-Problems.md b/Sources/Documentation/Mockingbird.docc/Pages/Troubleshooting/Common-Problems.md similarity index 100% rename from Sources/Mockingbird.docc/Pages/Troubleshooting/Common-Problems.md rename to Sources/Documentation/Mockingbird.docc/Pages/Troubleshooting/Common-Problems.md diff --git a/Sources/Mockingbird.docc/Pages/Troubleshooting/Debugging-the-Generator.md b/Sources/Documentation/Mockingbird.docc/Pages/Troubleshooting/Debugging-the-Generator.md similarity index 100% rename from Sources/Mockingbird.docc/Pages/Troubleshooting/Debugging-the-Generator.md rename to Sources/Documentation/Mockingbird.docc/Pages/Troubleshooting/Debugging-the-Generator.md diff --git a/Sources/Mockingbird.docc/Pages/Troubleshooting/Generator-Diagnostics.md b/Sources/Documentation/Mockingbird.docc/Pages/Troubleshooting/Generator-Diagnostics.md similarity index 100% rename from Sources/Mockingbird.docc/Pages/Troubleshooting/Generator-Diagnostics.md rename to Sources/Documentation/Mockingbird.docc/Pages/Troubleshooting/Generator-Diagnostics.md diff --git a/Sources/Mockingbird.docc/Resources/build-log@2x.png b/Sources/Documentation/Mockingbird.docc/Resources/build-log@2x.png similarity index 100% rename from Sources/Mockingbird.docc/Resources/build-log@2x.png rename to Sources/Documentation/Mockingbird.docc/Resources/build-log@2x.png diff --git a/Sources/Mockingbird.docc/Resources/build-log~dark@2x.png b/Sources/Documentation/Mockingbird.docc/Resources/build-log~dark@2x.png similarity index 100% rename from Sources/Mockingbird.docc/Resources/build-log~dark@2x.png rename to Sources/Documentation/Mockingbird.docc/Resources/build-log~dark@2x.png diff --git a/Sources/Mockingbird.docc/Resources/hero@2x.png b/Sources/Documentation/Mockingbird.docc/Resources/hero@2x.png similarity index 100% rename from Sources/Mockingbird.docc/Resources/hero@2x.png rename to Sources/Documentation/Mockingbird.docc/Resources/hero@2x.png diff --git a/Sources/Mockingbird.docc/Resources/hero~dark@2x.png b/Sources/Documentation/Mockingbird.docc/Resources/hero~dark@2x.png similarity index 100% rename from Sources/Mockingbird.docc/Resources/hero~dark@2x.png rename to Sources/Documentation/Mockingbird.docc/Resources/hero~dark@2x.png diff --git a/Sources/Mockingbird.docc/Resources/launch-args@2x.png b/Sources/Documentation/Mockingbird.docc/Resources/launch-args@2x.png similarity index 100% rename from Sources/Mockingbird.docc/Resources/launch-args@2x.png rename to Sources/Documentation/Mockingbird.docc/Resources/launch-args@2x.png diff --git a/Sources/Mockingbird.docc/Resources/launch-args~dark@2x.png b/Sources/Documentation/Mockingbird.docc/Resources/launch-args~dark@2x.png similarity index 100% rename from Sources/Mockingbird.docc/Resources/launch-args~dark@2x.png rename to Sources/Documentation/Mockingbird.docc/Resources/launch-args~dark@2x.png diff --git a/Sources/Mockingbird.docc/Resources/logo@3x.png b/Sources/Documentation/Mockingbird.docc/Resources/logo@3x.png similarity index 100% rename from Sources/Mockingbird.docc/Resources/logo@3x.png rename to Sources/Documentation/Mockingbird.docc/Resources/logo@3x.png diff --git a/Sources/Mockingbird.docc/Resources/nav-logo@2x.png b/Sources/Documentation/Mockingbird.docc/Resources/nav-logo@2x.png similarity index 100% rename from Sources/Mockingbird.docc/Resources/nav-logo@2x.png rename to Sources/Documentation/Mockingbird.docc/Resources/nav-logo@2x.png diff --git a/Sources/Mockingbird.docc/Resources/report-navigator@2x.png b/Sources/Documentation/Mockingbird.docc/Resources/report-navigator@2x.png similarity index 100% rename from Sources/Mockingbird.docc/Resources/report-navigator@2x.png rename to Sources/Documentation/Mockingbird.docc/Resources/report-navigator@2x.png diff --git a/Sources/Mockingbird.docc/Resources/report-navigator~dark@2x.png b/Sources/Documentation/Mockingbird.docc/Resources/report-navigator~dark@2x.png similarity index 100% rename from Sources/Mockingbird.docc/Resources/report-navigator~dark@2x.png rename to Sources/Documentation/Mockingbird.docc/Resources/report-navigator~dark@2x.png diff --git a/Sources/Mockingbird.docc/Templates/header.html b/Sources/Documentation/Mockingbird.docc/Templates/header.html similarity index 100% rename from Sources/Mockingbird.docc/Templates/header.html rename to Sources/Documentation/Mockingbird.docc/Templates/header.html diff --git a/Sources/Mockingbird.docc/header.html b/Sources/Documentation/Mockingbird.docc/header.html similarity index 100% rename from Sources/Mockingbird.docc/header.html rename to Sources/Documentation/Mockingbird.docc/header.html diff --git a/Sources/Mockingbird.docc/Renderer/css/documentation-topic.de084985.css b/Sources/Mockingbird.docc/Renderer/css/documentation-topic.de084985.css deleted file mode 100644 index 2271f561..00000000 --- a/Sources/Mockingbird.docc/Renderer/css/documentation-topic.de084985.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */.badge[data-v-2bfc9463]{--badge-color:var(--color-badge-default);--badge-dark-color:var(--color-badge-dark-default);font-size:.70588rem;line-height:1.33333;font-weight:400;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;display:inline-block;padding:2px 10px;white-space:nowrap;background:none;border-radius:3px;margin-left:10px;border:1px solid var(--badge-color);color:var(--badge-color)}.theme-dark .badge[data-v-2bfc9463]{--badge-color:var(--badge-dark-color)}.badge-deprecated[data-v-2bfc9463]{--badge-color:var(--color-badge-deprecated);--badge-dark-color:var(--color-badge-dark-deprecated)}.badge-beta[data-v-2bfc9463]{--badge-color:var(--color-badge-beta);--badge-dark-color:var(--color-badge-dark-beta)}.hierarchy-collapsed-items[data-v-45c48d1a]{position:relative;display:inline-flex;align-items:center;margin-left:.58824rem}.hierarchy-collapsed-items .hierarchy-item-icon[data-v-45c48d1a]{width:9px;height:15px;margin-right:.58824rem}.nav--in-breakpoint-range .hierarchy-collapsed-items[data-v-45c48d1a]{display:none}.hierarchy-collapsed-items .toggle[data-v-45c48d1a]{background:var(--color-nav-hierarchy-collapse-background);border-color:var(--color-figure-gray-secondary);border-radius:4px;border-style:solid;border-width:0;font-weight:600;height:1.11765rem;text-align:center;width:2.11765rem;display:flex;align-items:center;justify-content:center}.theme-dark .hierarchy-collapsed-items .toggle[data-v-45c48d1a]{background:var(--color-nav-dark-hierarchy-collapse-background)}.hierarchy-collapsed-items .toggle.focused[data-v-45c48d1a],.hierarchy-collapsed-items .toggle[data-v-45c48d1a]:active,.hierarchy-collapsed-items .toggle[data-v-45c48d1a]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none}.indicator[data-v-45c48d1a]{width:1em;height:1em;display:flex;align-items:center}.indicator .toggle-icon[data-v-45c48d1a]{width:100%}.dropdown[data-v-45c48d1a]{background:var(--color-nav-hierarchy-collapse-background);border-color:var(--color-nav-hierarchy-collapse-borders);border-radius:4px;border-style:solid;box-shadow:0 1px 4px -1px var(--color-figure-gray-secondary);border-width:0;padding:0 .5rem;position:absolute;z-index:42;top:calc(100% + .41176rem)}.theme-dark .dropdown[data-v-45c48d1a]{background:var(--color-nav-dark-hierarchy-collapse-background);border-color:var(--color-nav-dark-hierarchy-collapse-borders)}.dropdown.collapsed[data-v-45c48d1a]{opacity:0;transform:translate3d(0,-.41176rem,0);transition:opacity .25s ease,transform .25s ease,visibility 0s linear .25s;visibility:hidden}.dropdown[data-v-45c48d1a]:not(.collapsed){opacity:1;transform:none;transition:opacity .25s ease,transform .25s ease,visibility 0s linear 0s;visibility:visible}.nav--in-breakpoint-range .dropdown[data-v-45c48d1a]:not(.collapsed){display:none}.dropdown[data-v-45c48d1a]:before{border-bottom-color:var(--color-nav-hierarchy-collapse-background);border-bottom-style:solid;border-bottom-width:.5rem;border-left-color:transparent;border-left-style:solid;border-left-width:.5rem;border-right-color:transparent;border-right-style:solid;border-right-width:.5rem;content:"";left:1.67647rem;position:absolute;top:-.44118rem}.theme-dark .dropdown[data-v-45c48d1a]:before{border-bottom-color:var(--color-nav-dark-hierarchy-collapse-background)}.dropdown-item[data-v-45c48d1a]{border-top-color:var(--color-nav-hierarchy-collapse-borders);border-top-style:solid;border-top-width:1px}.theme-dark .dropdown-item[data-v-45c48d1a]{border-top-color:var(--color-nav-dark-hierarchy-collapse-borders)}.dropdown-item[data-v-45c48d1a]:first-child{border-top:none}.nav-menu-link[data-v-45c48d1a]{max-width:57.64706rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;padding:.75rem 1rem}.nav-menu-item[data-v-f44c239a]{margin-left:1.41176rem;list-style:none;min-width:0}.nav--in-breakpoint-range .nav-menu-item[data-v-f44c239a]{margin-left:0;width:100%;height:2.47059rem}.nav--in-breakpoint-range .nav-menu-item[data-v-f44c239a]:first-child .nav-menu-link{border-top:0}.nav--in-breakpoint-range .nav-menu-item--animated[data-v-f44c239a]{opacity:0;transform:none;transition:.5s ease;transition-property:transform,opacity}.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.hierarchy-item[data-v-57182fdb] .hierarchy-item-icon{width:9px;height:15px;margin-right:.58824rem}.nav--in-breakpoint-range .hierarchy-item[data-v-57182fdb] .hierarchy-item-icon{display:none}@media only screen and (min-width:1024px){.hierarchy-item[data-v-57182fdb]{display:flex;align-items:center;margin-left:.58824rem}}.nav--in-breakpoint-range .hierarchy-item[data-v-57182fdb]{border-top:1px solid var(--color-nav-hierarchy-item-borders);display:flex;align-items:center}.theme-dark.nav--in-breakpoint-range .hierarchy-item[data-v-57182fdb]{border-top-color:var(--color-nav-dark-hierarchy-item-borders)}.nav--in-breakpoint-range .hierarchy-item[data-v-57182fdb]:first-of-type{border-top:none}.hierarchy-item.collapsed[data-v-57182fdb]{display:none}.nav--in-breakpoint-range .hierarchy-item.collapsed[data-v-57182fdb]{display:inline-block}.item[data-v-57182fdb]{display:inline-block;vertical-align:middle}.nav--in-breakpoint-range .item[data-v-57182fdb]{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:100%;line-height:2.47059rem}@media only screen and (min-width:1024px){.hierarchy-item:first-child:last-child .item[data-v-57182fdb],.hierarchy-item:first-child:last-child~.hierarchy-item .item[data-v-57182fdb]{max-width:27rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-badge .hierarchy-item:first-child:last-child .item[data-v-57182fdb],.has-badge .hierarchy-item:first-child:last-child~.hierarchy-item .item[data-v-57182fdb]{max-width:21.6rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hierarchy-item:first-child:nth-last-child(2) .item[data-v-57182fdb],.hierarchy-item:first-child:nth-last-child(2)~.hierarchy-item .item[data-v-57182fdb]{max-width:18rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-badge .hierarchy-item:first-child:nth-last-child(2) .item[data-v-57182fdb],.has-badge .hierarchy-item:first-child:nth-last-child(2)~.hierarchy-item .item[data-v-57182fdb]{max-width:14.4rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hierarchy-item:first-child:nth-last-child(3) .item[data-v-57182fdb],.hierarchy-item:first-child:nth-last-child(3)~.hierarchy-item .item[data-v-57182fdb]{max-width:9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-badge .hierarchy-item:first-child:nth-last-child(3) .item[data-v-57182fdb],.has-badge .hierarchy-item:first-child:nth-last-child(3)~.hierarchy-item .item[data-v-57182fdb]{max-width:7.2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hierarchy-collapsed-items~.hierarchy-item .item[data-v-57182fdb]{max-width:10.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-badge .hierarchy-collapsed-items~.hierarchy-item .item[data-v-57182fdb]{max-width:8.64rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.hierarchy[data-v-20e91056]{justify-content:flex-start;min-width:0}[data-v-324c15b2] .nav-menu{font-size:.88235rem;line-height:1.26667;font-weight:400;letter-spacing:-.014em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1023px){[data-v-324c15b2] .nav-menu{font-size:.82353rem;line-height:1.5;font-weight:400;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (min-width:1024px){[data-v-324c15b2] .nav-menu{padding-top:0}}.documentation-nav[data-v-324c15b2] .nav-title{font-size:.88235rem;line-height:1.26667;font-weight:400;letter-spacing:-.014em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1023px){.documentation-nav[data-v-324c15b2] .nav-title{font-size:.82353rem;line-height:1.5;font-weight:400;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:767px){.documentation-nav[data-v-324c15b2] .nav-title{padding-top:0}}.documentation-nav[data-v-324c15b2] .nav-title .nav-title-link.inactive{height:auto;color:var(--color-figure-gray-secondary-alt)}.theme-dark.documentation-nav .nav-title .nav-title-link.inactive[data-v-324c15b2]{color:#b0b0b0}.betainfo[data-v-4edf30f4]{font-size:.94118rem;padding:3rem 0;background-color:var(--color-fill-secondary)}.betainfo-container[data-v-4edf30f4]{margin-left:auto;margin-right:auto;width:980px}@media only screen and (max-width:1068px){.betainfo-container[data-v-4edf30f4]{width:692px}}@media only screen and (max-width:735px){.betainfo-container[data-v-4edf30f4]{width:87.5%}}.betainfo-label[data-v-4edf30f4]{font-weight:600;font-size:.94118rem}.betainfo-content[data-v-4edf30f4] p{margin-bottom:10px}.contenttable+.betainfo[data-v-4edf30f4]{background-color:var(--color-fill)}.summary-section[data-v-6185a550]{margin:0 0 1.5rem}.summary-section[data-v-6185a550]:last-of-type{margin-bottom:0}.title[data-v-b903be56]{color:var(--colors-text,var(--color-text));font-size:1.11765rem;line-height:1.21053;font-weight:400;letter-spacing:.012em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:.82353rem;margin-bottom:.5rem;text-rendering:optimizeLegibility}.language[data-v-0836085b]{font-size:14px}.language-option[data-v-0836085b]{display:inline}@media only screen and (max-width:735px){.language-option[data-v-0836085b]{display:block;margin-bottom:.25rem}}.language-option.active[data-v-0836085b],.language-option.router-link-exact-active[data-v-0836085b]{color:var(--colors-secondary-label,var(--color-secondary-label))}@media only screen and (min-width:736px){.language-option.swift[data-v-0836085b]{border-right:1px solid var(--color-fill-gray-tertiary);margin-right:10px;padding-right:10px}}[data-v-002affcc] .code-listing{background:var(--background,var(--color-code-background));color:var(--text,var(--color-code-plain));border-color:var(--colors-grid,var(--color-grid));border-width:1px;border-style:solid}[data-v-002affcc]+.code-listing,[data-v-002affcc] .code-listing+*{margin-top:1.6em}[data-v-002affcc] .code-listing pre{padding:8px 14px;padding-right:0}[data-v-002affcc] .code-listing pre>code{font-size:.88235rem;line-height:1.66667;font-weight:400;letter-spacing:-.027em;font-family:Menlo,monospace}[data-v-002affcc] *+aside,[data-v-002affcc] *+figure,[data-v-002affcc]+.endpoint-example,[data-v-002affcc] .endpoint-example+*,[data-v-002affcc] aside+*,[data-v-002affcc] figure+*{margin-top:1.6em}[data-v-002affcc] img{display:block;margin:1.6em auto;max-width:100%}[data-v-002affcc] ol,[data-v-002affcc] ul{margin-top:.8em;margin-left:2rem}[data-v-002affcc] ol li:not(:first-child),[data-v-002affcc] ul li:not(:first-child){margin-top:.8em}@media only screen and (max-width:735px){[data-v-002affcc] ol,[data-v-002affcc] ul{margin-left:1.25rem}}[data-v-002affcc]+dl,[data-v-002affcc] dl+*,[data-v-002affcc] dt:not(:first-child){margin-top:.8em}[data-v-002affcc] dd{margin-left:2em}.abstract[data-v-702ec04e]{font-size:1.23529rem;line-height:1.38095;font-weight:400;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:735px){.abstract[data-v-702ec04e]{font-size:1.11765rem;line-height:1.42105;font-weight:400;letter-spacing:.012em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}[data-v-702ec04e] p:last-child{margin-bottom:0}.contenttable[data-v-1a780186]{background:var(--color-content-table-content-color);padding:3rem 0}.container[data-v-1a780186]{margin-left:auto;margin-right:auto;width:980px}@media only screen and (max-width:1068px){.container[data-v-1a780186]{width:692px}}@media only screen and (max-width:735px){.container[data-v-1a780186]{width:87.5%}}.title[data-v-1a780186]{font-size:1.88235rem;line-height:1.125;font-weight:400;letter-spacing:.013em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){.title[data-v-1a780186]{font-size:1.64706rem;line-height:1.14286;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){.title[data-v-1a780186]{font-size:1.41176rem;line-height:1.16667;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.contenttable-section[data-v-bedf02be]{border-top-color:var(--color-grid);border-top-style:solid;border-top-width:1px;align-items:baseline;display:flex;margin:2rem 0;padding-top:2rem}.contenttable-section[data-v-bedf02be]:last-child{margin-bottom:0}.section-content[data-v-bedf02be]{padding-left:1rem}[data-v-bedf02be] .title{font-size:1.41176rem;line-height:1.16667;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){[data-v-bedf02be] .title{font-size:1.23529rem;line-height:1.19048;font-weight:400;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){.contenttable-section[data-v-bedf02be]{align-items:unset;border-top:none;display:inherit;margin:0}.section-content[data-v-bedf02be],.section-title[data-v-bedf02be]{padding:0}[data-v-bedf02be] .title{border-bottom-color:var(--color-grid);border-bottom-style:solid;border-bottom-width:1px;margin:0 0 2rem 0;padding-bottom:.5rem}}.topic-icon-wrapper[data-v-4d1e7968]{display:flex;align-items:center;justify-content:center;height:1.47059rem;flex:0 0 1.294rem;width:1.294rem;margin-right:.5em}.topic-icon[data-v-4d1e7968]{height:.88235rem;transform:scale(1);-webkit-transform:scale(1);overflow:visible}.topic-icon.curly-brackets-icon[data-v-4d1e7968]{height:1rem}.token-method[data-v-5caf1b5b]{font-weight:700}.token-keyword[data-v-5caf1b5b]{color:var(--syntax-keyword,var(--color-syntax-keywords))}.token-number[data-v-5caf1b5b]{color:var(--syntax-number,var(--color-syntax-numbers))}.token-string[data-v-5caf1b5b]{color:var(--syntax-string,var(--color-syntax-strings))}.token-attribute[data-v-5caf1b5b]{color:var(--syntax-attribute,var(--color-syntax-keywords))}.token-internalParam[data-v-5caf1b5b]{color:var(--color-syntax-param-internal-name)}.type-identifier-link[data-v-5caf1b5b]{color:var(--syntax-type,var(--color-syntax-other-type-names))}.token-removed[data-v-5caf1b5b]{background-color:var(--color-highlight-red)}.token-added[data-v-5caf1b5b]{background-color:var(--color-highlight-green)}.decorator[data-v-06ec7395],.label[data-v-06ec7395]{color:var(--colors-secondary-label,var(--color-secondary-label))}.label[data-v-06ec7395]{font-size:1rem;line-height:1.47059;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.empty-token[data-v-06ec7395]{font-size:0}.empty-token[data-v-06ec7395]:after{content:"\00a0";font-size:1rem}.conditional-constraints[data-v-1548fd90] code{color:var(--colors-secondary-label,var(--color-secondary-label))}.abstract[data-v-1e5f16e7],.link-block[data-v-1e5f16e7] .badge{margin-left:calc(.5em + 1.294rem)}.link-block .badge+.badge[data-v-1e5f16e7]{margin-left:1rem}.link-block[data-v-1e5f16e7],.link[data-v-1e5f16e7]{box-sizing:inherit}.link-block.changed[data-v-1e5f16e7],.link.changed[data-v-1e5f16e7]{padding-left:.70588rem;padding-right:1.88235rem;padding-top:5px;padding-bottom:5px;display:inline-flex;margin-left:-.76471rem;width:calc(100% + 13px)}.link-block.changed.changed[data-v-1e5f16e7],.link.changed.changed[data-v-1e5f16e7]{padding-left:12px}@media only screen and (max-width:735px){.link-block.changed[data-v-1e5f16e7],.link.changed[data-v-1e5f16e7]{padding-left:0;padding-right:0}.link-block.changed.changed[data-v-1e5f16e7],.link.changed.changed[data-v-1e5f16e7]{padding-left:12px;padding-right:1.88235rem}}@media only screen and (max-width:735px){.link-block.changed[data-v-1e5f16e7],.link.changed[data-v-1e5f16e7]{padding-left:0;padding-right:0}}@media only screen and (max-width:735px){.link-block.changed[data-v-1e5f16e7]:not(.changed),.link.changed[data-v-1e5f16e7]:not(.changed){margin-left:0;width:100%}.link-block.changed.changed[data-v-1e5f16e7],.link.changed.changed[data-v-1e5f16e7]{margin-left:-.70588rem;width:calc(100% + 24px)}}.link[data-v-1e5f16e7]{display:flex}.link-block .badge[data-v-1e5f16e7]{margin-top:.5rem}.link-block.has-inline-element[data-v-1e5f16e7]{display:flex;align-items:flex-start;flex-flow:row wrap}.link-block.has-inline-element .badge[data-v-1e5f16e7]{margin-left:1rem;margin-top:0}.link-block .has-adjacent-elements[data-v-1e5f16e7]{padding-top:5px;padding-bottom:5px;display:inline-flex}.abstract .topic-required[data-v-1e5f16e7]:not(:first-child){margin-top:4px}.topic-required[data-v-1e5f16e7]{font-size:.8em}.deprecated[data-v-1e5f16e7]{text-decoration:line-through}.conditional-constraints[data-v-1e5f16e7]{font-size:.82353rem;margin-top:4px}.section-content>.content[data-v-3e48ad3a],.topic[data-v-3e48ad3a]:not(:last-child){margin-bottom:1.5rem}.description[data-v-3b0e7cbb]:not(:empty){margin-bottom:2rem}.nodocumentation[data-v-3b0e7cbb]{font-size:1.23529rem;line-height:1.38095;font-weight:400;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--colors-secondary-label,var(--color-secondary-label));margin-bottom:0}@media only screen and (max-width:735px){.nodocumentation[data-v-3b0e7cbb]{font-size:1.11765rem;line-height:1.42105;font-weight:400;letter-spacing:.012em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}[data-v-3b0e7cbb] .content+*{margin-top:.8em}.summary-list[data-v-731de2f2]{font-size:.82353rem;list-style:none;margin:0}.summary-list-item[data-v-1648b0ac]{margin-bottom:.25rem;padding-left:0}.summary-list-item[data-v-1648b0ac]:last-child{margin-bottom:0}.name[data-v-4616e162]:after{content:", "}.name[data-v-4616e162]:last-of-type:after{content:""}.icon-holder[data-v-7e43087c]{display:inline;white-space:nowrap}.icon-holder .link-text[data-v-7e43087c]{vertical-align:middle}.icon-holder .link-icon[data-v-7e43087c]{height:1em;vertical-align:text-bottom}.datalist dd{padding-left:2rem}.datalist dt{font-weight:600;padding-left:1rem;padding-top:1.64706rem}.datalist dt:first-of-type{padding-top:0}.source[data-v-bb800958]{background:var(--background,var(--color-code-background));border-color:var(--color-grid);color:var(--text,var(--color-code-plain));border-radius:4px;border-style:solid;border-width:1px;padding:8px 14px;speak:literal-punctuation;line-height:25px}.source.has-multiple-lines[data-v-bb800958]{border-radius:4px}.source.indented[data-v-bb800958]{padding-left:2.76447em;text-indent:-1.88235em;white-space:normal}.source>code[data-v-bb800958]{font-size:.88235rem;line-height:1.66667;font-weight:400;letter-spacing:-.027em;font-family:Menlo,monospace;display:block}.platforms[data-v-1dc256a6]{font-size:.82353rem;line-height:1.42857;font-weight:400;letter-spacing:-.016em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;margin-bottom:.45rem;margin-top:1.6em}.changed .platforms[data-v-1dc256a6]{padding-left:.588rem}.platforms[data-v-1dc256a6]:first-of-type{margin-top:1rem}.source[data-v-1dc256a6]{margin:14px 0}.platforms+.source[data-v-1dc256a6]{margin:0}.changed .source[data-v-1dc256a6]{background:none;border:none;margin-top:0;margin-bottom:0;margin-right:1.88235rem;padding-right:0}.declaration-diff-version[data-v-676d8556]{padding-left:.588rem;padding-right:1.88235rem;font-size:1rem;line-height:1.52941;font-weight:600;letter-spacing:-.021em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--color-figure-gray-secondary);margin:0}.declaration-diff-current[data-v-676d8556],.declaration-diff-previous[data-v-676d8556]{padding-top:5px}.declaration-diff-previous[data-v-676d8556]{background-color:var(--color-changes-modified-previous-background);border-radius:0 0 4px 4px;position:relative}.conditional-constraints[data-v-e39c4ee4]{margin:1.17647rem 0 3rem 0}.type[data-v-791bac44]:first-letter{text-transform:capitalize}.detail-type[data-v-61ef551b]{font-weight:600;padding-left:1rem;padding-top:1.64706rem}.detail-type[data-v-61ef551b]:first-child{padding-top:0}@media only screen and (max-width:735px){.detail-type[data-v-61ef551b]{padding-left:0}}.detail-content[data-v-61ef551b]{padding-left:2rem}@media only screen and (max-width:735px){.detail-content[data-v-61ef551b]{padding-left:0}}.param-name[data-v-7bb7c035]{font-weight:600;padding-left:1rem;padding-top:1.64706rem}.param-name[data-v-7bb7c035]:first-child{padding-top:0}@media only screen and (max-width:735px){.param-name[data-v-7bb7c035]{padding-left:0}}.param-content[data-v-7bb7c035]{padding-left:2rem}@media only screen and (max-width:735px){.param-content[data-v-7bb7c035]{padding-left:0}}.param-content[data-v-7bb7c035] dt{font-weight:600}.param-content[data-v-7bb7c035] dd{margin-left:1em}.parameters-table[data-v-1455266b] .change-added,.parameters-table[data-v-1455266b] .change-removed{display:inline-block}.parameters-table[data-v-1455266b] .change-removed,.parameters-table[data-v-1455266b] .token-removed{text-decoration:line-through}.param[data-v-1455266b]{font-size:.88235rem;box-sizing:border-box}.param.changed[data-v-1455266b]{display:flex;flex-flow:row wrap;width:100%;padding-left:.70588rem;padding-right:1.88235rem;padding-top:5px;padding-bottom:5px;display:inline-flex}.param.changed.changed[data-v-1455266b]{padding-left:12px}@media only screen and (max-width:735px){.param.changed[data-v-1455266b]{padding-left:0;padding-right:0}.param.changed.changed[data-v-1455266b]{padding-left:12px;padding-right:1.88235rem}}@media only screen and (max-width:735px){.param.changed[data-v-1455266b]{padding-left:0;padding-right:0}}@media only screen and (max-width:735px){.param.changed[data-v-1455266b]:not(.changed){margin-left:0;width:100%}.param.changed.changed[data-v-1455266b]{margin-left:-.70588rem;width:calc(100% + 24px)}}.param.changed+.param.changed[data-v-1455266b]{margin-top:.82353rem}.changed .param-content[data-v-1455266b],.changed .param-symbol[data-v-1455266b]{padding-top:5px;padding-bottom:5px}@media only screen and (max-width:735px){.changed .param-content[data-v-1455266b]{padding-top:0}.changed .param-symbol[data-v-1455266b]{padding-bottom:0}}.param-symbol[data-v-1455266b]{text-align:right}@media only screen and (max-width:735px){.param-symbol[data-v-1455266b]{text-align:left}}.param-symbol[data-v-1455266b] .type-identifier-link{color:var(--color-link)}.param+.param[data-v-1455266b]{margin-top:1.64706rem}.param+.param[data-v-1455266b]:first-child{margin-top:0}.param-content[data-v-1455266b]{padding-left:1rem;padding-right:1.88235rem}@media only screen and (max-width:735px){.param-content[data-v-1455266b]{padding-left:0;padding-right:0}}.property-metadata[data-v-8590589e]{color:var(--color-figure-gray-secondary)}.property-required{font-weight:700}.property-metadata[data-v-0a648a1e]{color:var(--color-figure-gray-secondary)}.property-name[data-v-387d76c0]{font-weight:700}.property-name.deprecated[data-v-387d76c0]{text-decoration:line-through}.property-deprecated[data-v-387d76c0]{margin-left:0}.content[data-v-387d76c0],.content[data-v-387d76c0] p:first-child{display:inline}.response-mimetype[data-v-2faa6020]{color:var(--color-figure-gray-secondary)}.part-name[data-v-458971c5]{font-weight:700}.content[data-v-458971c5],.content[data-v-458971c5] p:first-child{display:inline}.param-name[data-v-74e7f790]{font-weight:700}.param-name.deprecated[data-v-74e7f790]{text-decoration:line-through}.param-deprecated[data-v-74e7f790]{margin-left:0}.content[data-v-74e7f790],.content[data-v-74e7f790] p:first-child{display:inline}.response-name[data-v-57796e8c],.response-reason[data-v-57796e8c]{font-weight:700}@media only screen and (max-width:735px){.response-reason[data-v-57796e8c]{display:none}}.response-name>code>.reason[data-v-57796e8c]{display:none}@media only screen and (max-width:735px){.response-name>code>.reason[data-v-57796e8c]{display:initial}}[data-v-011bef72] h2{font-size:1.88235rem;line-height:1.125;font-weight:400;letter-spacing:.013em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){[data-v-011bef72] h2{font-size:1.64706rem;line-height:1.14286;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){[data-v-011bef72] h2{font-size:1.41176rem;line-height:1.16667;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.primary-content[data-v-011bef72]:before{border-top-color:var(--colors-grid,var(--color-grid));border-top-style:solid;border-top-width:1px;content:"";display:block}.primary-content[data-v-011bef72]>*{margin-bottom:3rem;margin-top:3rem}.primary-content[data-v-011bef72]>:first-child{margin-top:2rem}.relationships-list[data-v-e4fe9834]{list-style:none}.relationships-list.column[data-v-e4fe9834]{margin:0}.relationships-list.inline[data-v-e4fe9834]{-moz-columns:1;columns:1;display:flex;flex-direction:row;flex-wrap:wrap;margin:0}.relationships-list.inline li[data-v-e4fe9834]:not(:last-child):after{content:",\00a0"}.relationships-list.changed[data-v-e4fe9834]{padding-left:.70588rem;padding-right:1.88235rem;padding-top:5px;padding-bottom:5px;display:inline-flex;margin-left:-.76471rem;width:calc(100% + 13px)}.relationships-list.changed.changed[data-v-e4fe9834]{padding-left:12px}@media only screen and (max-width:735px){.relationships-list.changed[data-v-e4fe9834]{padding-left:0;padding-right:0}.relationships-list.changed.changed[data-v-e4fe9834]{padding-left:12px;padding-right:1.88235rem}}@media only screen and (max-width:735px){.relationships-list.changed[data-v-e4fe9834]{padding-left:0;padding-right:0}}@media only screen and (max-width:735px){.relationships-list.changed[data-v-e4fe9834]:not(.changed){margin-left:0;width:100%}.relationships-list.changed.changed[data-v-e4fe9834]{margin-left:-.70588rem;width:calc(100% + 24px)}}.relationships-list.changed[data-v-e4fe9834]:after{margin-top:7px}.relationships-list.changed.column[data-v-e4fe9834]{display:block}.relationships-item[data-v-e4fe9834],.relationships-list[data-v-e4fe9834]{box-sizing:inherit}.conditional-constraints[data-v-e4fe9834]{font-size:.82353rem;margin:.17647rem 0 .58824rem 1.17647rem}.availability[data-v-0c59731a],.platform-list[data-v-0c59731a],.platform[data-v-0c59731a]{box-sizing:inherit}.platform[data-v-0c59731a]{padding-right:2rem;box-sizing:border-box;padding-left:.70588rem;padding-right:1.88235rem;padding-left:0;margin-bottom:.25rem;padding-top:5px;padding-bottom:5px}.platform[data-v-0c59731a]:after{width:1rem;height:1rem;margin-top:6px}.platform.changed[data-v-0c59731a]{padding-left:12px}@media only screen and (max-width:735px){.platform[data-v-0c59731a]{padding-left:0;padding-right:0}.platform.changed[data-v-0c59731a]{padding-left:12px;padding-right:1.88235rem}}.platform[data-v-0c59731a]:last-child{margin-bottom:0}.platform-badge[data-v-0c59731a]{margin-left:.47059rem}.platform.changed[data-v-0c59731a]{margin-left:-.76471rem;width:calc(100% + 13px)}.platform.changed[data-v-0c59731a]:after{width:1rem;height:1rem;margin-top:6px}@media only screen and (max-width:735px){.platform.changed[data-v-0c59731a]:not(.changed){margin-left:0;width:100%}.platform.changed.changed[data-v-0c59731a]{margin-left:-.70588rem;width:calc(100% + 24px)}}.summary[data-v-19bd58b6]{color:var(--colors-secondary-label,var(--color-secondary-label));font-size:.94118rem;margin-bottom:3rem;padding:5px 0 0 4em}@media only screen and (max-width:1068px){.summary[data-v-19bd58b6]{padding-left:2em}}@media only screen and (max-width:735px){.summary[data-v-19bd58b6]{padding-left:0;margin-bottom:2.35294rem;display:grid;grid-gap:.94118rem;grid-template-columns:repeat(auto-fill,minmax(128px,1fr))}}.topictitle[data-v-e1f00c5e]{margin-left:auto;margin-right:auto;width:980px;margin-top:2rem}@media only screen and (max-width:1068px){.topictitle[data-v-e1f00c5e]{width:692px}}@media only screen and (max-width:735px){.topictitle[data-v-e1f00c5e]{width:87.5%}}.eyebrow[data-v-e1f00c5e]{font-size:1.23529rem;line-height:1.19048;font-weight:400;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--colors-secondary-label,var(--color-secondary-label));display:block;margin-bottom:1.17647rem}@media only screen and (max-width:735px){.eyebrow[data-v-e1f00c5e]{font-size:1.11765rem;line-height:1.21053;font-weight:400;letter-spacing:.012em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.title[data-v-e1f00c5e]{font-size:2.35294rem;line-height:1.1;font-weight:400;letter-spacing:0;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){.title[data-v-e1f00c5e]{font-size:1.88235rem;line-height:1.125;font-weight:400;letter-spacing:.013em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){.title[data-v-e1f00c5e]{font-size:1.64706rem;line-height:1.14286;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.doc-topic[data-v-134e8272]{background:var(--colors-text-background,var(--color-text-background))}#main[data-v-134e8272]{outline-style:none}.container[data-v-134e8272]{margin-left:auto;margin-right:auto;width:980px;outline-style:none;margin-top:1.5rem}@media only screen and (max-width:1068px){.container[data-v-134e8272]{width:692px}}@media only screen and (max-width:735px){.container[data-v-134e8272]{width:87.5%}}.content-grid[data-v-134e8272]{display:grid;grid-template-columns:75% 25%;grid-template-rows:auto minmax(0,1fr)}@media only screen and (max-width:735px){.content-grid[data-v-134e8272]{display:block}}.content-grid[data-v-134e8272]:after,.content-grid[data-v-134e8272]:before{display:none}.content-grid.full-width[data-v-134e8272]{grid-template-columns:100%}.description[data-v-134e8272]{grid-column:1}.summary[data-v-134e8272]{grid-column:2;grid-row:1/-1}.primary-content[data-v-134e8272]{grid-column:1}.button-cta[data-v-134e8272]{margin-top:2em}[data-v-134e8272] h3{font-size:1.64706rem;line-height:1.14286;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){[data-v-134e8272] h3{font-size:1.41176rem;line-height:1.16667;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){[data-v-134e8272] h3{font-size:1.23529rem;line-height:1.19048;font-weight:400;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}[data-v-134e8272] h4{font-size:1.41176rem;line-height:1.16667;font-weight:600;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){[data-v-134e8272] h4{font-size:1.23529rem;line-height:1.19048;font-weight:600;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}[data-v-134e8272] h5{font-size:1.29412rem;line-height:1.18182;font-weight:600;letter-spacing:.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){[data-v-134e8272] h5{font-size:1.17647rem;line-height:1.2;font-weight:600;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){[data-v-134e8272] h5{font-size:1.05882rem;line-height:1.44444;font-weight:600;letter-spacing:.012em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}[data-v-134e8272] h6{font-size:1rem;line-height:1.47059;font-weight:600;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif} \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/css/documentation-topic~topic~tutorials-overview.cb5e3789.css b/Sources/Mockingbird.docc/Renderer/css/documentation-topic~topic~tutorials-overview.cb5e3789.css deleted file mode 100644 index 0475096b..00000000 --- a/Sources/Mockingbird.docc/Renderer/css/documentation-topic~topic~tutorials-overview.cb5e3789.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */.svg-icon[data-v-0137d411]{fill:var(--colors-svg-icon-fill-light,var(--color-svg-icon));transform:scale(1);-webkit-transform:scale(1);overflow:visible}.theme-dark .svg-icon[data-v-0137d411]{fill:var(--colors-svg-icon-fill-dark,var(--color-svg-icon))}.svg-icon.icon-inline[data-v-0137d411]{display:inline-block;vertical-align:middle;fill:currentColor}.svg-icon.icon-inline[data-v-0137d411] .svg-icon-stroke{stroke:currentColor}[data-v-0137d411] .svg-icon-stroke{stroke:var(--colors-svg-icon-fill-light,var(--color-svg-icon))}.theme-dark[data-v-0137d411] .svg-icon-stroke{stroke:var(--colors-svg-icon-fill-dark,var(--color-svg-icon))}.label[data-v-5117d474]{font-size:.70588rem;line-height:1.33333;font-weight:600;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.label+[data-v-5117d474]{margin-top:.4em}.deprecated .label[data-v-5117d474]{color:var(--color-aside-deprecated)}.experiment .label[data-v-5117d474]{color:var(--color-aside-experiment)}.important .label[data-v-5117d474]{color:var(--color-aside-important)}.note .label[data-v-5117d474]{color:var(--color-aside-note)}.tip .label[data-v-5117d474]{color:var(--color-aside-tip)}.warning .label[data-v-5117d474]{color:var(--color-aside-warning)}.doc-topic aside[data-v-5117d474]{border-radius:4px;padding:.94118rem;border:0 solid;border-left-width:6px}.doc-topic aside.deprecated[data-v-5117d474]{background-color:var(--color-aside-deprecated-background);border-color:var(--color-aside-deprecated-border);box-shadow:0 0 0 0 var(--color-aside-deprecated-border) inset,0 0 0 0 var(--color-aside-deprecated-border)}.doc-topic aside.experiment[data-v-5117d474]{background-color:var(--color-aside-experiment-background);border-color:var(--color-aside-experiment-border);box-shadow:0 0 0 0 var(--color-aside-experiment-border) inset,0 0 0 0 var(--color-aside-experiment-border)}.doc-topic aside.important[data-v-5117d474]{background-color:var(--color-aside-important-background);border-color:var(--color-aside-important-border);box-shadow:0 0 0 0 var(--color-aside-important-border) inset,0 0 0 0 var(--color-aside-important-border)}.doc-topic aside.note[data-v-5117d474]{background-color:var(--color-aside-note-background);border-color:var(--color-aside-note-border);box-shadow:0 0 0 0 var(--color-aside-note-border) inset,0 0 0 0 var(--color-aside-note-border)}.doc-topic aside.tip[data-v-5117d474]{background-color:var(--color-aside-tip-background);border-color:var(--color-aside-tip-border);box-shadow:0 0 0 0 var(--color-aside-tip-border) inset,0 0 0 0 var(--color-aside-tip-border)}.doc-topic aside.warning[data-v-5117d474]{background-color:var(--color-aside-warning-background);border-color:var(--color-aside-warning-border);box-shadow:0 0 0 0 var(--color-aside-warning-border) inset,0 0 0 0 var(--color-aside-warning-border)}.doc-topic aside .label[data-v-5117d474]{font-size:1rem;line-height:1.52941;font-weight:600;letter-spacing:-.021em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}code[data-v-05f4a5b7]{speak-punctuation:code}.nav-menu-items[data-v-aa06bfc4]{display:flex;justify-content:flex-end}.nav--in-breakpoint-range .nav-menu-items[data-v-aa06bfc4]{display:block;opacity:0;padding:1rem 1.88235rem 1.64706rem 1.88235rem;transform:translate3d(0,-50px,0);transition:transform 1s cubic-bezier(.07,1.06,.27,.95) .5s,opacity .7s cubic-bezier(.07,1.06,.27,.95) .2s}.nav--is-open.nav--in-breakpoint-range .nav-menu-items[data-v-aa06bfc4]{opacity:1;transform:translateZ(0);transition-delay:.2s,.4s}.nav--in-breakpoint-range .nav-menu-items[data-v-aa06bfc4]:not(:only-child):not(:last-child){padding-bottom:0}.nav--in-breakpoint-range .nav-menu-items[data-v-aa06bfc4]:not(:only-child):last-child{padding-top:0}.button-cta[data-v-494ad9c8]{border-radius:var(--style-button-borderRadius,4px);background:var(--colors-button-light-background,var(--color-button-background));color:var(--colors-button-text,var(--color-button-text));cursor:pointer;min-width:1.76471rem;padding:.23529rem .88235rem;text-align:center;white-space:nowrap;display:inline-block;font-size:1rem;line-height:1.47059;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.button-cta[data-v-494ad9c8]:active{background:var(--colors-button-light-backgroundActive,var(--color-button-background-active));outline:none}.button-cta[data-v-494ad9c8]:hover:not([disabled]){background:var(--colors-button-light-backgroundHover,var(--color-button-background-hover));text-decoration:none}.button-cta[data-v-494ad9c8]:disabled{opacity:.32;cursor:default}.fromkeyboard .button-cta[data-v-494ad9c8]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none}.button-cta.is-dark[data-v-494ad9c8]{background:var(--colors-button-dark-background,#06f)}.button-cta.is-dark[data-v-494ad9c8]:active{background:var(--colors-button-dark-backgroundActive,var(--color-button-background-active))}.button-cta.is-dark[data-v-494ad9c8]:hover:not([disabled]){background:var(--colors-button-dark-backgroundHover,var(--color-button-background-hover))}.file-icon[data-v-7c381064]{position:relative;align-items:flex-end;height:24px;margin:0 .5rem 0 1rem}.filename[data-v-c8c40662]{color:var(--text,var(--colors-secondary-label,var(--color-secondary-label)));font-size:.94118rem;line-height:1.1875;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;margin-top:1rem}@media only screen and (max-width:735px){.filename[data-v-c8c40662]{font-size:.82353rem;line-height:1.42857;font-weight:400;letter-spacing:-.016em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;margin-top:0}}.filename>a[data-v-c8c40662],.filename>span[data-v-c8c40662]{display:flex;align-items:center;line-height:normal}a[data-v-c8c40662]{color:var(--url,var(--color-link))}.code-line-container[data-v-193a0b82]{display:flex}.code-number[data-v-193a0b82]{padding:0 1rem 0 8px;text-align:right;min-width:2em;color:#666;-webkit-user-select:none;-moz-user-select:none;user-select:none}.code-number[data-v-193a0b82]:before{content:attr(data-line-number)}.highlighted[data-v-193a0b82]{background:var(--line-highlight,var(--color-code-line-highlight));border-left:4px solid var(--color-code-line-highlight-border)}.highlighted .code-number[data-v-193a0b82]{padding-left:4px}pre[data-v-193a0b82]{padding:14px 0;display:flex;overflow:auto;-webkit-overflow-scrolling:touch;white-space:pre;word-wrap:normal;height:100%}@media only screen and (max-width:735px){pre[data-v-193a0b82]{padding-top:.82353rem}}code[data-v-193a0b82]{display:flex;flex-direction:column;white-space:pre;word-wrap:normal;flex-grow:9999}.code-line-container[data-v-193a0b82]{flex-shrink:0;padding-right:14px}.code-listing[data-v-193a0b82],.container-general[data-v-193a0b82]{display:flex}.code-listing[data-v-193a0b82]{flex-direction:column;min-height:100%;border-radius:4px;overflow:auto}.code-listing.single-line[data-v-193a0b82]{border-radius:4px}.container-general[data-v-193a0b82],pre[data-v-193a0b82]{flex-grow:1}code[data-v-369467b5]{width:100%}.container-general[data-v-369467b5]{display:flex;flex-flow:row wrap}.container-general .code-line[data-v-369467b5]{flex:1 0 auto}.code-line-container[data-v-369467b5]{align-items:center;display:flex;border-left:4px solid transparent;counter-increment:linenumbers;padding-right:14px}.code-number[data-v-369467b5]{font-size:.70588rem;line-height:1.5;font-weight:400;letter-spacing:0;font-family:Menlo,monospace;padding:0 1rem 0 8px;text-align:right;min-width:2.01em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.code-number[data-v-369467b5]:before{content:counter(linenumbers)}.code-line[data-v-369467b5]{display:flex}pre[data-v-369467b5]{padding:14px 0;display:flex;flex-flow:row wrap;overflow:auto;-webkit-overflow-scrolling:touch;white-space:pre;word-wrap:normal}@media only screen and (max-width:735px){pre[data-v-369467b5]{padding-top:.82353rem}}.collapsible-code-listing[data-v-369467b5]{background:var(--background,var(--color-code-background));border-color:var(--colors-grid,var(--color-grid));color:var(--text,var(--color-code-plain));border-radius:4px;border-style:solid;border-width:1px;counter-reset:linenumbers;font-size:15px}.collapsible-code-listing.single-line[data-v-369467b5]{border-radius:4px}.collapsible[data-v-369467b5]{background:var(--color-code-collapsible-background);color:var(--color-code-collapsible-text)}.collapsed[data-v-369467b5]:before{content:"⋯";display:inline-block;font-family:monospace;font-weight:700;height:100%;line-height:1;text-align:right;width:2.3rem}.collapsed .code-line-container[data-v-369467b5]{height:0;visibility:hidden}.row[data-v-be73599c]{box-sizing:border-box;display:flex;flex-flow:row wrap}.col[data-v-2ee3ad8b]{box-sizing:border-box;flex:none}.large-1[data-v-2ee3ad8b]{flex-basis:8.33333%;max-width:8.33333%}.large-2[data-v-2ee3ad8b]{flex-basis:16.66667%;max-width:16.66667%}.large-3[data-v-2ee3ad8b]{flex-basis:25%;max-width:25%}.large-4[data-v-2ee3ad8b]{flex-basis:33.33333%;max-width:33.33333%}.large-5[data-v-2ee3ad8b]{flex-basis:41.66667%;max-width:41.66667%}.large-6[data-v-2ee3ad8b]{flex-basis:50%;max-width:50%}.large-7[data-v-2ee3ad8b]{flex-basis:58.33333%;max-width:58.33333%}.large-8[data-v-2ee3ad8b]{flex-basis:66.66667%;max-width:66.66667%}.large-9[data-v-2ee3ad8b]{flex-basis:75%;max-width:75%}.large-10[data-v-2ee3ad8b]{flex-basis:83.33333%;max-width:83.33333%}.large-11[data-v-2ee3ad8b]{flex-basis:91.66667%;max-width:91.66667%}.large-12[data-v-2ee3ad8b]{flex-basis:100%;max-width:100%}.large-centered[data-v-2ee3ad8b]{margin-left:auto;margin-right:auto}.large-uncentered[data-v-2ee3ad8b]{margin-left:0;margin-right:0}@media only screen and (max-width:1068px){.medium-1[data-v-2ee3ad8b]{flex-basis:8.33333%;max-width:8.33333%}.medium-2[data-v-2ee3ad8b]{flex-basis:16.66667%;max-width:16.66667%}.medium-3[data-v-2ee3ad8b]{flex-basis:25%;max-width:25%}.medium-4[data-v-2ee3ad8b]{flex-basis:33.33333%;max-width:33.33333%}.medium-5[data-v-2ee3ad8b]{flex-basis:41.66667%;max-width:41.66667%}.medium-6[data-v-2ee3ad8b]{flex-basis:50%;max-width:50%}.medium-7[data-v-2ee3ad8b]{flex-basis:58.33333%;max-width:58.33333%}.medium-8[data-v-2ee3ad8b]{flex-basis:66.66667%;max-width:66.66667%}.medium-9[data-v-2ee3ad8b]{flex-basis:75%;max-width:75%}.medium-10[data-v-2ee3ad8b]{flex-basis:83.33333%;max-width:83.33333%}.medium-11[data-v-2ee3ad8b]{flex-basis:91.66667%;max-width:91.66667%}.medium-12[data-v-2ee3ad8b]{flex-basis:100%;max-width:100%}.medium-centered[data-v-2ee3ad8b]{margin-left:auto;margin-right:auto}.medium-uncentered[data-v-2ee3ad8b]{margin-left:0;margin-right:0}}@media only screen and (max-width:735px){.small-1[data-v-2ee3ad8b]{flex-basis:8.33333%;max-width:8.33333%}.small-2[data-v-2ee3ad8b]{flex-basis:16.66667%;max-width:16.66667%}.small-3[data-v-2ee3ad8b]{flex-basis:25%;max-width:25%}.small-4[data-v-2ee3ad8b]{flex-basis:33.33333%;max-width:33.33333%}.small-5[data-v-2ee3ad8b]{flex-basis:41.66667%;max-width:41.66667%}.small-6[data-v-2ee3ad8b]{flex-basis:50%;max-width:50%}.small-7[data-v-2ee3ad8b]{flex-basis:58.33333%;max-width:58.33333%}.small-8[data-v-2ee3ad8b]{flex-basis:66.66667%;max-width:66.66667%}.small-9[data-v-2ee3ad8b]{flex-basis:75%;max-width:75%}.small-10[data-v-2ee3ad8b]{flex-basis:83.33333%;max-width:83.33333%}.small-11[data-v-2ee3ad8b]{flex-basis:91.66667%;max-width:91.66667%}.small-12[data-v-2ee3ad8b]{flex-basis:100%;max-width:100%}.small-centered[data-v-2ee3ad8b]{margin-left:auto;margin-right:auto}.small-uncentered[data-v-2ee3ad8b]{margin-left:0;margin-right:0}}.tabnav[data-v-42371214]{margin:.88235rem 0 1.47059rem 0}.tabnav-items[data-v-42371214]{display:inline-block;margin:0;text-align:center}.tabnav-item[data-v-723a9588]{border-bottom:1px solid;border-color:var(--colors-tabnav-item-border-color,var(--color-tabnav-item-border-color));display:inline-block;list-style:none;padding-left:1.76471rem;margin:0;outline:none}.tabnav-item[data-v-723a9588]:first-child{padding-left:0}.tabnav-item[data-v-723a9588]:nth-child(n+1){margin:0}.tabnav-link[data-v-723a9588]{color:var(--colors-secondary-label,var(--color-secondary-label));font-size:1rem;line-height:1;font-weight:400;letter-spacing:-.021em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:9px 0 11px;margin-top:2px;margin-bottom:4px;text-align:left;text-decoration:none;display:block;position:relative;z-index:0}.tabnav-link[data-v-723a9588]:hover{text-decoration:none}.tabnav-link[data-v-723a9588]:focus{outline-offset:-1px}.tabnav-link[data-v-723a9588]:after{content:"";position:absolute;bottom:-5px;left:0;width:100%;border:1px solid transparent}.tabnav-link.active[data-v-723a9588]{color:var(--colors-text,var(--color-text));cursor:default;z-index:10}.tabnav-link.active[data-v-723a9588]:after{border-bottom-color:var(--colors-text,var(--color-text))}.controls[data-v-6197ce3f]{margin-top:5px;font-size:14px;display:flex;justify-content:flex-end}.controls a[data-v-6197ce3f]{color:var(--colors-text,var(--color-text));display:flex;align-items:center}.controls .control-icon[data-v-6197ce3f]{width:1.05em;margin-right:.3em}[data-v-7be42fb4] figcaption+*{margin-top:1rem}.caption[data-v-0bcb8b58]{font-size:.82353rem;line-height:1.5;font-weight:400;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}[data-v-0bcb8b58] p{display:inline-block}[data-v-3a939631] img{max-width:100%}*+.table-wrapper,.table-wrapper+*{margin-top:1.6em}.table-wrapper[data-v-358dcd5e]{overflow:auto;-webkit-overflow-scrolling:touch}[data-v-358dcd5e] th{font-weight:600}[data-v-358dcd5e] td,[data-v-358dcd5e] th{border-color:var(--color-fill-gray-tertiary);border-style:solid;border-width:1px 0;padding:.58824rem}s[data-v-eb91ce54]:after,s[data-v-eb91ce54]:before{position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0}s[data-v-eb91ce54]:before{content:" [start of stricken text] "}s[data-v-eb91ce54]:after{content:" [end of stricken text] "}.nav[data-v-489e6297]{position:sticky;top:0;width:100%;height:3.05882rem;z-index:9997;color:var(--color-nav-color)}@media only screen and (max-width:767px){.nav[data-v-489e6297]{min-width:320px;height:2.82353rem}}.theme-dark.nav[data-v-489e6297]{background:none;color:var(--color-nav-dark-color)}.nav__wrapper[data-v-489e6297]{position:absolute;top:0;left:0;width:100%;height:auto;min-height:100%;z-index:1}.nav__background[data-v-489e6297]{position:absolute;left:0;top:0;width:100%;height:100%;z-index:1;transition:background-color .5s ease-in}.nav__background[data-v-489e6297]:after{background-color:var(--color-nav-keyline)}.nav--solid-background .nav__background[data-v-489e6297]{background-color:var(--color-nav-solid-background);-webkit-backdrop-filter:none;backdrop-filter:none}.nav--is-open.nav--solid-background .nav__background[data-v-489e6297],.nav--is-sticking.nav--solid-background .nav__background[data-v-489e6297]{background-color:var(--color-nav-solid-background)}.nav--is-open.theme-dark.nav--solid-background .nav__background[data-v-489e6297],.nav--is-sticking.theme-dark.nav--solid-background .nav__background[data-v-489e6297],.theme-dark.nav--solid-background .nav__background[data-v-489e6297]{background-color:var(--color-nav-dark-solid-background)}.nav--in-breakpoint-range .nav__background[data-v-489e6297]{min-height:2.82353rem;transition:background-color .5s ease .7s}.nav--is-sticking .nav__background[data-v-489e6297]{background-color:var(--color-nav-expanded);max-height:none;transition:background-color .5s ease;transition-property:background-color,-webkit-backdrop-filter;transition-property:background-color,backdrop-filter;transition-property:background-color,backdrop-filter,-webkit-backdrop-filter}.nav--is-sticking .nav__background[data-v-489e6297]:after{background-color:var(--color-nav-sticking-expanded-keyline)}@supports ((-webkit-backdrop-filter:initial) or (backdrop-filter:initial)){.nav--is-sticking .nav__background[data-v-489e6297]{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:var(--color-nav-uiblur-stuck)}}.theme-dark.nav--is-sticking .nav__background[data-v-489e6297]{background-color:var(--color-nav-dark-stuck)}@supports ((-webkit-backdrop-filter:initial) or (backdrop-filter:initial)){.theme-dark.nav--is-sticking .nav__background[data-v-489e6297]{background-color:var(--color-nav-dark-uiblur-stuck)}}.nav--is-open .nav__background[data-v-489e6297]{background-color:var(--color-nav-expanded);max-height:none;transition:background-color .5s ease;transition-property:background-color,-webkit-backdrop-filter;transition-property:background-color,backdrop-filter;transition-property:background-color,backdrop-filter,-webkit-backdrop-filter}.nav--is-open .nav__background[data-v-489e6297]:after{background-color:var(--color-nav-sticking-expanded-keyline)}@supports ((-webkit-backdrop-filter:initial) or (backdrop-filter:initial)){.nav--is-open .nav__background[data-v-489e6297]{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:var(--color-nav-uiblur-expanded)}}.theme-dark.nav--is-open .nav__background[data-v-489e6297]{background-color:var(--color-nav-dark-expanded)}@supports ((-webkit-backdrop-filter:initial) or (backdrop-filter:initial)){.theme-dark.nav--is-open .nav__background[data-v-489e6297]{background-color:var(--color-nav-dark-uiblur-expanded)}}.theme-dark .nav__background[data-v-489e6297]:after{background-color:var(--color-nav-dark-keyline)}.nav--is-open.theme-dark .nav__background[data-v-489e6297]:after,.nav--is-sticking.theme-dark .nav__background[data-v-489e6297]:after{background-color:var(--color-nav-dark-sticking-expanded-keyline)}.nav__background[data-v-489e6297]:after{content:"";display:block;position:absolute;top:100%;left:50%;transform:translateX(-50%);width:980px;height:1px;z-index:1}@media only screen and (max-width:1023px){.nav__background[data-v-489e6297]:after{width:100%}}.nav--noborder .nav__background[data-v-489e6297]:after{display:none}.nav--is-sticking.nav--noborder .nav__background[data-v-489e6297]:after{display:block}.nav--fullwidth-border .nav__background[data-v-489e6297]:after,.nav--is-open .nav__background[data-v-489e6297]:after,.nav--is-sticking .nav__background[data-v-489e6297]:after,.nav--solid-background .nav__background[data-v-489e6297]:after{width:100%}.nav-overlay[data-v-489e6297]{position:fixed;left:0;right:0;top:0;display:block;opacity:0}.nav--is-open .nav-overlay[data-v-489e6297]{background-color:rgba(51,51,51,.4);transition:opacity .7s cubic-bezier(.07,1.06,.27,.95) .2s;bottom:0;opacity:1}.nav-wrapper[data-v-489e6297]{position:absolute;top:0;left:0;width:100%;height:auto;min-height:100%;z-index:1}.nav-content[data-v-489e6297]{display:flex;padding:0 1.29412rem;max-width:980px;margin:0 auto;position:relative;z-index:2;justify-content:space-between}@supports (padding:calc(max(0px))){.nav-content[data-v-489e6297]{padding-left:calc(max(1.29412rem, env(safe-area-inset-left)));padding-right:calc(max(1.29412rem, env(safe-area-inset-right)))}}@media only screen and (max-width:767px){.nav-content[data-v-489e6297]{padding:0 0 0 .94118rem}}.nav--in-breakpoint-range .nav-content[data-v-489e6297]{display:grid;grid-template-columns:1fr auto;grid-auto-rows:minmax(-webkit-min-content,-webkit-max-content);grid-auto-rows:minmax(min-content,max-content);grid-template-areas:"title actions" "menu menu"}.nav-menu[data-v-489e6297]{font-size:.70588rem;line-height:1;font-weight:400;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;flex:1 1 auto;display:flex;padding-top:10px;min-width:0}@media only screen and (max-width:767px){.nav-menu[data-v-489e6297]{font-size:.82353rem;line-height:1;font-weight:400;letter-spacing:-.02em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.nav--in-breakpoint-range .nav-menu[data-v-489e6297]{font-size:.82353rem;line-height:1;font-weight:400;letter-spacing:-.02em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding-top:0;grid-area:menu}.nav-menu-tray[data-v-489e6297]{width:100%;max-width:100%;align-items:center;display:flex;justify-content:space-between}.nav--in-breakpoint-range .nav-menu-tray[data-v-489e6297]{display:block;overflow:hidden;pointer-events:none;visibility:hidden;max-height:0;transition:max-height .4s ease-in 0s,visibility 0s linear 1s}.nav--is-open.nav--in-breakpoint-range .nav-menu-tray[data-v-489e6297]{max-height:calc(100vh - 5.64706rem);overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:auto;visibility:visible;transition-delay:.2s,0s}.nav--is-opening.nav--is-open.nav--in-breakpoint-range .nav-menu-tray[data-v-489e6297]{overflow-y:hidden}.nav--is-sticking.nav--is-open.nav--in-breakpoint-range .nav-menu-tray[data-v-489e6297]{max-height:calc(100vh - 2.82353rem)}.nav-actions[data-v-489e6297]{display:flex;align-items:center;max-height:2.82353rem;padding-right:.94118rem}.nav--in-breakpoint-range .nav-actions[data-v-489e6297]{grid-area:actions;justify-content:flex-end}.nav-title[data-v-489e6297]{height:3.05882rem;font-size:1.11765rem;line-height:1.42105;font-weight:400;letter-spacing:.012em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;cursor:default;display:flex;align-items:center;white-space:nowrap;box-sizing:border-box}@media only screen and (max-width:767px){.nav-title[data-v-489e6297]{padding-top:0;height:2.82353rem;width:90%}}.nav--in-breakpoint-range .nav-title[data-v-489e6297]{grid-area:title}.nav-title[data-v-489e6297] span{height:100%;line-height:normal}.nav-title a[data-v-489e6297]{display:inline-block;letter-spacing:inherit;line-height:normal;margin:0;text-decoration:none;white-space:nowrap}.nav-title a[data-v-489e6297]:hover{text-decoration:none}@media only screen and (max-width:767px){.nav-title a[data-v-489e6297]{display:flex}}.nav-title[data-v-489e6297],.nav-title a[data-v-489e6297]{color:var(--color-figure-gray);transition:color .5s ease-in}.nav--is-open.theme-dark .nav-title[data-v-489e6297],.nav--is-open.theme-dark .nav-title a[data-v-489e6297],.nav--is-sticking.theme-dark .nav-title[data-v-489e6297],.nav--is-sticking.theme-dark .nav-title a[data-v-489e6297],.theme-dark .nav-title[data-v-489e6297],.theme-dark .nav-title a[data-v-489e6297]{color:var(--color-nav-dark-link-color)}.nav-ax-toggle[data-v-489e6297]{display:none;position:absolute;top:0;left:0;width:1px;height:1px;z-index:10}.nav-ax-toggle[data-v-489e6297]:focus{outline-offset:-6px;width:100%;height:100%}.nav--in-breakpoint-range .nav-ax-toggle[data-v-489e6297]{display:block}.nav-menucta[data-v-489e6297]{cursor:pointer;display:none;align-items:center;overflow:hidden;width:1.17647rem;-webkit-tap-highlight-color:transparent;height:2.82353rem}.nav--in-breakpoint-range .nav-menucta[data-v-489e6297]{display:flex}.nav-menucta-chevron[data-v-489e6297]{display:block;position:relative;width:100%;height:.70588rem;transition:transform .3s linear;margin-top:2px}.nav-menucta-chevron[data-v-489e6297]:after,.nav-menucta-chevron[data-v-489e6297]:before{content:"";display:block;position:absolute;top:.58824rem;width:.70588rem;height:.05882rem;transition:transform .3s linear;background:var(--color-figure-gray)}.nav-menucta-chevron[data-v-489e6297]:before{right:50%;border-radius:.5px 0 0 .5px}.nav-menucta-chevron[data-v-489e6297]:after{left:50%;border-radius:0 .5px .5px 0}.nav-menucta-chevron[data-v-489e6297]:before{transform-origin:100% 100%;transform:rotate(40deg) scaleY(1.5)}.nav-menucta-chevron[data-v-489e6297]:after{transform-origin:0 100%;transform:rotate(-40deg) scaleY(1.5)}.nav--is-open .nav-menucta-chevron[data-v-489e6297]{transform:scaleY(-1)}.theme-dark .nav-menucta-chevron[data-v-489e6297]:after,.theme-dark .nav-menucta-chevron[data-v-489e6297]:before{background:var(--color-nav-dark-link-color)}[data-v-489e6297] .nav-menu-link{color:var(--color-nav-link-color)}[data-v-489e6297] .nav-menu-link:hover{color:var(--color-nav-link-color-hover);text-decoration:none}.theme-dark[data-v-489e6297] .nav-menu-link{color:var(--color-nav-dark-link-color)}.theme-dark[data-v-489e6297] .nav-menu-link:hover{color:var(--color-nav-dark-link-color-hover)}[data-v-489e6297] .nav-menu-link.current{color:var(--color-nav-current-link);cursor:default}[data-v-489e6297] .nav-menu-link.current:hover{color:var(--color-nav-current-link)}.theme-dark[data-v-489e6297] .nav-menu-link.current,.theme-dark[data-v-489e6297] .nav-menu-link.current:hover{color:var(--color-nav-dark-current-link)} \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/css/index.a111dc80.css b/Sources/Mockingbird.docc/Renderer/css/index.a111dc80.css deleted file mode 100644 index 47cf2051..00000000 --- a/Sources/Mockingbird.docc/Renderer/css/index.a111dc80.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */.color-scheme-toggle[data-v-4472ec1e]{--toggle-color-fill:var(--color-button-background);--toggle-color-text:var(--color-fill-blue);font-size:.70588rem;line-height:1.33333;font-weight:400;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;border:1px solid var(--toggle-color-fill);border-radius:var(--toggle-border-radius-outer,4px);display:inline-flex;padding:1px}@media screen{[data-color-scheme=dark] .color-scheme-toggle[data-v-4472ec1e]{--toggle-color-text:var(--color-figure-blue)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .color-scheme-toggle[data-v-4472ec1e]{--toggle-color-text:var(--color-figure-blue)}}input[data-v-4472ec1e]{position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.text[data-v-4472ec1e]{border:1px solid transparent;border-radius:var(--toggle-border-radius-inner,2px);color:var(--toggle-color-text);display:inline-block;text-align:center;padding:1px 6px;min-width:42px;box-sizing:border-box}.text[data-v-4472ec1e]:hover{cursor:pointer}input:checked+.text[data-v-4472ec1e]{--toggle-color-text:var(--color-button-text);background:var(--toggle-color-fill);border-color:var(--toggle-color-fill)}.footer[data-v-67c823d8]{border-top:1px solid var(--color-grid)}.row[data-v-67c823d8]{margin-left:auto;margin-right:auto;width:980px;display:flex;flex-direction:row-reverse;padding:20px 0}@media only screen and (max-width:1068px){.row[data-v-67c823d8]{width:692px}}@media only screen and (max-width:735px){.row[data-v-67c823d8]{width:87.5%}}.InitialLoadingPlaceholder[data-v-47e4ace8]{background:var(--colors-loading-placeholder-background,var(--color-loading-placeholder-background));height:100vh;width:100%}html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;background-color:var(--colors-text-background,var(--color-text-background));height:100%}abbr,blockquote,body,button,dd,dl,dt,fieldset,figure,form,h1,h2,h3,h4,h5,h6,hgroup,input,legend,li,ol,p,pre,ul{margin:0;padding:0}address,caption,code,figcaption,pre,th{font-size:1em;font-weight:400;font-style:normal}fieldset,iframe,img{border:0}caption,th{text-align:left}table{border-collapse:collapse;border-spacing:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}button{background:none;border:0;box-sizing:content-box;color:inherit;cursor:pointer;font:inherit;line-height:inherit;overflow:visible;vertical-align:inherit}button:disabled{cursor:default}:focus{outline:4px solid var(--color-focus-color);outline-offset:1px}::-moz-focus-inner{border:0;padding:0}@media print{#content,#main,body{color:#000}a,a:link,a:visited{color:#000;text-decoration:none}.hide,.noprint{display:none}}body{height:100%;min-width:320px}html{font:var(--typography-html-font,17px "Helvetica Neue","Helvetica","Arial",sans-serif);quotes:"“" "”"}body{font-size:1rem;line-height:1.47059;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;background-color:var(--color-fill);color:var(--colors-text,var(--color-text));font-style:normal;word-wrap:break-word}body,button,input,select,textarea{font-synthesis:none;-moz-font-feature-settings:"kern";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;direction:ltr;text-align:left}h1,h2,h3,h4,h5,h6{color:var(--colors-header-text,var(--color-header-text))}h1+*,h2+*,h3+*,h4+*,h5+*,h6+*{margin-top:.8em}h1+h1,h1+h2,h1+h3,h1+h4,h1+h5,h1+h6,h2+h1,h2+h2,h2+h3,h2+h4,h2+h5,h2+h6,h3+h1,h3+h2,h3+h3,h3+h4,h3+h5,h3+h6,h4+h1,h4+h2,h4+h3,h4+h4,h4+h5,h4+h6,h5+h1,h5+h2,h5+h3,h5+h4,h5+h5,h5+h6,h6+h1,h6+h2,h6+h3,h6+h4,h6+h5,h6+h6{margin-top:.4em}ol+h1,ol+h2,ol+h3,ol+h4,ol+h5,ol+h6,p+h1,p+h2,p+h3,p+h4,p+h5,p+h6,ul+h1,ul+h2,ul+h3,ul+h4,ul+h5,ul+h6{margin-top:1.6em}ol+*,p+*,ul+*{margin-top:.8em}ol,ul{margin-left:1.17647em}ol ol,ol ul,ul ol,ul ul{margin-top:0;margin-bottom:0}nav ol,nav ul{margin:0;list-style:none}li li{font-size:1em}a{color:var(--colors-link,var(--color-link))}a:link,a:visited{text-decoration:none}a:hover{text-decoration:underline}a:active{text-decoration:none}p+a{display:inline-block}b,strong{font-weight:600}cite,dfn,em,i{font-style:italic}sup{font-size:.6em;vertical-align:top;position:relative;bottom:-.2em}h1 sup,h2 sup,h3 sup{font-size:.4em}sup a{vertical-align:inherit;color:inherit}sup a:hover{color:var(--figure-blue);text-decoration:none}sub{line-height:1}abbr{border:0}pre{overflow:auto;-webkit-overflow-scrolling:auto;white-space:pre;word-wrap:normal}code{font-family:Menlo,monospace;font-weight:inherit;letter-spacing:0}.syntax-comment{color:var(--syntax-comment,var(--color-syntax-comments))}.syntax-quote{color:var(--syntax-quote,var(--color-syntax-comments))}.syntax-keyword{color:var(--syntax-keyword,var(--color-syntax-keywords))}.syntax-literal{color:var(--syntax-literal,var(--color-syntax-keywords))}.syntax-selector-tag{color:var(--syntax-selector-tag,var(--color-syntax-keywords))}.syntax-string{color:var(--syntax-string,var(--color-syntax-strings))}.syntax-bullet{color:var(--syntax-bullet,var(--color-syntax-characters))}.syntax-meta{color:var(--syntax-meta,var(--color-syntax-characters))}.syntax-number{color:var(--syntax-number,var(--color-syntax-characters))}.syntax-symbol{color:var(--syntax-symbol,var(--color-syntax-characters))}.syntax-tag{color:var(--syntax-tag,var(--color-syntax-characters))}.syntax-attr{color:var(--syntax-attr,var(--color-syntax-other-type-names))}.syntax-built_in{color:var(--syntax-built_in,var(--color-syntax-other-type-names))}.syntax-builtin-name{color:var(--syntax-builtin-name,var(--color-syntax-other-type-names))}.syntax-class{color:var(--syntax-class,var(--color-syntax-other-type-names))}.syntax-function{color:var(--syntax-function,var(--color-syntax-other-type-names))}.syntax-params{color:var(--syntax-params,var(--color-syntax-other-type-names))}.syntax-section{color:var(--syntax-section,var(--color-syntax-other-type-names))}.syntax-title{color:var(--syntax-title,var(--color-syntax-other-type-names))}.syntax-type{color:var(--syntax-type,var(--color-syntax-other-type-names))}.syntax-attribute{color:var(--syntax-attribute,var(--color-syntax-plain-text))}.syntax-identifier{color:var(--syntax-identifier,var(--color-syntax-plain-text))}.syntax-subst{color:var(--syntax-subst,var(--color-syntax-plain-text))}.syntax-doctag,.syntax-strong{font-weight:700}.syntax-emphasis,.syntax-link{font-style:italic}[data-syntax=swift] .syntax-meta{color:var(--syntax-meta,var(--color-syntax-keywords))}[data-syntax=swift] .syntax-class,[data-syntax=swift] .syntax-keyword+.syntax-params,[data-syntax=swift] .syntax-params+.syntax-params{color:unset}[data-syntax=json] .syntax-attr{color:var(--syntax-attr,var(--color-syntax-strings))}#skip-nav{position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0}#skip-nav:active,#skip-nav:focus{position:relative;float:left;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;color:var(--color-figure-blue);font-size:1em;padding:0 10px;z-index:100000;top:0;left:0;height:44px;line-height:44px;-webkit-clip-path:unset;clip-path:unset}.nav--in-breakpoint-range #skip-nav{display:none}.visuallyhidden{position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0}.changed{border:1px solid var(--color-changes-modified);border-radius:4px;position:relative}.changed.has-multiple-lines,.has-multiple-lines .changed{border-radius:4px}.changed:after{right:0;background-image:url(../img/modified-icon.f496e73d.svg);background-repeat:no-repeat;bottom:0;content:" ";margin:auto;margin-right:7px;position:absolute;top:0;width:1.17647rem;height:1.17647rem;margin-top:.41176rem;z-index:2}@media screen{[data-color-scheme=dark] .changed:after{background-image:url(../img/modified-icon.f496e73d.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .changed:after{background-image:url(../img/modified-icon.f496e73d.svg)}}.changed-added{border-color:var(--color-changes-added)}.changed-added:after{background-image:url(../img/added-icon.d6f7e47d.svg)}@media screen{[data-color-scheme=dark] .changed-added:after{background-image:url(../img/added-icon.d6f7e47d.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .changed-added:after{background-image:url(../img/added-icon.d6f7e47d.svg)}}.changed-deprecated{border-color:var(--color-changes-deprecated)}.changed-deprecated:after{background-image:url(../img/deprecated-icon.015b4f17.svg)}@media screen{[data-color-scheme=dark] .changed-deprecated:after{background-image:url(../img/deprecated-icon.015b4f17.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .changed-deprecated:after{background-image:url(../img/deprecated-icon.015b4f17.svg)}}.changed.link-block:after,.changed.relationships-item:after,.link-block .changed:after{margin-top:7px}.change-added,.change-removed{padding:2px 0}.change-removed{background-color:var(--color-highlight-red)}.change-added{background-color:var(--color-highlight-green)}body{color-scheme:light dark}body[data-color-scheme=light]{color-scheme:light}body[data-color-scheme=dark]{color-scheme:dark}body{--color-fill:#fff;--color-fill-secondary:#f7f7f7;--color-fill-tertiary:#f0f0f0;--color-fill-quaternary:#282828;--color-fill-blue:#00f;--color-fill-gray:#ccc;--color-fill-gray-secondary:#f5f5f5;--color-fill-gray-tertiary:#f0f0f0;--color-fill-green-secondary:#f0fff0;--color-fill-orange-secondary:#fffaf6;--color-fill-red-secondary:#fff0f5;--color-figure-blue:#36f;--color-figure-gray:#000;--color-figure-gray-secondary:#666;--color-figure-gray-secondary-alt:#666;--color-figure-gray-tertiary:#666;--color-figure-green:green;--color-figure-light-gray:#666;--color-figure-orange:#c30;--color-figure-red:red;--color-tutorials-teal:#000;--color-article-background:var(--color-fill-tertiary);--color-article-body-background:var(--color-fill);--color-aside-deprecated:var(--color-figure-gray);--color-aside-deprecated-background:var(--color-fill-orange-secondary);--color-aside-deprecated-border:var(--color-figure-orange);--color-aside-experiment:var(--color-figure-gray);--color-aside-experiment-background:var(--color-fill-gray-secondary);--color-aside-experiment-border:var(--color-figure-light-gray);--color-aside-important:var(--color-figure-gray);--color-aside-important-background:var(--color-fill-gray-secondary);--color-aside-important-border:var(--color-figure-light-gray);--color-aside-note:var(--color-figure-gray);--color-aside-note-background:var(--color-fill-gray-secondary);--color-aside-note-border:var(--color-figure-light-gray);--color-aside-tip:var(--color-figure-gray);--color-aside-tip-background:var(--color-fill-gray-secondary);--color-aside-tip-border:var(--color-figure-light-gray);--color-aside-warning:var(--color-figure-gray);--color-aside-warning-background:var(--color-fill-red-secondary);--color-aside-warning-border:var(--color-figure-red);--color-badge-default:var(--color-figure-light-gray);--color-badge-beta:var(--color-figure-gray-tertiary);--color-badge-deprecated:var(--color-figure-orange);--color-badge-dark-default:#b0b0b0;--color-badge-dark-beta:#b0b0b0;--color-badge-dark-deprecated:#f60;--color-button-background:var(--color-fill-blue);--color-button-background-active:#36f;--color-button-background-hover:var(--color-figure-blue);--color-button-text:#fff;--color-call-to-action-background:var(--color-fill-secondary);--color-changes-added:var(--color-figure-light-gray);--color-changes-added-hover:var(--color-figure-light-gray);--color-changes-deprecated:var(--color-figure-light-gray);--color-changes-deprecated-hover:var(--color-figure-light-gray);--color-changes-modified:var(--color-figure-light-gray);--color-changes-modified-hover:var(--color-figure-light-gray);--color-changes-modified-previous-background:var(--color-fill-gray-secondary);--color-code-background:var(--color-fill-secondary);--color-code-collapsible-background:var(--color-fill-tertiary);--color-code-collapsible-text:var(--color-figure-gray-secondary-alt);--color-code-line-highlight:rgba(51,102,255,0.08);--color-code-line-highlight-border:var(--color-figure-blue);--color-code-plain:var(--color-figure-gray);--color-content-table-content-color:var(--color-fill-secondary);--color-dropdown-background:hsla(0,0%,100%,0.8);--color-dropdown-border:#ccc;--color-dropdown-option-text:#666;--color-dropdown-text:#000;--color-dropdown-dark-background:hsla(0,0%,100%,0.1);--color-dropdown-dark-border:hsla(0,0%,94.1%,0.2);--color-dropdown-dark-option-text:#ccc;--color-dropdown-dark-text:#fff;--color-eyebrow:var(--color-figure-gray-secondary);--color-focus-border-color:var(--color-fill-blue);--color-focus-color:rgba(0,125,250,0.6);--color-form-error:var(--color-figure-red);--color-form-error-background:var(--color-fill-red-secondary);--color-form-valid:var(--color-figure-green);--color-form-valid-background:var(--color-fill-green-secondary);--color-generic-modal-background:var(--color-fill);--color-grid:var(--color-fill-gray);--color-header-text:var(--color-figure-gray);--color-hero-eyebrow:#ccc;--color-link:var(--color-figure-blue);--color-loading-placeholder-background:var(--color-fill);--color-nav-color:#666;--color-nav-current-link:rgba(0,0,0,0.6);--color-nav-expanded:#fff;--color-nav-hierarchy-collapse-background:#f0f0f0;--color-nav-hierarchy-collapse-borders:#ccc;--color-nav-hierarchy-item-borders:#ccc;--color-nav-keyline:rgba(0,0,0,0.2);--color-nav-link-color:#000;--color-nav-link-color-hover:#36f;--color-nav-outlines:#ccc;--color-nav-rule:hsla(0,0%,94.1%,0.5);--color-nav-solid-background:#fff;--color-nav-sticking-expanded-keyline:rgba(0,0,0,0.1);--color-nav-stuck:hsla(0,0%,100%,0.9);--color-nav-uiblur-expanded:hsla(0,0%,100%,0.9);--color-nav-uiblur-stuck:hsla(0,0%,100%,0.7);--color-nav-root-subhead:var(--color-tutorials-teal);--color-nav-dark-border-top-color:hsla(0,0%,100%,0.4);--color-nav-dark-color:#b0b0b0;--color-nav-dark-current-link:hsla(0,0%,100%,0.6);--color-nav-dark-expanded:#2a2a2a;--color-nav-dark-hierarchy-collapse-background:#424242;--color-nav-dark-hierarchy-collapse-borders:#666;--color-nav-dark-hierarchy-item-borders:#424242;--color-nav-dark-keyline:rgba(66,66,66,0.95);--color-nav-dark-link-color:#fff;--color-nav-dark-link-color-hover:#09f;--color-nav-dark-outlines:#575757;--color-nav-dark-rule:#575757;--color-nav-dark-solid-background:#000;--color-nav-dark-sticking-expanded-keyline:rgba(66,66,66,0.7);--color-nav-dark-stuck:rgba(42,42,42,0.9);--color-nav-dark-uiblur-expanded:rgba(42,42,42,0.9);--color-nav-dark-uiblur-stuck:rgba(42,42,42,0.7);--color-nav-dark-root-subhead:#fff;--color-runtime-preview-background:var(--color-fill-tertiary);--color-runtime-preview-disabled-text:hsla(0,0%,40%,0.6);--color-runtime-preview-text:var(--color-figure-gray-secondary);--color-secondary-label:var(--color-figure-gray-secondary);--color-step-background:var(--color-fill-secondary);--color-step-caption:var(--color-figure-gray-secondary);--color-step-focused:var(--color-figure-light-gray);--color-step-text:var(--color-figure-gray-secondary);--color-svg-icon:#666;--color-syntax-attributes:#947100;--color-syntax-characters:#272ad8;--color-syntax-comments:#707f8c;--color-syntax-documentation-markup:#506375;--color-syntax-documentation-markup-keywords:#506375;--color-syntax-heading:#ba2da2;--color-syntax-keywords:#ad3da4;--color-syntax-marks:#000;--color-syntax-numbers:#272ad8;--color-syntax-other-class-names:#703daa;--color-syntax-other-constants:#4b21b0;--color-syntax-other-declarations:#047cb0;--color-syntax-other-function-and-method-names:#4b21b0;--color-syntax-other-instance-variables-and-globals:#703daa;--color-syntax-other-preprocessor-macros:#78492a;--color-syntax-other-type-names:#703daa;--color-syntax-param-internal-name:#404040;--color-syntax-plain-text:#000;--color-syntax-preprocessor-statements:#78492a;--color-syntax-project-class-names:#3e8087;--color-syntax-project-constants:#2d6469;--color-syntax-project-function-and-method-names:#2d6469;--color-syntax-project-instance-variables-and-globals:#3e8087;--color-syntax-project-preprocessor-macros:#78492a;--color-syntax-project-type-names:#3e8087;--color-syntax-strings:#d12f1b;--color-syntax-type-declarations:#03638c;--color-syntax-urls:#1337ff;--color-tabnav-item-border-color:var(--color-fill-gray);--color-text:var(--color-figure-gray);--color-text-background:var(--color-fill);--color-tutorial-assessments-background:var(--color-fill-secondary);--color-tutorial-background:var(--color-fill);--color-tutorial-navbar-dropdown-background:var(--color-fill);--color-tutorial-navbar-dropdown-border:var(--color-fill-gray);--color-tutorial-quiz-border-active:var(--color-figure-blue);--color-tutorials-overview-background:#161616;--color-tutorials-overview-content:#fff;--color-tutorials-overview-content-alt:#fff;--color-tutorials-overview-eyebrow:#ccc;--color-tutorials-overview-icon:#b0b0b0;--color-tutorials-overview-link:#09f;--color-tutorials-overview-navigation-link:#ccc;--color-tutorials-overview-navigation-link-active:#fff;--color-tutorials-overview-navigation-link-hover:#fff;--color-tutorial-hero-text:#fff;--color-tutorial-hero-background:#000}@media screen{body[data-color-scheme=dark]{--color-fill:#000;--color-fill-secondary:#161616;--color-fill-tertiary:#2a2a2a;--color-fill-blue:#06f;--color-fill-gray:#575757;--color-fill-gray-secondary:#222;--color-fill-gray-tertiary:#424242;--color-fill-green-secondary:#030;--color-fill-orange-secondary:#472400;--color-fill-red-secondary:#300;--color-figure-blue:#09f;--color-figure-gray:#fff;--color-figure-gray-secondary:#ccc;--color-figure-gray-secondary-alt:#b0b0b0;--color-figure-gray-tertiary:#b0b0b0;--color-figure-green:#090;--color-figure-light-gray:#b0b0b0;--color-figure-orange:#f60;--color-figure-red:#f33;--color-tutorials-teal:#fff;--color-article-body-background:#111;--color-button-background-active:#06f;--color-code-line-highlight:rgba(0,153,255,0.08);--color-dropdown-background:var(--color-dropdown-dark-background);--color-dropdown-border:var(--color-dropdown-dark-border);--color-dropdown-option-text:var(--color-dropdown-dark-option-text);--color-dropdown-text:var(--color-dropdown-dark-text);--color-nav-color:var(--color-nav-dark-color);--color-nav-current-link:var(--color-nav-dark-current-link);--color-nav-expanded:var(--color-nav-dark-expanded);--color-nav-hierarchy-collapse-background:var(--color-nav-dark-hierarchy-collapse-background);--color-nav-hierarchy-collapse-borders:var(--color-nav-dark-hierarchy-collapse-borders);--color-nav-hierarchy-item-borders:var(--color-nav-dark-hierarchy-item-borders);--color-nav-keyline:var(--color-nav-dark-keyline);--color-nav-link-color:var(--color-nav-dark-link-color);--color-nav-link-color-hover:var(--color-nav-dark-link-color-hover);--color-nav-outlines:var(--color-nav-dark-outlines);--color-nav-rule:var(--color-nav-dark-rule);--color-nav-solid-background:var(--color-nav-dark-solid-background);--color-nav-sticking-expanded-keyline:var(--color-nav-dark-sticking-expanded-keyline);--color-nav-stuck:var(--color-nav-dark-stuck);--color-nav-uiblur-expanded:var(--color-nav-dark-uiblur-expanded);--color-nav-uiblur-stuck:var(--color-nav-dark-uiblur-stuck);--color-runtime-preview-disabled-text:hsla(0,0%,80%,0.6);--color-syntax-attributes:#cc9768;--color-syntax-characters:#d9c97c;--color-syntax-comments:#7f8c98;--color-syntax-documentation-markup:#7f8c98;--color-syntax-documentation-markup-keywords:#a3b1bf;--color-syntax-keywords:#ff7ab2;--color-syntax-marks:#fff;--color-syntax-numbers:#d9c97c;--color-syntax-other-class-names:#dabaff;--color-syntax-other-constants:#a7ebdd;--color-syntax-other-declarations:#4eb0cc;--color-syntax-other-function-and-method-names:#b281eb;--color-syntax-other-instance-variables-and-globals:#b281eb;--color-syntax-other-preprocessor-macros:#ffa14f;--color-syntax-other-type-names:#dabaff;--color-syntax-param-internal-name:#bfbfbf;--color-syntax-plain-text:#fff;--color-syntax-preprocessor-statements:#ffa14f;--color-syntax-project-class-names:#acf2e4;--color-syntax-project-constants:#78c2b3;--color-syntax-project-function-and-method-names:#78c2b3;--color-syntax-project-instance-variables-and-globals:#78c2b3;--color-syntax-project-preprocessor-macros:#ffa14f;--color-syntax-project-type-names:#acf2e4;--color-syntax-strings:#ff8170;--color-syntax-type-declarations:#6bdfff;--color-syntax-urls:#69f;--color-tutorial-background:var(--color-fill-tertiary)}}@media screen and (prefers-color-scheme:dark){body[data-color-scheme=auto]{--color-fill:#000;--color-fill-secondary:#161616;--color-fill-tertiary:#2a2a2a;--color-fill-blue:#06f;--color-fill-gray:#575757;--color-fill-gray-secondary:#222;--color-fill-gray-tertiary:#424242;--color-fill-green-secondary:#030;--color-fill-orange-secondary:#472400;--color-fill-red-secondary:#300;--color-figure-blue:#09f;--color-figure-gray:#fff;--color-figure-gray-secondary:#ccc;--color-figure-gray-secondary-alt:#b0b0b0;--color-figure-gray-tertiary:#b0b0b0;--color-figure-green:#090;--color-figure-light-gray:#b0b0b0;--color-figure-orange:#f60;--color-figure-red:#f33;--color-tutorials-teal:#fff;--color-article-body-background:#111;--color-button-background-active:#06f;--color-code-line-highlight:rgba(0,153,255,0.08);--color-dropdown-background:var(--color-dropdown-dark-background);--color-dropdown-border:var(--color-dropdown-dark-border);--color-dropdown-option-text:var(--color-dropdown-dark-option-text);--color-dropdown-text:var(--color-dropdown-dark-text);--color-nav-color:var(--color-nav-dark-color);--color-nav-current-link:var(--color-nav-dark-current-link);--color-nav-expanded:var(--color-nav-dark-expanded);--color-nav-hierarchy-collapse-background:var(--color-nav-dark-hierarchy-collapse-background);--color-nav-hierarchy-collapse-borders:var(--color-nav-dark-hierarchy-collapse-borders);--color-nav-hierarchy-item-borders:var(--color-nav-dark-hierarchy-item-borders);--color-nav-keyline:var(--color-nav-dark-keyline);--color-nav-link-color:var(--color-nav-dark-link-color);--color-nav-link-color-hover:var(--color-nav-dark-link-color-hover);--color-nav-outlines:var(--color-nav-dark-outlines);--color-nav-rule:var(--color-nav-dark-rule);--color-nav-solid-background:var(--color-nav-dark-solid-background);--color-nav-sticking-expanded-keyline:var(--color-nav-dark-sticking-expanded-keyline);--color-nav-stuck:var(--color-nav-dark-stuck);--color-nav-uiblur-expanded:var(--color-nav-dark-uiblur-expanded);--color-nav-uiblur-stuck:var(--color-nav-dark-uiblur-stuck);--color-runtime-preview-disabled-text:hsla(0,0%,80%,0.6);--color-syntax-attributes:#cc9768;--color-syntax-characters:#d9c97c;--color-syntax-comments:#7f8c98;--color-syntax-documentation-markup:#7f8c98;--color-syntax-documentation-markup-keywords:#a3b1bf;--color-syntax-keywords:#ff7ab2;--color-syntax-marks:#fff;--color-syntax-numbers:#d9c97c;--color-syntax-other-class-names:#dabaff;--color-syntax-other-constants:#a7ebdd;--color-syntax-other-declarations:#4eb0cc;--color-syntax-other-function-and-method-names:#b281eb;--color-syntax-other-instance-variables-and-globals:#b281eb;--color-syntax-other-preprocessor-macros:#ffa14f;--color-syntax-other-type-names:#dabaff;--color-syntax-param-internal-name:#bfbfbf;--color-syntax-plain-text:#fff;--color-syntax-preprocessor-statements:#ffa14f;--color-syntax-project-class-names:#acf2e4;--color-syntax-project-constants:#78c2b3;--color-syntax-project-function-and-method-names:#78c2b3;--color-syntax-project-instance-variables-and-globals:#78c2b3;--color-syntax-project-preprocessor-macros:#ffa14f;--color-syntax-project-type-names:#acf2e4;--color-syntax-strings:#ff8170;--color-syntax-type-declarations:#6bdfff;--color-syntax-urls:#69f;--color-tutorial-background:var(--color-fill-tertiary)}}#main{outline-style:none}[data-v-bf0cd418] :focus:not(input):not(textarea):not(select){outline:none}.fromkeyboard[data-v-bf0cd418] :focus:not(input):not(textarea):not(select){outline:4px solid var(--color-focus-color);outline-offset:1px}#app[data-v-bf0cd418]{display:grid;grid-template-rows:auto 1fr auto;min-height:100%}#app[data-v-bf0cd418]>*{min-width:0}#app.hascustomheader[data-v-bf0cd418]{grid-template-rows:auto auto 1fr auto}.container[data-v-790053de]{margin-left:auto;margin-right:auto;width:980px;outline-style:none;margin-top:92px;margin-bottom:140px}@media only screen and (max-width:1068px){.container[data-v-790053de]{width:692px}}@media only screen and (max-width:735px){.container[data-v-790053de]{width:87.5%}}.error-content[data-v-790053de]{box-sizing:border-box;width:502px;margin-left:auto;margin-right:auto;margin-bottom:54px}@media only screen and (max-width:1068px){.error-content[data-v-790053de]{width:420px;margin-bottom:45px}}@media only screen and (max-width:735px){.error-content[data-v-790053de]{max-width:330px;width:auto;margin-bottom:35px}}.title[data-v-790053de]{text-align:center;font-size:2.82353rem;line-height:1.08333;font-weight:400;letter-spacing:-.003em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){.title[data-v-790053de]{font-size:2.35294rem;line-height:1.1;font-weight:400;letter-spacing:0;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){.title[data-v-790053de]{font-size:1.88235rem;line-height:1.125;font-weight:400;letter-spacing:.013em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}} \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/css/topic.fe88ced3.css b/Sources/Mockingbird.docc/Renderer/css/topic.fe88ced3.css deleted file mode 100644 index 79b896db..00000000 --- a/Sources/Mockingbird.docc/Renderer/css/topic.fe88ced3.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */.nav-title-content[data-v-60ea3af8]{max-width:100%}.title[data-v-60ea3af8]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:inline-block;vertical-align:top;max-width:296px}@media only screen and (max-width:1023px){.title[data-v-60ea3af8]{max-width:205px}}@media only screen and (max-width:767px){.title[data-v-60ea3af8]{flex-basis:fill;display:initial;vertical-align:initial;max-width:none}}.subhead[data-v-60ea3af8]{color:var(--color-nav-root-subhead)}.theme-dark .subhead[data-v-60ea3af8]{color:var(--color-nav-dark-root-subhead)}.nav-menu-item[data-v-f44c239a]{margin-left:1.41176rem;list-style:none;min-width:0}.nav--in-breakpoint-range .nav-menu-item[data-v-f44c239a]{margin-left:0;width:100%;height:2.47059rem}.nav--in-breakpoint-range .nav-menu-item[data-v-f44c239a]:first-child .nav-menu-link{border-top:0}.nav--in-breakpoint-range .nav-menu-item--animated[data-v-f44c239a]{opacity:0;transform:none;transition:.5s ease;transition-property:transform,opacity}.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="0"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="1"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="2"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="3"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="4"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="5"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="6"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]{opacity:1;transform:translateZ(0)}.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:first-child,.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(2),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(3),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(4),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(5),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(6),.nav--is-open.nav--in-breakpoint-range [data-previous-menu-children-count="7"] .nav-menu-item--animated[data-v-f44c239a]:nth-child(7){transition-delay:0s}.mobile-dropdown[data-v-3d58f504]{box-sizing:border-box}.nav--in-breakpoint-range .mobile-dropdown[data-v-3d58f504]{padding-left:.23529rem;padding-right:.23529rem}.mobile-dropdown ul[data-v-3d58f504]{list-style:none}.mobile-dropdown .option[data-v-3d58f504]{cursor:pointer;font-size:.70588rem;padding:.5rem 0;display:block;text-decoration:none;color:inherit}.mobile-dropdown .option[data-v-3d58f504]:focus{outline-offset:0}.mobile-dropdown .option.depth1[data-v-3d58f504]{padding-left:.47059rem}.active[data-v-3d58f504],.tutorial.router-link-active[data-v-3d58f504]{font-weight:600}.active[data-v-3d58f504]:focus,.tutorial.router-link-active[data-v-3d58f504]:focus{outline:none}.chapter-list[data-v-3d58f504]:not(:first-child){margin-top:1rem}.chapter-name[data-v-3d58f504],.tutorial[data-v-3d58f504]{padding:.5rem 0;font-size:1rem;line-height:1.47059;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.section-list[data-v-3d58f504],.tutorial-list[data-v-3d58f504]{padding:0 .58824rem}.chapter-list:last-child .tutorial-list[data-v-3d58f504]:last-child{padding-bottom:10em}.chapter-list[data-v-3d58f504]{display:inline-block}.form-element[data-v-998803d8]{position:relative}.form-dropdown[data-v-998803d8]{font-size:1rem;line-height:1.23529;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;display:block;box-sizing:border-box;width:100%;height:3.3em;color:var(--color-dropdown-text);padding:1.11765rem 2.35294rem 0 .94118rem;text-align:left;border:1px solid var(--color-dropdown-border);border-radius:4px;background-clip:padding-box;margin-bottom:.82353rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;min-height:32px}.form-dropdown[data-v-998803d8]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.form-dropdown.no-eyebrow[data-v-998803d8]{padding-top:0}.form-dropdown[data-v-998803d8]:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--color-dropdown-text)}.form-dropdown[data-v-998803d8]::-ms-expand{opacity:0}.form-dropdown~.form-icon[data-v-998803d8]{position:absolute;display:block;pointer-events:none;fill:var(--color-figure-gray-tertiary);right:14px;width:13px;height:auto;top:50%;transform:translateY(-50%)}.is-open .form-dropdown~.form-icon[data-v-998803d8]{transform:translateY(-50%) scale(-1)}@media only screen and (max-width:735px){.form-dropdown~.form-icon[data-v-998803d8]{right:14px}}.form-dropdown~.form-label[data-v-998803d8]{font-size:.70588rem;line-height:1.75;font-weight:400;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;position:absolute;top:.47059rem;left:17px;color:var(--color-figure-gray-secondary);pointer-events:none;padding:0;z-index:1}.form-dropdown[data-v-998803d8] option{color:var(--color-dropdown-text)}.form-dropdown-selectnone[data-v-998803d8]{color:transparent}.form-dropdown-selectnone~.form-label[data-v-998803d8]{font-size:1rem;line-height:1.23529;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;top:19px;left:17px;color:var(--color-figure-gray-tertiary)}.form-dropdown-selectnone[data-v-998803d8]:-moz-focusring{text-shadow:none}.form-dropdown-selectnone[data-v-998803d8]::-ms-value{display:none}.theme-dark .form-dropdown[data-v-998803d8]{color:var(--color-dropdown-dark-text);background-color:var(--color-dropdown-dark-background);border-color:var(--color-dropdown-dark-border)}.theme-dark .form-dropdown~.form-label[data-v-998803d8]{color:#ccc}.theme-dark .form-dropdown[data-v-998803d8]:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--color-dropdown-dark-text)}.theme-dark .form-dropdown.form-dropdown-selectnone[data-v-998803d8]{color:transparent}.theme-dark .form-dropdown.form-dropdown-selectnone[data-v-998803d8]:-moz-focusring{text-shadow:none}.theme-dark .form-dropdown-selectnone~.form-label[data-v-998803d8]{color:#b0b0b0}.dropdown-small[data-v-12dd746a]{height:30px;display:flex;align-items:center;position:relative;background:var(--color-fill)}.dropdown-small .form-dropdown-toggle[data-v-12dd746a]{line-height:1.5;font-size:12px;padding-top:0;padding-bottom:0;padding-left:20px;min-height:unset;height:30px;display:flex;align-items:center}.dropdown-small .form-dropdown-toggle[data-v-12dd746a]:focus{box-shadow:none;border-color:var(--color-dropdown-border)}.fromkeyboard .dropdown-small .form-dropdown-toggle[data-v-12dd746a]:focus{box-shadow:0 0 0 2px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.form-dropdown-toggle[data-v-12dd746a]{margin:0}.is-open .form-dropdown-toggle[data-v-12dd746a]{border-radius:4px 4px 0 0;border-bottom:none;padding-bottom:1px}.fromkeyboard .is-open .form-dropdown-toggle[data-v-12dd746a]{box-shadow:1px -1px 0 1px var(--color-focus-color),-1px -1px 0 1px var(--color-focus-color);border-color:var(--color-focus-border-color)}.form-dropdown-title[data-v-12dd746a]{margin:0;padding:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dropdown-custom[data-v-12dd746a]{border-radius:4px}.dropdown-custom.is-open[data-v-12dd746a]{border-radius:4px 4px 0 0}.dropdown-custom[data-v-12dd746a] .form-dropdown-content{background:var(--color-fill);position:absolute;right:0;left:0;top:100%;border-bottom-left-radius:4px;border-bottom-right-radius:4px;border:1px solid var(--color-dropdown-border);border-top:none;display:none;overflow-y:auto}.dropdown-custom[data-v-12dd746a] .form-dropdown-content.is-open{display:block}.fromkeyboard .dropdown-custom[data-v-12dd746a] .form-dropdown-content.is-open{box-shadow:1px 1px 0 1px var(--color-focus-color),-1px 1px 0 1px var(--color-focus-color);border-color:var(--color-focus-border-color);border-top-color:transparent}.nav .dropdown-custom[data-v-12dd746a] .form-dropdown-content{max-height:calc(100vh - 116px - 3.05882rem)}.nav--is-sticking.nav .dropdown-custom[data-v-12dd746a] .form-dropdown-content{max-height:calc(100vh - 3.05882rem - 72px)}.dropdown-custom[data-v-12dd746a] .options{list-style:none;margin:0;padding:0 0 20px}.dropdown-custom[data-v-12dd746a] .option{cursor:pointer;padding:5px 20px;font-size:12px;line-height:20px;outline:none}.dropdown-custom[data-v-12dd746a] .option:hover{background-color:var(--color-fill-tertiary)}.dropdown-custom[data-v-12dd746a] .option.option-active{font-weight:600}.fromkeyboard .dropdown-custom[data-v-12dd746a] .option:hover{background-color:transparent}.fromkeyboard .dropdown-custom[data-v-12dd746a] .option:focus{background-color:var(--color-fill-tertiary);outline:none}.tutorial-dropdown[data-v-4a151342]{grid-column:3}.section-tracker[data-v-4a151342]{font-size:.70588rem;line-height:1.33333;font-weight:400;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--color-figure-gray-secondary);margin-left:15px}.tutorial-dropdown[data-v-78dc103f]{grid-column:1/2}.tutorial-dropdown .options[data-v-78dc103f]{padding-top:1rem;padding-bottom:0}.tutorial-dropdown .option[data-v-78dc103f]{padding:5px 20px 5px 30px}.chapter-list[data-v-78dc103f]{padding-bottom:20px}.chapter-name[data-v-78dc103f]{margin:0 20px 5px 20px;line-height:normal;color:var(--color-figure-gray-secondary)}.chevron-icon[data-v-7138b5bf]{padding:0;color:var(--color-nav-outlines);grid-column:2;height:20px;width:20px;margin:0 4px}@media only screen and (min-width:768px){.nav[data-v-7138b5bf] .nav-content{display:grid;grid-template-columns:auto auto 3fr;align-items:center}.nav[data-v-7138b5bf] .nav-menu-tray{width:auto}.nav[data-v-7138b5bf] .nav-menu{padding:0;grid-column:3/5}.nav[data-v-7138b5bf] .nav-menu-item{margin:0}}.dropdown-container[data-v-7138b5bf]{height:3.05882rem;display:grid;grid-template-columns:minmax(230px,285px) auto minmax(230px,1fr);align-items:center}@media only screen and (max-width:1023px){.dropdown-container[data-v-7138b5bf]{grid-template-columns:minmax(173px,216px) auto minmax(173px,1fr)}}.separator[data-v-7138b5bf]{height:20px;border-right:1px solid;border-color:var(--color-nav-outlines);margin:0 20px;grid-column:2}.mobile-dropdown-container[data-v-7138b5bf],.nav--in-breakpoint-range.nav .dropdown-container[data-v-7138b5bf],.nav--in-breakpoint-range.nav .separator[data-v-7138b5bf]{display:none}.nav--in-breakpoint-range.nav .mobile-dropdown-container[data-v-7138b5bf]{display:block}.nav[data-v-7138b5bf] .nav-title{grid-column:1;width:90%;padding-top:0}.primary-dropdown[data-v-7138b5bf],.secondary-dropdown[data-v-7138b5bf]{background:var(--color-tutorial-navbar-dropdown-background);border-color:var(--color-tutorial-navbar-dropdown-border)}.primary-dropdown[data-v-7138b5bf] .form-dropdown,.primary-dropdown[data-v-7138b5bf] .form-dropdown:focus,.secondary-dropdown[data-v-7138b5bf] .form-dropdown,.secondary-dropdown[data-v-7138b5bf] .form-dropdown:focus{border-color:var(--color-tutorial-navbar-dropdown-border)}.primary-dropdown[data-v-7138b5bf] .options,.secondary-dropdown[data-v-7138b5bf] .options{background:var(--color-tutorial-navbar-dropdown-background);border-color:var(--color-tutorial-navbar-dropdown-border)}.replay-button[data-v-7335dbb2]{display:flex;align-items:center;justify-content:center;cursor:pointer;visibility:hidden;margin-top:.5rem;-webkit-tap-highlight-color:transparent}.replay-button.visible[data-v-7335dbb2]{visibility:visible}.replay-button svg.replay-icon[data-v-7335dbb2]{height:12px;width:12px;margin-left:.3em}[data-v-1b5cc854] img,[data-v-1b5cc854] video{display:block;margin-left:auto;margin-right:auto;-o-object-fit:contain;object-fit:contain;max-width:100%}[data-v-3cfe1c35] .code-listing+*,[data-v-3cfe1c35] aside+*,[data-v-3cfe1c35] h2+*,[data-v-3cfe1c35] h3+*,[data-v-3cfe1c35] ol+*,[data-v-3cfe1c35] p+*,[data-v-3cfe1c35] ul+*{margin-top:20px}[data-v-3cfe1c35] ol ol,[data-v-3cfe1c35] ol ul,[data-v-3cfe1c35] ul ol,[data-v-3cfe1c35] ul ul{margin-top:0}[data-v-3cfe1c35] h2{font-size:1.88235rem;line-height:1.25;font-weight:400;letter-spacing:.004em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){[data-v-3cfe1c35] h2{font-size:1.64706rem;line-height:1.28571;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){[data-v-3cfe1c35] h2{font-size:1.41176rem;line-height:1.33333;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}[data-v-3cfe1c35] h3{font-size:1.41176rem;line-height:1.16667;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){[data-v-3cfe1c35] h3{font-size:1.23529rem;line-height:1.19048;font-weight:400;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}[data-v-3cfe1c35] .code-listing{background:var(--color-code-background);border-color:var(--colors-grid,var(--color-grid));border-style:solid;border-width:1px}[data-v-3cfe1c35] .code-listing pre{font-size:.70588rem;line-height:1.83333;font-weight:400;letter-spacing:-.01em;font-family:Menlo,monospace;padding:20px 0}.columns[data-v-30edf911]{display:grid;grid-template-rows:repeat(2,auto)}.columns.cols-2[data-v-30edf911]{gap:20px 8.33333%;grid-template-columns:repeat(2,1fr)}.columns.cols-3[data-v-30edf911]{gap:20px 4.16667%;grid-template-columns:repeat(3,1fr)}.asset[data-v-30edf911]{align-self:end;grid-row:1}.content[data-v-30edf911]{grid-row:2}@media only screen and (max-width:735px){.columns.cols-2[data-v-30edf911],.columns.cols-3[data-v-30edf911]{grid-template-columns:unset}.asset[data-v-30edf911],.content[data-v-30edf911]{grid-row:auto}}.content-and-media[data-v-3fa44f9e]{display:flex}.content-and-media.media-leading[data-v-3fa44f9e]{flex-direction:row-reverse}.content-and-media.media-trailing[data-v-3fa44f9e]{flex-direction:row}@media only screen and (min-width:736px){.content-and-media[data-v-3fa44f9e]{align-items:center;justify-content:center}}.content[data-v-3fa44f9e]{width:62.5%}.asset[data-v-3fa44f9e]{width:29.16667%}.media-leading .asset[data-v-3fa44f9e]{margin-right:8.33333%}.media-trailing .asset[data-v-3fa44f9e]{margin-left:8.33333%}@media only screen and (max-width:735px){.content-and-media.media-leading[data-v-3fa44f9e],.content-and-media.media-trailing[data-v-3fa44f9e]{flex-direction:column}.asset[data-v-3fa44f9e],.content[data-v-3fa44f9e]{width:100%}.media-leading .asset[data-v-3fa44f9e],.media-trailing .asset[data-v-3fa44f9e]{margin:20px 0 0 0}}.group[id][data-v-1f2be54b]{margin-top:20px;padding-top:20px}[data-v-1f2be54b] img,[data-v-1f2be54b] video{display:block;margin:0 auto;max-width:100%}.layout+[data-v-4d5a806e]{margin-top:40px}@media only screen and (max-width:735px){.layout[data-v-4d5a806e]:first-child>:not(.group[id]){margin-top:40px}}.body[data-v-6499e2f2]{background:var(--colors-text-background,var(--color-article-body-background));margin-left:auto;margin-right:auto;width:980px;border-radius:10px;transform:translateY(-120px)}@media only screen and (max-width:1068px){.body[data-v-6499e2f2]{width:692px}}@media only screen and (max-width:735px){.body[data-v-6499e2f2]{width:87.5%;border-radius:0;transform:none}}.body[data-v-6499e2f2]~*{margin-top:-40px}.body-content[data-v-6499e2f2]{padding:40px 8.33333% 80px 8.33333%}@media only screen and (max-width:735px){.body-content[data-v-6499e2f2]{padding:0 0 40px 0}}.call-to-action[data-v-2016b288]{padding:65px 0;background:var(--color-call-to-action-background)}.theme-dark .call-to-action[data-v-2016b288]{--color-call-to-action-background:#424242}.row[data-v-2016b288]{margin-left:auto;margin-right:auto;width:980px;display:flex;align-items:center}@media only screen and (max-width:1068px){.row[data-v-2016b288]{width:692px}}@media only screen and (max-width:735px){.row[data-v-2016b288]{width:87.5%}}[data-v-2016b288] img,[data-v-2016b288] video{max-height:560px}h2[data-v-2016b288]{font-size:1.88235rem;line-height:1.25;font-weight:400;letter-spacing:.004em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){h2[data-v-2016b288]{font-size:1.64706rem;line-height:1.28571;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){h2[data-v-2016b288]{font-size:1.41176rem;line-height:1.33333;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.label[data-v-2016b288]{display:block;font-size:1.23529rem;line-height:1.19048;font-weight:400;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;margin-bottom:.4em;color:var(--color-eyebrow)}@media only screen and (max-width:735px){.label[data-v-2016b288]{font-size:1.11765rem;line-height:1.21053;font-weight:400;letter-spacing:.012em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.content[data-v-2016b288]{margin-bottom:1.5rem}.right-column[data-v-2016b288]{margin-left:auto}@media only screen and (max-width:735px){.row[data-v-2016b288]{display:block}.col+.col[data-v-2016b288]{margin-top:40px}}@media only screen and (max-width:735px){.call-to-action[data-v-426a965c]{margin-top:0}}.headline[data-v-1898f592]{margin-bottom:.8em}.heading[data-v-1898f592]{font-size:2.82353rem;line-height:1.08333;font-weight:400;letter-spacing:-.003em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--color-header-text)}@media only screen and (max-width:1068px){.heading[data-v-1898f592]{font-size:2.35294rem;line-height:1.1;font-weight:400;letter-spacing:0;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){.heading[data-v-1898f592]{font-size:1.88235rem;line-height:1.125;font-weight:400;letter-spacing:.013em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.dark .heading[data-v-1898f592]{color:#fff}.eyebrow[data-v-1898f592]{font-size:1.41176rem;line-height:1.16667;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;display:block;margin-bottom:.4em;color:var(--color-eyebrow)}@media only screen and (max-width:1068px){.eyebrow[data-v-1898f592]{font-size:1.23529rem;line-height:1.19048;font-weight:400;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.generic-modal[data-v-0e383dfa]{position:fixed;top:0;left:0;right:0;bottom:0;margin:0;z-index:11000;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;background:none;overflow:auto}.modal-fullscreen[data-v-0e383dfa]{align-items:stretch}.modal-fullscreen .container[data-v-0e383dfa]{margin:0;flex:1;width:100%;height:100%;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.modal-standard[data-v-0e383dfa]{padding:20px}.modal-standard.modal-with-close .container[data-v-0e383dfa]{padding-top:80px}.modal-standard .container[data-v-0e383dfa]{padding:50px;border-radius:4px}@media screen{[data-color-scheme=dark] .modal-standard .container[data-v-0e383dfa]{background:#1d1d1f}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .modal-standard .container[data-v-0e383dfa]{background:#1d1d1f}}@media only screen and (max-width:735px){.modal-standard[data-v-0e383dfa]{padding:0;align-items:stretch}.modal-standard .container[data-v-0e383dfa]{margin:20px 0 0;padding:50px 30px;flex:1;width:100%;border-bottom-left-radius:0;border-bottom-right-radius:0}}.backdrop[data-v-0e383dfa]{overflow:auto;background:rgba(0,0,0,.4);-webkit-overflow-scrolling:touch;width:100%;height:100%;position:fixed}.container[data-v-0e383dfa]{margin-left:auto;margin-right:auto;width:980px;background:var(--colors-generic-modal-background,var(--color-generic-modal-background));z-index:1;position:relative;overflow:auto;max-width:100%}@media only screen and (max-width:1068px){.container[data-v-0e383dfa]{width:692px}}@media only screen and (max-width:735px){.container[data-v-0e383dfa]{width:87.5%}}.close[data-v-0e383dfa]{position:absolute;z-index:9999;top:22px;left:22px;width:30px;height:30px;color:#666;cursor:pointer;background:none;border:0;display:flex;align-items:center}.close .close-icon[data-v-0e383dfa]{fill:currentColor;width:100%;height:100%}.theme-dark .container[data-v-0e383dfa]{background:#000}.theme-dark .container .close[data-v-0e383dfa]{color:#b0b0b0}.theme-code .container[data-v-0e383dfa]{background-color:var(--background,var(--color-code-background))}.metadata[data-v-2fa6f125]{display:flex}.item[data-v-2fa6f125]{font-size:.70588rem;line-height:1.33333;font-weight:600;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;border-right:1px solid #fff;padding:0 27.5px}@media only screen and (max-width:735px){.item[data-v-2fa6f125]{font-size:.64706rem;line-height:1.63636;font-weight:600;letter-spacing:-.008em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:0 8px}}.item[data-v-2fa6f125]:first-of-type{padding-left:0}.item[data-v-2fa6f125]:last-of-type{border:none}@media only screen and (max-width:735px){.item[data-v-2fa6f125]:last-of-type{padding-right:0}}.content[data-v-2fa6f125]{color:#fff}.icon[data-v-2fa6f125]{font-size:2.82353rem;line-height:1.08333;font-weight:400;letter-spacing:-.003em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){.icon[data-v-2fa6f125]{font-size:2.35294rem;line-height:1.1;font-weight:400;letter-spacing:0;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){.icon[data-v-2fa6f125]{font-size:1.88235rem;line-height:1.125;font-weight:400;letter-spacing:.013em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.small-icon[data-v-2fa6f125]{width:1em;height:1em;margin-left:.2rem}.small-icon.xcode-icon[data-v-2fa6f125]{width:.8em;height:.8em}.content-link[data-v-2fa6f125]{display:flex;align-items:center}a[data-v-2fa6f125]{color:var(--colors-link,var(--color-tutorials-overview-link))}.duration[data-v-2fa6f125]{display:flex;align-items:baseline;font-size:2.35294rem;line-height:1;font-weight:400;letter-spacing:0;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;line-height:1.8rem}@media only screen and (max-width:735px){.duration[data-v-2fa6f125]{font-size:1.64706rem;line-height:1;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;line-height:1.3rem}}.minutes[data-v-2fa6f125]{display:inline-block;font-size:1.64706rem;line-height:1;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;line-height:1.3rem}@media only screen and (max-width:735px){.minutes[data-v-2fa6f125]{font-size:1rem;line-height:1.23529;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;line-height:.8rem}}.item-large-icon[data-v-2fa6f125]{height:2.3rem;max-width:100%}@media only screen and (max-width:735px){.item-large-icon[data-v-2fa6f125]{height:1.5rem;max-width:100%}}.bottom[data-v-2fa6f125]{margin-top:13px}@media only screen and (max-width:735px){.bottom[data-v-2fa6f125]{margin-top:8px}}.hero[data-v-cb87b2d0]{color:var(--color-tutorial-hero-text);position:relative}.bg[data-v-cb87b2d0],.hero[data-v-cb87b2d0]{background-color:var(--color-tutorial-hero-background)}.bg[data-v-cb87b2d0]{background-position:top;background-repeat:no-repeat;background-size:cover;content:"";height:100%;left:0;opacity:.3;position:absolute;top:0;width:100%}.row[data-v-cb87b2d0]{margin-left:auto;margin-right:auto;width:980px;padding:80px 0}@media only screen and (max-width:1068px){.row[data-v-cb87b2d0]{width:692px}}@media only screen and (max-width:735px){.row[data-v-cb87b2d0]{width:87.5%}}.col[data-v-cb87b2d0]{z-index:1}[data-v-cb87b2d0] .eyebrow{font-size:1.41176rem;line-height:1.16667;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--color-hero-eyebrow)}@media only screen and (max-width:1068px){[data-v-cb87b2d0] .eyebrow{font-size:1.23529rem;line-height:1.19048;font-weight:400;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.headline[data-v-cb87b2d0]{font-size:2.82353rem;line-height:1.08333;font-weight:400;letter-spacing:-.003em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;margin-bottom:2rem}@media only screen and (max-width:1068px){.headline[data-v-cb87b2d0]{font-size:2.35294rem;line-height:1.1;font-weight:400;letter-spacing:0;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){.headline[data-v-cb87b2d0]{font-size:1.88235rem;line-height:1.125;font-weight:400;letter-spacing:.013em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.intro[data-v-cb87b2d0]{font-size:1.23529rem;line-height:1.38095;font-weight:400;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:735px){.intro[data-v-cb87b2d0]{font-size:1.11765rem;line-height:1.42105;font-weight:400;letter-spacing:.012em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.content+p[data-v-cb87b2d0]{margin-top:.8em}@media only screen and (max-width:735px){.content+p[data-v-cb87b2d0]{margin-top:8px}}.call-to-action[data-v-cb87b2d0]{display:flex;align-items:center}.call-to-action .cta-icon[data-v-cb87b2d0]{margin-left:.4rem;width:1em;height:1em}.metadata[data-v-cb87b2d0]{margin-top:2rem}.video-asset[data-v-cb87b2d0]{display:grid;height:100vh;margin:0;place-items:center center}.video-asset[data-v-cb87b2d0] video{max-width:1280px;min-width:320px;width:100%}@media only screen and (max-width:735px){.headline[data-v-cb87b2d0]{margin-bottom:19px}}.tutorial-hero[data-v-35a9482f]{margin-bottom:80px}@media only screen and (max-width:735px){.tutorial-hero[data-v-35a9482f]{margin-bottom:0}}.title[data-v-8ec95972]{font-size:.70588rem;line-height:1.33333;letter-spacing:-.01em;color:var(--colors-secondary-label,var(--color-secondary-label))}.title[data-v-4d37a428],.title[data-v-8ec95972]{font-weight:400;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.title[data-v-4d37a428]{font-size:1.11765rem;line-height:1.21053;letter-spacing:.012em;color:var(--colors-header-text,var(--color-header-text));margin:25px 0}.question-content[data-v-4d37a428] code{font-size:.76471rem;line-height:1.84615;font-weight:400;letter-spacing:-.013em;font-family:Menlo,monospace}.choices[data-v-4d37a428]{display:flex;flex-direction:column;padding:0;list-style:none;margin:25px 0}.choice[data-v-4d37a428]{font-size:.82353rem;line-height:1.42857;font-weight:400;letter-spacing:-.016em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;flex:1;border-radius:4px;margin:8px 0;padding:1.5rem 40px;cursor:pointer;background:var(--colors-text-background,var(--color-text-background));display:flex;flex-direction:column;justify-content:center;border-width:1px;border-style:solid;border-color:var(--colors-grid,var(--color-grid));position:relative}.choice[data-v-4d37a428] img{max-height:23.52941rem}.choice[data-v-4d37a428]:first-of-type{margin-top:0}.choice[data-v-4d37a428] code{font-size:.76471rem;line-height:1.84615;font-weight:400;letter-spacing:-.013em;font-family:Menlo,monospace}.controls[data-v-4d37a428]{text-align:center;margin-bottom:40px}.controls .button-cta[data-v-4d37a428]{margin:.5rem;margin-top:0;padding:.3rem 3rem;min-width:8rem}input[type=radio][data-v-4d37a428]{position:absolute;width:100%;left:0;height:100%;opacity:0;z-index:-1}.active[data-v-4d37a428]{border-color:var(--color-tutorial-quiz-border-active);box-shadow:0 0 0 4px var(--color-focus-color);outline:none}.active [data-v-4d37a428]{color:var(--colors-text,var(--color-text))}.correct[data-v-4d37a428]{background:var(--color-form-valid-background);border-color:var(--color-form-valid)}.correct .choice-icon[data-v-4d37a428]{fill:var(--color-form-valid)}.incorrect[data-v-4d37a428]{background:var(--color-form-error-background);border-color:var(--color-form-error)}.incorrect .choice-icon[data-v-4d37a428]{fill:var(--color-form-error)}.correct[data-v-4d37a428],.incorrect[data-v-4d37a428]{position:relative}.correct .choice-icon[data-v-4d37a428],.incorrect .choice-icon[data-v-4d37a428]{position:absolute;top:11px;left:10px;font-size:20px;width:1.05em}.disabled[data-v-4d37a428]{pointer-events:none}.answer[data-v-4d37a428]{margin:.5rem 1.5rem .5rem 0;font-size:.70588rem;line-height:1.33333;font-weight:400;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.answer[data-v-4d37a428]:last-of-type{margin-bottom:0}[data-v-4d37a428] .question>.code-listing{padding:unset}[data-v-4d37a428] pre{padding:0}[data-v-4d37a428] img{display:block;margin-left:auto;margin-right:auto;max-width:100%}.title[data-v-c1de71de]{font-size:1.88235rem;line-height:1.25;font-weight:400;letter-spacing:.004em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--colors-header-text,var(--color-header-text))}@media only screen and (max-width:1068px){.title[data-v-c1de71de]{font-size:1.64706rem;line-height:1.28571;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){.title[data-v-c1de71de]{font-size:1.41176rem;line-height:1.33333;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.title p[data-v-c1de71de]{color:var(--colors-text,var(--color-text))}.assessments[data-v-c1de71de]{box-sizing:content-box;padding:0 1rem;background:var(--color-tutorial-assessments-background);margin-left:auto;margin-right:auto;width:980px;margin-bottom:80px}@media only screen and (max-width:1068px){.assessments[data-v-c1de71de]{width:692px}}@media only screen and (max-width:735px){.assessments[data-v-c1de71de]{width:87.5%}}.banner[data-v-c1de71de]{padding:40px 0;border-bottom:1px solid;margin-bottom:40px;border-color:var(--colors-grid,var(--color-grid));text-align:center}.success[data-v-c1de71de]{text-align:center;padding-bottom:40px;font-size:1.88235rem;line-height:1.25;font-weight:400;letter-spacing:.004em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--colors-text,var(--color-text))}@media only screen and (max-width:1068px){.success[data-v-c1de71de]{font-size:1.64706rem;line-height:1.28571;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){.success[data-v-c1de71de]{font-size:1.41176rem;line-height:1.33333;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.assessments-wrapper[data-v-c1de71de]{padding-top:80px}.assessments-wrapper[data-v-3c94366b]{padding-bottom:40px;padding-top:0}@media only screen and (max-width:735px){.assessments-wrapper[data-v-3c94366b]{padding-top:80px}}.article[data-v-5f5888a5]{background:var(--colors-article-background,var(--color-article-background))}@media only screen and (max-width:735px){.article[data-v-5f5888a5]{background:var(--colors-text-background,var(--color-article-body-background))}}.intro-container[data-v-54daa228]{margin-bottom:80px}.intro[data-v-54daa228]{display:flex;align-items:center}@media only screen and (max-width:735px){.intro[data-v-54daa228]{padding-bottom:0;flex-direction:column}}.intro.ide .media[data-v-54daa228] img{background-color:var(--colors-text-background,var(--color-text-background))}.col.left[data-v-54daa228]{padding-right:40px}@media only screen and (max-width:1068px){.col.left[data-v-54daa228]{padding-right:28px}}@media only screen and (max-width:735px){.col.left[data-v-54daa228]{margin-left:auto;margin-right:auto;width:980px;padding-right:0}}@media only screen and (max-width:735px) and (max-width:1068px){.col.left[data-v-54daa228]{width:692px}}@media only screen and (max-width:735px) and (max-width:735px){.col.left[data-v-54daa228]{width:87.5%}}.col.right[data-v-54daa228]{padding-left:40px}@media only screen and (max-width:1068px){.col.right[data-v-54daa228]{padding-left:28px}}@media only screen and (max-width:735px){.col.right[data-v-54daa228]{padding-left:0}}.content[data-v-54daa228]{font-size:1rem;line-height:1.47059;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.media[data-v-54daa228] img{width:auto;max-height:560px;min-height:18.82353rem;-o-object-fit:scale-down;object-fit:scale-down}@media only screen and (max-width:735px){.media[data-v-54daa228]{margin:0;margin-top:3rem}.media[data-v-54daa228] img,.media[data-v-54daa228] video{max-height:80vh}}.media[data-v-54daa228] .asset{padding:0 20px}.headline[data-v-54daa228]{color:var(--colors-header-text,var(--color-header-text))}[data-v-54daa228] .eyebrow{font-size:1.23529rem;line-height:1.19048;font-weight:400;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:735px){[data-v-54daa228] .eyebrow{font-size:1.11765rem;line-height:1.21053;font-weight:400;letter-spacing:.012em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}[data-v-54daa228] .eyebrow a{color:inherit}[data-v-54daa228] .heading{font-size:1.88235rem;line-height:1.25;font-weight:400;letter-spacing:.004em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:1068px){[data-v-54daa228] .heading{font-size:1.64706rem;line-height:1.28571;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){[data-v-54daa228] .heading{font-size:1.41176rem;line-height:1.33333;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.expanded-intro[data-v-54daa228]{margin-left:auto;margin-right:auto;width:980px;margin-top:40px}@media only screen and (max-width:1068px){.expanded-intro[data-v-54daa228]{width:692px}}@media only screen and (max-width:735px){.expanded-intro[data-v-54daa228]{width:87.5%}}[data-v-54daa228] .cols-2{gap:20px 16.66667%}[data-v-54daa228] .cols-3 .column{gap:20px 12.5%}.code-preview[data-v-1890a2ba]{position:sticky;overflow-y:auto;-webkit-overflow-scrolling:touch;background-color:var(--background,var(--color-step-background));height:calc(100vh - 3.05882rem)}.code-preview.ide[data-v-1890a2ba]{height:100vh}.code-preview[data-v-1890a2ba] .code-listing{color:var(--text,var(--color-code-plain))}.code-preview[data-v-1890a2ba] pre{font-size:.70588rem;line-height:1.83333;font-weight:400;letter-spacing:-.01em;font-family:Menlo,monospace}.header[data-v-1890a2ba]{font-size:.70588rem;line-height:1.33333;font-weight:400;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;position:relative;display:flex;justify-content:space-between;align-items:center;width:-webkit-fill-available;width:-moz-available;width:stretch;cursor:pointer;font-weight:600;padding:8px 12px;border-radius:4px 4px 0 0;z-index:1;background:var(--color-runtime-preview-background);color:var(--colors-runtime-preview-text,var(--color-runtime-preview-text))}.header[data-v-1890a2ba]:focus{outline-style:none}#app.fromkeyboard .header[data-v-1890a2ba]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.runtime-preview[data-v-1890a2ba]{--color-runtime-preview-shadow:rgba(0,0,0,0.4);position:absolute;top:0;right:0;background:var(--color-runtime-preview-background);border-radius:4px;margin:1rem;margin-left:0;transition:width .2s ease-in,height .2s ease-in}@media screen{[data-color-scheme=dark] .runtime-preview[data-v-1890a2ba]{--color-runtime-preview-shadow:hsla(0,0%,100%,0.4)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .runtime-preview[data-v-1890a2ba]{--color-runtime-preview-shadow:hsla(0,0%,100%,0.4)}}@supports not ((width:-webkit-fill-available) or (width:-moz-available) or (width:stretch)){.runtime-preview[data-v-1890a2ba]{display:flex;flex-direction:column}}.runtime-preview[data-v-1890a2ba]:before{box-shadow:0 0 3px 0 var(--color-runtime-preview-shadow);border-radius:4px;content:"";position:absolute;top:0;right:0;left:0;bottom:0}@media screen{[data-color-scheme=dark] .runtime-preview[data-v-1890a2ba]:before{mix-blend-mode:difference}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .runtime-preview[data-v-1890a2ba]:before{mix-blend-mode:difference}}.runtime-preview-ide[data-v-1890a2ba]{top:0}.runtime-preview-ide .runtime-preview-asset[data-v-1890a2ba] img{background-color:var(--color-runtime-preview-background)}.runtime-preview.collapsed[data-v-1890a2ba]{box-shadow:0 0 3px 0 var(--color-runtime-preview-shadow);width:102px;height:28px}.runtime-preview.collapsed .header[data-v-1890a2ba]{border-radius:4px}.runtime-preview.disabled[data-v-1890a2ba]{box-shadow:0 0 3px 0 transparent}.runtime-preview.disabled .header[data-v-1890a2ba]{color:var(--color-runtime-preview-disabled-text);cursor:auto}.runtime-preview-asset[data-v-1890a2ba]{border-radius:0 0 4px 4px}.runtime-preview-asset[data-v-1890a2ba] img{border-bottom-left-radius:4px;border-bottom-right-radius:4px}.preview-icon[data-v-1890a2ba]{height:.8em;width:.8em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.preview-show[data-v-1890a2ba]{transform:scale(-1)}[data-v-5ad4e037] pre{padding:10px 0}.toggle-preview[data-v-d0709828]{color:var(--color-runtime-preview-disabled-text);display:flex;align-items:center}a[data-v-d0709828]{color:var(--url,var(--color-link))}.toggle-text[data-v-d0709828]{display:flex;align-items:center}svg.toggle-icon[data-v-d0709828]{width:1em;height:1em;margin-left:.5em}.mobile-code-preview[data-v-b130569c]{background-color:var(--background,var(--color-step-background));padding:14px 0}@media only screen and (max-width:735px){.mobile-code-preview[data-v-b130569c]{display:flex;flex-direction:column}}.runtime-preview-modal-content[data-v-b130569c]{padding:45px 60px 0 60px;min-width:200px}.runtime-preview-modal-content[data-v-b130569c] img:not(.file-icon){border-radius:4px;box-shadow:0 0 3px rgba(0,0,0,.4);min-height:320px;max-height:80vh;width:auto;display:block;margin-bottom:1rem}.runtime-preview-modal-content .runtime-preview-label[data-v-b130569c]{font-size:.70588rem;line-height:1.33333;font-weight:400;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--color-runtime-preview-text);display:block;text-align:center;padding:.5em}[data-v-b130569c] .code-listing{color:var(--text,var(--color-code-plain))}[data-v-b130569c] .full-code-listing{padding-top:60px;min-height:calc(100vh - 60px)}[data-v-b130569c] pre{font-size:.70588rem;line-height:1.83333;font-weight:400;letter-spacing:-.01em;font-family:Menlo,monospace}.preview-toggle-container[data-v-b130569c]{align-self:flex-end;margin-right:20px}.step-container[data-v-4abdd121]{margin:0}.step-container[data-v-4abdd121]:not(:last-child){margin-bottom:100px}@media only screen and (max-width:735px){.step-container[data-v-4abdd121]:not(:last-child){margin-bottom:80px}}.step[data-v-4abdd121]{position:relative;border-radius:4px;padding:1rem 2rem;background-color:var(--color-step-background);overflow:hidden;-webkit-mask-image:-webkit-radial-gradient(#fff,#000)}.step[data-v-4abdd121]:before{content:"";position:absolute;top:0;left:0;border:1px solid var(--color-step-focused);background-color:var(--color-step-focused);height:calc(100% - 2px);width:4px;opacity:0;transition:opacity .15s ease-in}.step.focused[data-v-4abdd121],.step[data-v-4abdd121]:focus{outline:none}.step.focused[data-v-4abdd121]:before,.step[data-v-4abdd121]:focus:before{opacity:1}@media only screen and (max-width:735px){.step[data-v-4abdd121]{padding-left:2rem}.step[data-v-4abdd121]:before{opacity:1}}.step-label[data-v-4abdd121]{font-size:.70588rem;line-height:1.33333;font-weight:600;letter-spacing:-.01em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--colors-text,var(--color-step-text));margin-bottom:.4em}.caption[data-v-4abdd121]{border-top:1px solid;border-color:var(--color-step-caption);padding:1rem 0 0 0;margin-top:1rem}.media-container[data-v-4abdd121]{display:none}@media only screen and (max-width:735px){.step[data-v-4abdd121]{margin:0 .58824rem 1.17647rem .58824rem}.step.focused[data-v-4abdd121],.step[data-v-4abdd121]:focus{outline:none}.media-container[data-v-4abdd121]{display:block;position:relative}.media-container[data-v-4abdd121] img,.media-container[data-v-4abdd121] video{max-height:80vh}[data-v-4abdd121] .asset{padding:0 20px}}.steps[data-v-25d30c2c]{position:relative;font-size:.82353rem;line-height:1.42857;font-weight:400;letter-spacing:-.016em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;display:flex;color:var(--colors-text,var(--color-text))}@media only screen and (max-width:735px){.steps[data-v-25d30c2c]{padding-top:80px}.steps[data-v-25d30c2c]:before{position:absolute;top:0;border-top:1px solid var(--color-fill-gray-tertiary);content:"";width:calc(100% - 2.35294rem);margin:0 1.17647rem}}.content-container[data-v-25d30c2c]{flex:none;margin-right:4.16667%;width:37.5%;margin-top:140px;margin-bottom:94vh}@media only screen and (max-width:735px){.content-container[data-v-25d30c2c]{margin-top:0;margin-bottom:0;height:100%;margin-left:0;margin-right:0;position:relative;width:100%}}.asset-container[data-v-25d30c2c]{flex:none;height:calc(100vh - 3.05882rem);background-color:var(--background,var(--color-step-background));max-width:921px;width:calc(50vw + 8.33333%);position:sticky;top:3.05882rem;transition:margin .1s ease-in-out}@media only screen and (max-width:767px){.asset-container[data-v-25d30c2c]{top:2.82353rem;height:calc(100vh - 2.82353rem)}}.asset-container[data-v-25d30c2c]:not(.for-step-code){overflow-y:auto;-webkit-overflow-scrolling:touch}.asset-container.ide[data-v-25d30c2c]{height:100vh;top:0}@media only screen and (min-width:736px){.asset-container[data-v-25d30c2c]{display:grid}.asset-container>[data-v-25d30c2c]{grid-row:1;grid-column:1;height:calc(100vh - 3.05882rem)}.asset-container.ide>[data-v-25d30c2c]{height:100vh}}.asset-container .step-asset[data-v-25d30c2c]{box-sizing:border-box;padding:0;padding-left:40px;min-height:320px;height:100%}.asset-container .step-asset[data-v-25d30c2c],.asset-container .step-asset[data-v-25d30c2c] picture{height:100%;display:flex;align-items:center}.asset-container .step-asset[data-v-25d30c2c] .video-replay-container{height:100%;display:flex;flex-direction:column;justify-content:center}.asset-container .step-asset[data-v-25d30c2c] img,.asset-container .step-asset[data-v-25d30c2c] video{width:auto;max-height:calc(100vh - 3.05882rem - 80px);max-width:531.6634px;margin:0}@media only screen and (max-width:1068px){.asset-container .step-asset[data-v-25d30c2c] img,.asset-container .step-asset[data-v-25d30c2c] video{max-width:363.66436px}}.asset-container .step-asset[data-v-25d30c2c] .video-replay-container,.asset-container .step-asset[data-v-25d30c2c] img{min-height:320px}.asset-container .step-asset[data-v-25d30c2c] .video-replay-container video{min-height:280px}@media only screen and (max-width:735px){.asset-container[data-v-25d30c2c]{display:none}}.asset-wrapper[data-v-25d30c2c]{width:63.2%;align-self:center;transition:transform .25s ease-out;will-change:transform}.asset-wrapper.ide .step-asset[data-v-25d30c2c] img{background-color:var(--background,var(--color-step-background))}[data-v-25d30c2c] .runtime-preview-asset{display:grid}[data-v-25d30c2c] .runtime-preview-asset>*{grid-row:1;grid-column:1}.interstitial[data-v-25d30c2c]{padding:0 2rem}.interstitial[data-v-25d30c2c]:not(:first-child){margin-top:5.88235rem}.interstitial[data-v-25d30c2c]:not(:last-child){margin-bottom:30px}@media only screen and (max-width:735px){.interstitial[data-v-25d30c2c]{margin-left:auto;margin-right:auto;width:980px;padding:0}}@media only screen and (max-width:735px) and (max-width:1068px){.interstitial[data-v-25d30c2c]{width:692px}}@media only screen and (max-width:735px) and (max-width:735px){.interstitial[data-v-25d30c2c]{width:87.5%}}@media only screen and (max-width:735px){.interstitial[data-v-25d30c2c]:not(:first-child){margin-top:0}}.fade-enter-active[data-v-25d30c2c],.fade-leave-active[data-v-25d30c2c]{transition:opacity .3s ease-in-out}.fade-enter[data-v-25d30c2c],.fade-leave-to[data-v-25d30c2c]{opacity:0}.section[data-v-6b3a0b3a]{padding-top:80px}.sections[data-v-79a75e9e]{margin-left:auto;margin-right:auto;width:980px}@media only screen and (max-width:1068px){.sections[data-v-79a75e9e]{width:692px}}@media only screen and (max-width:735px){.sections[data-v-79a75e9e]{width:87.5%;margin:0;width:100%}}.tutorial[data-v-6e17d3d0]{background-color:var(--colors-text-background,var(--color-tutorial-background))} \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/css/tutorials-overview.8754eb09.css b/Sources/Mockingbird.docc/Renderer/css/tutorials-overview.8754eb09.css deleted file mode 100644 index 5691d1b0..00000000 --- a/Sources/Mockingbird.docc/Renderer/css/tutorials-overview.8754eb09.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */.replay-button[data-v-7335dbb2]{display:flex;align-items:center;justify-content:center;cursor:pointer;visibility:hidden;margin-top:.5rem;-webkit-tap-highlight-color:transparent}.replay-button.visible[data-v-7335dbb2]{visibility:visible}.replay-button svg.replay-icon[data-v-7335dbb2]{height:12px;width:12px;margin-left:.3em}[data-v-1b5cc854] img,[data-v-1b5cc854] video{display:block;margin-left:auto;margin-right:auto;-o-object-fit:contain;object-fit:contain;max-width:100%}.hero[data-v-fc7f508c]{margin-left:auto;margin-right:auto;width:980px;padding-bottom:4.70588rem;padding-top:4.70588rem}@media only screen and (max-width:1068px){.hero[data-v-fc7f508c]{width:692px}}@media only screen and (max-width:735px){.hero[data-v-fc7f508c]{width:87.5%}}.copy-container[data-v-fc7f508c]{margin:0 auto;text-align:center;width:720px}.title[data-v-fc7f508c]{font-size:2.82353rem;line-height:1.08333;font-weight:400;letter-spacing:-.003em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--color-tutorials-overview-content)}@media only screen and (max-width:1068px){.title[data-v-fc7f508c]{font-size:2.35294rem;line-height:1.1;font-weight:400;letter-spacing:0;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){.title[data-v-fc7f508c]{font-size:1.88235rem;line-height:1.125;font-weight:400;letter-spacing:.013em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.content[data-v-fc7f508c]{font-size:1.23529rem;line-height:1.38095;font-weight:400;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--color-tutorials-overview-content)}@media only screen and (max-width:735px){.content[data-v-fc7f508c]{font-size:1.11765rem;line-height:1.42105;font-weight:400;letter-spacing:.012em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.meta[data-v-fc7f508c]{color:var(--color-tutorials-overview-content-alt);align-items:center;display:flex;justify-content:center}.meta-content[data-v-fc7f508c]{font-size:.82353rem;line-height:1.42857;font-weight:400;letter-spacing:-.016em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.meta .timer-icon[data-v-fc7f508c]{margin-right:.35294rem;height:.94118rem;width:.94118rem;fill:var(--color-tutorials-overview-icon)}@media only screen and (max-width:735px){.meta .timer-icon[data-v-fc7f508c]{margin-right:.29412rem;height:.82353rem;width:.82353rem}}.meta .time[data-v-fc7f508c]{font-size:1.11765rem;line-height:1.21053;font-weight:600;letter-spacing:.012em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}@media only screen and (max-width:735px){.meta .time[data-v-fc7f508c]{font-size:1rem;line-height:1.11765;font-weight:600;letter-spacing:.019em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.title+.content[data-v-fc7f508c]{margin-top:1.47059rem}.content+.meta[data-v-fc7f508c]{margin-top:1.17647rem}.button-cta[data-v-fc7f508c]{margin-top:1.76471rem}*+.asset[data-v-fc7f508c]{margin-top:4.11765rem}@media only screen and (max-width:1068px){.copy-container[data-v-fc7f508c]{width:636px}}@media only screen and (max-width:735px){.hero[data-v-fc7f508c]{padding-bottom:1.76471rem;padding-top:2.35294rem}.copy-container[data-v-fc7f508c]{width:100%}.title+.content[data-v-fc7f508c]{margin-top:.88235rem}.button-cta[data-v-fc7f508c]{margin-top:1.41176rem}*+.asset[data-v-fc7f508c]{margin-top:2.23529rem}}.image[data-v-14577284]{margin-bottom:10px}.name[data-v-14577284]{font-size:1.88235rem;line-height:1.125;font-weight:400;letter-spacing:.013em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:#f0f0f0;word-break:break-word}@media only screen and (max-width:1068px){.name[data-v-14577284]{font-size:1.64706rem;line-height:1.14286;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){.name[data-v-14577284]{font-size:1.41176rem;line-height:1.16667;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.content[data-v-14577284]{font-size:1rem;line-height:1.23529;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--color-tutorials-overview-content-alt);margin-top:10px}.volume-name[data-v-14577284]{padding:50px 60px;text-align:center;background:#161616;margin:2px 0}@media only screen and (max-width:735px){.volume-name[data-v-14577284]{padding:40px 20px}}.document-icon[data-v-56114692]{margin-left:-3px}.tile[data-v-86db603a]{background:#161616;padding:40px 30px;color:var(--color-tutorials-overview-content-alt)}.content[data-v-86db603a] a,a[data-v-86db603a]{color:var(--colors-link,var(--color-tutorials-overview-link))}.icon[data-v-86db603a]{display:block;height:1.47059rem;line-height:1.47059rem;margin-bottom:.58824rem;width:1.47059rem}.icon[data-v-86db603a] svg.svg-icon{width:100%;max-height:100%;fill:var(--color-tutorials-overview-icon)}.icon[data-v-86db603a] svg.svg-icon .svg-icon-stroke{stroke:var(--color-tutorials-overview-content-alt)}.title[data-v-86db603a]{font-size:1.23529rem;line-height:1.19048;font-weight:600;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;margin-bottom:.8em}.content[data-v-86db603a],.link[data-v-86db603a]{font-size:.82353rem;line-height:1.42857;font-weight:400;letter-spacing:-.016em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.content[data-v-86db603a]{color:var(--color-tutorials-overview-content-alt)}.link[data-v-86db603a]{display:block;margin-top:1.17647rem}.link .link-icon[data-v-86db603a]{margin-left:.2em;width:.6em;height:.6em}[data-v-86db603a] .content ul{list-style-type:none;margin-left:0;font-size:.82353rem;line-height:1.28571;font-weight:400;letter-spacing:-.016em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}[data-v-86db603a] .content ul li:before{content:"\200B";position:absolute}[data-v-86db603a] .content li+li{margin-top:8px}@media only screen and (max-width:735px){.tile[data-v-86db603a]{padding:1.76471rem 1.17647rem}}.tile-group[data-v-015f9f13]{display:grid;grid-column-gap:2px;grid-row-gap:2px}.tile-group.count-1[data-v-015f9f13]{grid-template-columns:1fr;text-align:center}.tile-group.count-1[data-v-015f9f13] .icon{margin-left:auto;margin-right:auto}.tile-group.count-2[data-v-015f9f13]{grid-template-columns:repeat(2,1fr)}.tile-group.count-3[data-v-015f9f13]{grid-template-columns:repeat(3,1fr)}.tile-group.count-4[data-v-015f9f13]{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(2,auto)}.tile-group.count-5[data-v-015f9f13]{grid-template-columns:repeat(6,1fr);grid-template-rows:repeat(2,auto)}.tile-group.count-5 .tile[data-v-015f9f13]{grid-column-end:span 2}.tile-group.count-5 .tile[data-v-015f9f13]:nth-of-type(-n+2){grid-column-end:span 3}.tile-group.count-6[data-v-015f9f13]{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(3,auto)}@media only screen and (min-width:768px) and (max-width:1068px){.tile-group.tile-group[data-v-015f9f13]{grid-template-columns:1fr;grid-template-rows:auto}}@media only screen and (max-width:735px){.tile-group.count-1[data-v-015f9f13],.tile-group.count-2[data-v-015f9f13],.tile-group.count-3[data-v-015f9f13],.tile-group.count-4[data-v-015f9f13],.tile-group.count-5[data-v-015f9f13],.tile-group.count-6[data-v-015f9f13]{grid-template-columns:1fr;grid-template-rows:auto}}.title[data-v-49ba6f62]{font-size:1.88235rem;line-height:1.125;font-weight:400;letter-spacing:.013em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:#f0f0f0}@media only screen and (max-width:1068px){.title[data-v-49ba6f62]{font-size:1.64706rem;line-height:1.14286;font-weight:400;letter-spacing:.007em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}@media only screen and (max-width:735px){.title[data-v-49ba6f62]{font-size:1.41176rem;line-height:1.16667;font-weight:400;letter-spacing:.009em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.content[data-v-49ba6f62]{font-size:1rem;line-height:1.23529;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:#b0b0b0;margin-top:10px}.tutorials-navigation-link[data-v-6bb99205]{color:var(--color-tutorials-overview-navigation-link);transition:color .3s linear}.tutorials-navigation-link[data-v-6bb99205]:hover{text-decoration:none;transition:none;color:var(--color-tutorials-overview-navigation-link-hover)}.tutorials-navigation-link.active[data-v-6bb99205]{color:var(--color-tutorials-overview-navigation-link-active)}.tutorials-navigation-list[data-v-6f2800d1]{list-style-type:none;margin:0}.tutorials-navigation-list li+li[data-v-6f2800d1]:not(.volume--named){margin-top:24px}.tutorials-navigation-list .volume--named+.volume--named[data-v-6f2800d1]{margin-top:12px}.expand-enter-active,.expand-leave-active{transition:height .3s ease-in-out;overflow:hidden}.expand-enter,.expand-leave-to{height:0}.toggle[data-v-6513d652]{color:#f0f0f0;line-height:21px;display:flex;align-items:center;width:100%;font-weight:600;padding:6px 6px 6px 0;border-bottom:1px solid #2a2a2a;text-decoration:none;box-sizing:border-box}@media only screen and (max-width:767px){.toggle[data-v-6513d652]{padding-right:6px;border-bottom-color:hsla(0,0%,100%,.1)}}.toggle .text[data-v-6513d652]{word-break:break-word}.toggle[data-v-6513d652]:hover{text-decoration:none}.toggle .toggle-icon[data-v-6513d652]{display:inline-block;transition:transform .2s ease-in;height:.4em;width:.4em;margin-left:auto;margin-right:.2em}.collapsed .toggle .toggle-icon[data-v-6513d652]{transform:rotate(45deg)}.collapsed .toggle[data-v-6513d652],.collapsed .toggle[data-v-6513d652]:hover{color:#b0b0b0}.tutorials-navigation-menu-content[data-v-6513d652]{opacity:1;transition:height .2s ease-in,opacity .2s ease-in}.collapsed .tutorials-navigation-menu-content[data-v-6513d652]{height:0;opacity:0}.tutorials-navigation-menu-content .tutorials-navigation-list[data-v-6513d652]{padding:24px 0 12px 0}.tutorials-navigation[data-v-0cbd8adb]{font-size:1rem;line-height:1.23529;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.topic-list[data-v-9a8371c6]{list-style-type:none;margin:50px 0 0 0;position:relative}.topic-list li[data-v-9a8371c6]:before{content:"\200B";position:absolute}.topic-list[data-v-9a8371c6]:before{content:"";border-left:1px solid var(--color-fill-quaternary);display:block;height:calc(100% - .88235rem);left:.88235rem;position:absolute;top:50%;transform:translateY(-50%);width:0}.topic[data-v-9a8371c6]{font-size:1rem;line-height:1.47059;font-weight:400;letter-spacing:-.022em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;display:flex;align-items:flex-start}@media only screen and (max-width:735px){.topic[data-v-9a8371c6]{font-size:.82353rem;line-height:1.28571;font-weight:400;letter-spacing:-.016em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}}.topic+.topic[data-v-9a8371c6]{margin-top:.58824rem}.topic .topic-icon[data-v-9a8371c6]{background-color:var(--color-fill-quaternary);border-radius:50%;flex-shrink:0;height:1.76471rem;width:1.76471rem;margin-right:1.17647rem;position:relative;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:.47059rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center}.topic .topic-icon svg[data-v-9a8371c6]{fill:var(--color-tutorials-overview-icon);max-width:100%;max-height:100%;width:100%}.container[data-v-9a8371c6]{align-items:baseline;display:flex;justify-content:space-between;width:100%;padding-top:.11765rem}.container[data-v-9a8371c6]:hover{text-decoration:none}.container:hover .link[data-v-9a8371c6]{text-decoration:underline}.timer-icon[data-v-9a8371c6]{margin-right:.29412rem;height:.70588rem;width:.70588rem;fill:var(--color-tutorials-overview-icon)}.time[data-v-9a8371c6]{font-size:.82353rem;line-height:1.28571;font-weight:400;letter-spacing:-.016em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:var(--color-tutorials-overview-content-alt);align-items:center;display:inline-flex}.link[data-v-9a8371c6]{padding-right:.58824rem;color:var(--colors-link,var(--color-tutorials-overview-link))}@media only screen and (min-width:768px) and (max-width:1068px){.topic-list[data-v-9a8371c6]{margin-top:2.35294rem}}@media only screen and (max-width:735px){.topic-list[data-v-9a8371c6]{margin-top:1.76471rem}.topic[data-v-9a8371c6]{height:auto;align-items:flex-start}.topic+.topic[data-v-9a8371c6]{margin-top:1.17647rem}.topic .topic-icon[data-v-9a8371c6]{top:.29412rem;margin-right:.76471rem}.container[data-v-9a8371c6]{flex-wrap:wrap;padding-top:0}.link[data-v-9a8371c6],.time[data-v-9a8371c6]{flex-basis:100%}.time[data-v-9a8371c6]{margin-top:.29412rem}}.chapter[data-v-1d13969f]:focus{outline:none!important}.info[data-v-1d13969f]{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.name[data-v-1d13969f]{font-size:1.23529rem;line-height:1.19048;font-weight:600;letter-spacing:.011em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:#f0f0f0}.name-text[data-v-1d13969f]{word-break:break-word}.eyebrow[data-v-1d13969f]{font-size:1rem;line-height:1.23529;font-weight:400;letter-spacing:-.022em;color:var(--color-tutorials-overview-eyebrow);display:block;font-weight:600;margin-bottom:5px}.content[data-v-1d13969f],.eyebrow[data-v-1d13969f]{font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.content[data-v-1d13969f]{font-size:.82353rem;line-height:1.42857;font-weight:400;letter-spacing:-.016em;color:var(--color-tutorials-overview-content-alt)}.asset[data-v-1d13969f]{flex:0 0 190px}.intro[data-v-1d13969f]{flex:0 1 360px}@media only screen and (min-width:768px) and (max-width:1068px){.asset[data-v-1d13969f]{flex:0 0 130px}.intro[data-v-1d13969f]{flex:0 1 260px}}@media only screen and (max-width:767px){.intro[data-v-1d13969f]{flex:0 1 340px}}@media only screen and (max-width:735px){.info[data-v-1d13969f]{display:block;text-align:center}.asset[data-v-1d13969f]{margin:0 45px}.eyebrow[data-v-1d13969f]{margin-bottom:7px}.intro[data-v-1d13969f]{margin-top:40px}}.tile[data-v-2129f58c]{background:#161616;margin:2px 0;padding:50px 60px}.asset[data-v-2129f58c]{margin-bottom:10px}@media only screen and (min-width:768px) and (max-width:1068px){.tile[data-v-2129f58c]{padding:40px 30px}}@media only screen and (max-width:735px){.volume[data-v-2129f58c]{border-radius:0}.tile[data-v-2129f58c]{padding:40px 20px}}.learning-path[data-v-48bfa85c]{background:#000;padding:4.70588rem 0}.main-container[data-v-48bfa85c]{margin-left:auto;margin-right:auto;width:980px;align-items:stretch;display:flex;justify-content:space-between}@media only screen and (max-width:1068px){.main-container[data-v-48bfa85c]{width:692px}}@media only screen and (max-width:735px){.main-container[data-v-48bfa85c]{width:87.5%}}.ide .main-container[data-v-48bfa85c]{justify-content:center}.secondary-content-container[data-v-48bfa85c]{flex:0 0 200px;width:200px}.tutorials-navigation[data-v-48bfa85c]{position:sticky;top:7.76471rem}.primary-content-container[data-v-48bfa85c]{flex:0 1 720px;max-width:100%}.content-sections-container .content-section[data-v-48bfa85c]{border-radius:12px;overflow:hidden}.content-sections-container .content-section+.content-section[data-v-48bfa85c]{margin-top:1.17647rem}@media only screen and (min-width:768px) and (max-width:1068px){.learning-path[data-v-48bfa85c]{padding:2.35294rem 0}.primary-content-container[data-v-48bfa85c]{flex-basis:auto;margin-left:1.29412rem}.secondary-content-container[data-v-48bfa85c]{flex:0 0 180px;width:180px}}@media only screen and (max-width:767px){.secondary-content-container[data-v-48bfa85c]{display:none}}@media only screen and (max-width:735px){.content-sections-container .content-section[data-v-48bfa85c]{border-radius:0}.content-sections-container .content-section.volume[data-v-48bfa85c]{margin-top:1.17647rem}.learning-path[data-v-48bfa85c]{padding:0}.main-container[data-v-48bfa85c]{width:100%}}.nav-title-content[data-v-60ea3af8]{max-width:100%}.title[data-v-60ea3af8]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:inline-block;vertical-align:top;max-width:296px}@media only screen and (max-width:1023px){.title[data-v-60ea3af8]{max-width:205px}}@media only screen and (max-width:767px){.title[data-v-60ea3af8]{flex-basis:fill;display:initial;vertical-align:initial;max-width:none}}.subhead[data-v-60ea3af8]{color:var(--color-nav-root-subhead)}.theme-dark .subhead[data-v-60ea3af8]{color:var(--color-nav-dark-root-subhead)}.tutorials-navigation[data-v-07700f98]{display:none}@media only screen and (max-width:767px){.tutorials-navigation[data-v-07700f98]{display:block}}.nav[data-v-07700f98] .nav-menu .nav-menu-items{padding:12px 0 44px 0}@media only screen and (min-width:768px){.nav[data-v-07700f98] .nav-menu .nav-menu-items{display:none}}@media only screen and (min-width:736px) and (max-width:1068px){.nav[data-v-07700f98] .nav-menu .nav-menu-items{padding-top:25px}}@media only screen and (min-width:320px) and (max-width:735px){.nav[data-v-07700f98] .nav-menu .nav-menu-items{padding-top:18px;padding-bottom:40px}}.tutorials-overview[data-v-0c0b1eea]{height:100%}.tutorials-overview .radial-gradient[data-v-0c0b1eea]{margin-top:-3.05882rem;padding-top:3.05882rem;background:var(--color-tutorials-overview-background)}@media only screen and (max-width:735px){.tutorials-overview .radial-gradient[data-v-0c0b1eea]{margin-top:-2.82353rem;padding-top:2.82353rem}}@-moz-document url-prefix(){.tutorials-overview .radial-gradient{background:#111!important}} \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/favicon.ico b/Sources/Mockingbird.docc/Renderer/favicon.ico deleted file mode 100644 index 58e0ae02b241c3454e3e8ae2ad6caeb396b372a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 329400 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 d7ulVv_ - - \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/img/added-icon.d6f7e47d.svg b/Sources/Mockingbird.docc/Renderer/img/added-icon.d6f7e47d.svg deleted file mode 100644 index 6bb6d89a..00000000 --- a/Sources/Mockingbird.docc/Renderer/img/added-icon.d6f7e47d.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/img/deprecated-icon.015b4f17.svg b/Sources/Mockingbird.docc/Renderer/img/deprecated-icon.015b4f17.svg deleted file mode 100644 index a0f80086..00000000 --- a/Sources/Mockingbird.docc/Renderer/img/deprecated-icon.015b4f17.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/img/modified-icon.f496e73d.svg b/Sources/Mockingbird.docc/Renderer/img/modified-icon.f496e73d.svg deleted file mode 100644 index 3e0bd6f0..00000000 --- a/Sources/Mockingbird.docc/Renderer/img/modified-icon.f496e73d.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/index-template.html b/Sources/Mockingbird.docc/Renderer/index-template.html deleted file mode 100644 index 1225a601..00000000 --- a/Sources/Mockingbird.docc/Renderer/index-template.html +++ /dev/null @@ -1,11 +0,0 @@ - - -Documentation
\ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/index.html b/Sources/Mockingbird.docc/Renderer/index.html deleted file mode 100644 index 64020035..00000000 --- a/Sources/Mockingbird.docc/Renderer/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - -Documentation
\ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/chunk-2d0d3105.cd72cc8e.js b/Sources/Mockingbird.docc/Renderer/js/chunk-2d0d3105.cd72cc8e.js deleted file mode 100644 index 74345f0c..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/chunk-2d0d3105.cd72cc8e.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0d3105"],{"5abe":function(t,e){(function(){"use strict";if("object"===typeof window)if("IntersectionObserver"in window&&"IntersectionObserverEntry"in window&&"intersectionRatio"in window.IntersectionObserverEntry.prototype)"isIntersecting"in window.IntersectionObserverEntry.prototype||Object.defineProperty(window.IntersectionObserverEntry.prototype,"isIntersecting",{get:function(){return this.intersectionRatio>0}});else{var t=function(t){var e=t,n=i(e);while(n)e=n.ownerDocument,n=i(e);return e}(window.document),e=[],n=null,o=null;s.prototype.THROTTLE_TIMEOUT=100,s.prototype.POLL_INTERVAL=null,s.prototype.USE_MUTATION_OBSERVER=!0,s._setupCrossOriginUpdater=function(){return n||(n=function(t,n){o=t&&n?g(t,n):p(),e.forEach((function(t){t._checkForIntersections()}))}),n},s._resetCrossOriginUpdater=function(){n=null,o=null},s.prototype.observe=function(t){var e=this._observationTargets.some((function(e){return e.element==t}));if(!e){if(!t||1!=t.nodeType)throw new Error("target must be an Element");this._registerInstance(),this._observationTargets.push({element:t,entry:null}),this._monitorIntersections(t.ownerDocument),this._checkForIntersections()}},s.prototype.unobserve=function(t){this._observationTargets=this._observationTargets.filter((function(e){return e.element!=t})),this._unmonitorIntersections(t.ownerDocument),0==this._observationTargets.length&&this._unregisterInstance()},s.prototype.disconnect=function(){this._observationTargets=[],this._unmonitorAllIntersections(),this._unregisterInstance()},s.prototype.takeRecords=function(){var t=this._queuedEntries.slice();return this._queuedEntries=[],t},s.prototype._initThresholds=function(t){var e=t||[0];return Array.isArray(e)||(e=[e]),e.sort().filter((function(t,e,n){if("number"!=typeof t||isNaN(t)||t<0||t>1)throw new Error("threshold must be a number between 0 and 1 inclusively");return t!==n[e-1]}))},s.prototype._parseRootMargin=function(t){var e=t||"0px",n=e.split(/\s+/).map((function(t){var e=/^(-?\d*\.?\d+)(px|%)$/.exec(t);if(!e)throw new Error("rootMargin must be specified in pixels or percent");return{value:parseFloat(e[1]),unit:e[2]}}));return n[1]=n[1]||n[0],n[2]=n[2]||n[0],n[3]=n[3]||n[1],n},s.prototype._monitorIntersections=function(e){var n=e.defaultView;if(n&&-1==this._monitoringDocuments.indexOf(e)){var o=this._checkForIntersections,r=null,s=null;this.POLL_INTERVAL?r=n.setInterval(o,this.POLL_INTERVAL):(c(n,"resize",o,!0),c(e,"scroll",o,!0),this.USE_MUTATION_OBSERVER&&"MutationObserver"in n&&(s=new n.MutationObserver(o),s.observe(e,{attributes:!0,childList:!0,characterData:!0,subtree:!0}))),this._monitoringDocuments.push(e),this._monitoringUnsubscribes.push((function(){var t=e.defaultView;t&&(r&&t.clearInterval(r),a(t,"resize",o,!0)),a(e,"scroll",o,!0),s&&s.disconnect()}));var h=this.root&&(this.root.ownerDocument||this.root)||t;if(e!=h){var u=i(e);u&&this._monitorIntersections(u.ownerDocument)}}},s.prototype._unmonitorIntersections=function(e){var n=this._monitoringDocuments.indexOf(e);if(-1!=n){var o=this.root&&(this.root.ownerDocument||this.root)||t,r=this._observationTargets.some((function(t){var n=t.element.ownerDocument;if(n==e)return!0;while(n&&n!=o){var r=i(n);if(n=r&&r.ownerDocument,n==e)return!0}return!1}));if(!r){var s=this._monitoringUnsubscribes[n];if(this._monitoringDocuments.splice(n,1),this._monitoringUnsubscribes.splice(n,1),s(),e!=o){var h=i(e);h&&this._unmonitorIntersections(h.ownerDocument)}}}},s.prototype._unmonitorAllIntersections=function(){var t=this._monitoringUnsubscribes.slice(0);this._monitoringDocuments.length=0,this._monitoringUnsubscribes.length=0;for(var e=0;e=0&&h>=0&&{top:n,bottom:o,left:i,right:r,width:s,height:h}||null}function f(t){var e;try{e=t.getBoundingClientRect()}catch(n){}return e?(e.width&&e.height||(e={top:e.top,right:e.right,bottom:e.bottom,left:e.left,width:e.right-e.left,height:e.bottom-e.top}),e):p()}function p(){return{top:0,bottom:0,left:0,right:0,width:0,height:0}}function d(t){return!t||"x"in t?t:{top:t.top,y:t.top,bottom:t.bottom,left:t.left,x:t.left,right:t.right,width:t.width,height:t.height}}function g(t,e){var n=e.top-t.top,o=e.left-t.left;return{top:n,left:o,height:e.height,width:e.width,bottom:n+e.height,right:o+e.width}}function m(t,e){var n=e;while(n){if(n==t)return!0;n=v(n)}return!1}function v(e){var n=e.parentNode;return 9==e.nodeType&&e!=t?i(e):(n&&n.assignedSlot&&(n=n.assignedSlot.parentNode),n&&11==n.nodeType&&n.host?n.host:n)}function w(t){return t&&9===t.nodeType}})()}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/chunk-vendors.00bf82af.js b/Sources/Mockingbird.docc/Renderer/js/chunk-vendors.00bf82af.js deleted file mode 100644 index 04c05a6c..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/chunk-vendors.00bf82af.js +++ /dev/null @@ -1,21 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-vendors"],{2877:function(t,e,n){"use strict";function r(t,e,n,r,o,i,a,s){var c,u="function"===typeof t?t.options:t;if(e&&(u.render=e,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(c=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"===typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},u._ssrRegister=c):o&&(c=s?function(){o.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:o),c)if(u.functional){u._injectStyles=c;var f=u.render;u.render=function(t,e){return c.call(e),f(t,e)}}else{var l=u.beforeCreate;u.beforeCreate=l?[].concat(l,c):[c]}return{exports:t,options:u}}n.d(e,"a",(function(){return r}))},"2b0e":function(t,e,n){"use strict";n.r(e),function(t){ -/*! - * Vue.js v2.6.14 - * (c) 2014-2021 Evan You - * Released under the MIT License. - */ -var n=Object.freeze({});function r(t){return void 0===t||null===t}function o(t){return void 0!==t&&null!==t}function i(t){return!0===t}function a(t){return!1===t}function s(t){return"string"===typeof t||"number"===typeof t||"symbol"===typeof t||"boolean"===typeof t}function c(t){return null!==t&&"object"===typeof t}var u=Object.prototype.toString;function f(t){return"[object Object]"===u.call(t)}function l(t){return"[object RegExp]"===u.call(t)}function p(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function d(t){return o(t)&&"function"===typeof t.then&&"function"===typeof t.catch}function h(t){return null==t?"":Array.isArray(t)||f(t)&&t.toString===u?JSON.stringify(t,null,2):String(t)}function v(t){var e=parseFloat(t);return isNaN(e)?t:e}function y(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o-1)return t.splice(n,1)}}var _=Object.prototype.hasOwnProperty;function b(t,e){return _.call(t,e)}function w(t){var e=Object.create(null);return function(n){var r=e[n];return r||(e[n]=t(n))}}var C=/-(\w)/g,x=w((function(t){return t.replace(C,(function(t,e){return e?e.toUpperCase():""}))})),$=w((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),A=/\B([A-Z])/g,k=w((function(t){return t.replace(A,"-$1").toLowerCase()}));function O(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n}function S(t,e){return t.bind(e)}var E=Function.prototype.bind?S:O;function j(t,e){e=e||0;var n=t.length-e,r=new Array(n);while(n--)r[n]=t[n+e];return r}function T(t,e){for(var n in e)t[n]=e[n];return t}function R(t){for(var e={},n=0;n0,nt=Z&&Z.indexOf("edge/")>0,rt=(Z&&Z.indexOf("android"),Z&&/iphone|ipad|ipod|ios/.test(Z)||"ios"===Y),ot=(Z&&/chrome\/\d+/.test(Z),Z&&/phantomjs/.test(Z),Z&&Z.match(/firefox\/(\d+)/)),it={}.watch,at=!1;if(G)try{var st={};Object.defineProperty(st,"passive",{get:function(){at=!0}}),window.addEventListener("test-passive",null,st)}catch($a){}var ct=function(){return void 0===X&&(X=!G&&!Q&&"undefined"!==typeof t&&(t["process"]&&"server"===t["process"].env.VUE_ENV)),X},ut=G&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ft(t){return"function"===typeof t&&/native code/.test(t.toString())}var lt,pt="undefined"!==typeof Symbol&&ft(Symbol)&&"undefined"!==typeof Reflect&&ft(Reflect.ownKeys);lt="undefined"!==typeof Set&&ft(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var dt=P,ht=0,vt=function(){this.id=ht++,this.subs=[]};vt.prototype.addSub=function(t){this.subs.push(t)},vt.prototype.removeSub=function(t){g(this.subs,t)},vt.prototype.depend=function(){vt.target&&vt.target.addDep(this)},vt.prototype.notify=function(){var t=this.subs.slice();for(var e=0,n=t.length;e-1)if(i&&!b(o,"default"))a=!1;else if(""===a||a===k(t)){var c=ee(String,o.type);(c<0||s0&&(a=Se(a,(e||"")+"_"+n),Oe(a[0])&&Oe(u)&&(f[c]=Ct(u.text+a[0].text),a.shift()),f.push.apply(f,a)):s(a)?Oe(u)?f[c]=Ct(u.text+a):""!==a&&f.push(Ct(a)):Oe(a)&&Oe(u)?f[c]=Ct(u.text+a.text):(i(t._isVList)&&o(a.tag)&&r(a.key)&&o(e)&&(a.key="__vlist"+e+"_"+n+"__"),f.push(a)));return f}function Ee(t){var e=t.$options.provide;e&&(t._provided="function"===typeof e?e.call(t):e)}function je(t){var e=Te(t.$options.inject,t);e&&(Et(!1),Object.keys(e).forEach((function(n){It(t,n,e[n])})),Et(!0))}function Te(t,e){if(t){for(var n=Object.create(null),r=pt?Reflect.ownKeys(t):Object.keys(t),o=0;o0,a=t?!!t.$stable:!i,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&r&&r!==n&&s===r.$key&&!i&&!r.$hasNormal)return r;for(var c in o={},t)t[c]&&"$"!==c[0]&&(o[c]=Ne(e,c,t[c]))}else o={};for(var u in e)u in o||(o[u]=De(e,u));return t&&Object.isExtensible(t)&&(t._normalized=o),z(o,"$stable",a),z(o,"$key",s),z(o,"$hasNormal",i),o}function Ne(t,e,n){var r=function(){var t=arguments.length?n.apply(null,arguments):n({});t=t&&"object"===typeof t&&!Array.isArray(t)?[t]:ke(t);var e=t&&t[0];return t&&(!e||1===t.length&&e.isComment&&!Ie(e))?void 0:t};return n.proxy&&Object.defineProperty(t,e,{get:r,enumerable:!0,configurable:!0}),r}function De(t,e){return function(){return t[e]}}function Me(t,e){var n,r,i,a,s;if(Array.isArray(t)||"string"===typeof t)for(n=new Array(t.length),r=0,i=t.length;r1?j(n):n;for(var r=j(arguments,1),o='event handler for "'+t+'"',i=0,a=n.length;idocument.createEvent("Event").timeStamp&&(Jn=function(){return Gn.now()})}function Qn(){var t,e;for(Xn=Jn(),zn=!0,Vn.sort((function(t,e){return t.id-e.id})),Wn=0;WnWn&&Vn[n].id>t.id)n--;Vn.splice(n+1,0,t)}else Vn.push(t);qn||(qn=!0,ve(Qn))}}var nr=0,rr=function(t,e,n,r,o){this.vm=t,o&&(t._watcher=this),t._watchers.push(this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync,this.before=r.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++nr,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new lt,this.newDepIds=new lt,this.expression="","function"===typeof e?this.getter=e:(this.getter=K(e),this.getter||(this.getter=P)),this.value=this.lazy?void 0:this.get()};rr.prototype.get=function(){var t;mt(this);var e=this.vm;try{t=this.getter.call(e,e)}catch($a){if(!this.user)throw $a;ne($a,e,'getter for watcher "'+this.expression+'"')}finally{this.deep&&me(t),gt(),this.cleanupDeps()}return t},rr.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},rr.prototype.cleanupDeps=function(){var t=this.deps.length;while(t--){var e=this.deps[t];this.newDepIds.has(e.id)||e.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},rr.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():er(this)},rr.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||c(t)||this.deep){var e=this.value;if(this.value=t,this.user){var n='callback for watcher "'+this.expression+'"';re(this.cb,this.vm,[t,e],this.vm,n)}else this.cb.call(this.vm,t,e)}}},rr.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},rr.prototype.depend=function(){var t=this.deps.length;while(t--)this.deps[t].depend()},rr.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||g(this.vm._watchers,this);var t=this.deps.length;while(t--)this.deps[t].removeSub(this);this.active=!1}};var or={enumerable:!0,configurable:!0,get:P,set:P};function ir(t,e,n){or.get=function(){return this[e][n]},or.set=function(t){this[e][n]=t},Object.defineProperty(t,n,or)}function ar(t){t._watchers=[];var e=t.$options;e.props&&sr(t,e.props),e.methods&&vr(t,e.methods),e.data?cr(t):Pt(t._data={},!0),e.computed&&lr(t,e.computed),e.watch&&e.watch!==it&&yr(t,e.watch)}function sr(t,e){var n=t.$options.propsData||{},r=t._props={},o=t.$options._propKeys=[],i=!t.$parent;i||Et(!1);var a=function(i){o.push(i);var a=Gt(i,e,n,t);It(r,i,a),i in t||ir(t,"_props",i)};for(var s in e)a(s);Et(!0)}function cr(t){var e=t.$options.data;e=t._data="function"===typeof e?ur(e,t):e||{},f(e)||(e={});var n=Object.keys(e),r=t.$options.props,o=(t.$options.methods,n.length);while(o--){var i=n[o];0,r&&b(r,i)||q(i)||ir(t,"_data",i)}Pt(e,!0)}function ur(t,e){mt();try{return t.call(e,e)}catch($a){return ne($a,e,"data()"),{}}finally{gt()}}var fr={lazy:!0};function lr(t,e){var n=t._computedWatchers=Object.create(null),r=ct();for(var o in e){var i=e[o],a="function"===typeof i?i:i.get;0,r||(n[o]=new rr(t,a||P,P,fr)),o in t||pr(t,o,i)}}function pr(t,e,n){var r=!ct();"function"===typeof n?(or.get=r?dr(e):hr(n),or.set=P):(or.get=n.get?r&&!1!==n.cache?dr(e):hr(n.get):P,or.set=n.set||P),Object.defineProperty(t,e,or)}function dr(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),vt.target&&e.depend(),e.value}}function hr(t){return function(){return t.call(this,this)}}function vr(t,e){t.$options.props;for(var n in e)t[n]="function"!==typeof e[n]?P:E(e[n],t)}function yr(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var o=0;o-1)return this;var n=j(arguments,1);return n.unshift(this),"function"===typeof t.install?t.install.apply(t,n):"function"===typeof t&&t.apply(null,n),e.push(t),this}}function kr(t){t.mixin=function(t){return this.options=Xt(this.options,t),this}}function Or(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,o=t._Ctor||(t._Ctor={});if(o[r])return o[r];var i=t.name||n.options.name;var a=function(t){this._init(t)};return a.prototype=Object.create(n.prototype),a.prototype.constructor=a,a.cid=e++,a.options=Xt(n.options,t),a["super"]=n,a.options.props&&Sr(a),a.options.computed&&Er(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,U.forEach((function(t){a[t]=n[t]})),i&&(a.options.components[i]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=T({},a.options),o[r]=a,a}}function Sr(t){var e=t.options.props;for(var n in e)ir(t.prototype,"_props",n)}function Er(t){var e=t.options.computed;for(var n in e)pr(t.prototype,n,e[n])}function jr(t){U.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&f(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"===typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}function Tr(t){return t&&(t.Ctor.options.name||t.tag)}function Rr(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"===typeof t?t.split(",").indexOf(e)>-1:!!l(t)&&t.test(e)}function Pr(t,e){var n=t.cache,r=t.keys,o=t._vnode;for(var i in n){var a=n[i];if(a){var s=a.name;s&&!e(s)&&Ir(n,i,r,o)}}}function Ir(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,g(n,e)}br($r),gr($r),jn($r),In($r),bn($r);var Lr=[String,RegExp,Array],Nr={name:"keep-alive",abstract:!0,props:{include:Lr,exclude:Lr,max:[String,Number]},methods:{cacheVNode:function(){var t=this,e=t.cache,n=t.keys,r=t.vnodeToCache,o=t.keyToCache;if(r){var i=r.tag,a=r.componentInstance,s=r.componentOptions;e[o]={name:Tr(s),tag:i,componentInstance:a},n.push(o),this.max&&n.length>parseInt(this.max)&&Ir(e,n[0],n,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)Ir(this.cache,t,this.keys)},mounted:function(){var t=this;this.cacheVNode(),this.$watch("include",(function(e){Pr(t,(function(t){return Rr(e,t)}))})),this.$watch("exclude",(function(e){Pr(t,(function(t){return!Rr(e,t)}))}))},updated:function(){this.cacheVNode()},render:function(){var t=this.$slots.default,e=$n(t),n=e&&e.componentOptions;if(n){var r=Tr(n),o=this,i=o.include,a=o.exclude;if(i&&(!r||!Rr(i,r))||a&&r&&Rr(a,r))return e;var s=this,c=s.cache,u=s.keys,f=null==e.key?n.Ctor.cid+(n.tag?"::"+n.tag:""):e.key;c[f]?(e.componentInstance=c[f].componentInstance,g(u,f),u.push(f)):(this.vnodeToCache=e,this.keyToCache=f),e.data.keepAlive=!0}return e||t&&t[0]}},Dr={KeepAlive:Nr};function Mr(t){var e={get:function(){return B}};Object.defineProperty(t,"config",e),t.util={warn:dt,extend:T,mergeOptions:Xt,defineReactive:It},t.set=Lt,t.delete=Nt,t.nextTick=ve,t.observable=function(t){return Pt(t),t},t.options=Object.create(null),U.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,T(t.options.components,Dr),Ar(t),kr(t),Or(t),jr(t)}Mr($r),Object.defineProperty($r.prototype,"$isServer",{get:ct}),Object.defineProperty($r.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty($r,"FunctionalRenderContext",{value:Ze}),$r.version="2.6.14";var Fr=y("style,class"),Ur=y("input,textarea,option,select,progress"),Vr=function(t,e,n){return"value"===n&&Ur(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},Br=y("contenteditable,draggable,spellcheck"),Hr=y("events,caret,typing,plaintext-only"),qr=function(t,e){return Jr(e)||"false"===e?"false":"contenteditable"===t&&Hr(e)?e:"true"},zr=y("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),Wr="http://www.w3.org/1999/xlink",Kr=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},Xr=function(t){return Kr(t)?t.slice(6,t.length):""},Jr=function(t){return null==t||!1===t};function Gr(t){var e=t.data,n=t,r=t;while(o(r.componentInstance))r=r.componentInstance._vnode,r&&r.data&&(e=Qr(r.data,e));while(o(n=n.parent))n&&n.data&&(e=Qr(e,n.data));return Yr(e.staticClass,e.class)}function Qr(t,e){return{staticClass:Zr(t.staticClass,e.staticClass),class:o(t.class)?[t.class,e.class]:e.class}}function Yr(t,e){return o(t)||o(e)?Zr(t,to(e)):""}function Zr(t,e){return t?e?t+" "+e:t:e||""}function to(t){return Array.isArray(t)?eo(t):c(t)?no(t):"string"===typeof t?t:""}function eo(t){for(var e,n="",r=0,i=t.length;r-1?co[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:co[t]=/HTMLUnknownElement/.test(e.toString())}var fo=y("text,number,password,search,email,tel,url");function lo(t){if("string"===typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}function po(t,e){var n=document.createElement(t);return"select"!==t||e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n}function ho(t,e){return document.createElementNS(ro[t],e)}function vo(t){return document.createTextNode(t)}function yo(t){return document.createComment(t)}function mo(t,e,n){t.insertBefore(e,n)}function go(t,e){t.removeChild(e)}function _o(t,e){t.appendChild(e)}function bo(t){return t.parentNode}function wo(t){return t.nextSibling}function Co(t){return t.tagName}function xo(t,e){t.textContent=e}function $o(t,e){t.setAttribute(e,"")}var Ao=Object.freeze({createElement:po,createElementNS:ho,createTextNode:vo,createComment:yo,insertBefore:mo,removeChild:go,appendChild:_o,parentNode:bo,nextSibling:wo,tagName:Co,setTextContent:xo,setStyleScope:$o}),ko={create:function(t,e){Oo(e)},update:function(t,e){t.data.ref!==e.data.ref&&(Oo(t,!0),Oo(e))},destroy:function(t){Oo(t,!0)}};function Oo(t,e){var n=t.data.ref;if(o(n)){var r=t.context,i=t.componentInstance||t.elm,a=r.$refs;e?Array.isArray(a[n])?g(a[n],i):a[n]===i&&(a[n]=void 0):t.data.refInFor?Array.isArray(a[n])?a[n].indexOf(i)<0&&a[n].push(i):a[n]=[i]:a[n]=i}}var So=new _t("",{},[]),Eo=["create","activate","update","remove","destroy"];function jo(t,e){return t.key===e.key&&t.asyncFactory===e.asyncFactory&&(t.tag===e.tag&&t.isComment===e.isComment&&o(t.data)===o(e.data)&&To(t,e)||i(t.isAsyncPlaceholder)&&r(e.asyncFactory.error))}function To(t,e){if("input"!==t.tag)return!0;var n,r=o(n=t.data)&&o(n=n.attrs)&&n.type,i=o(n=e.data)&&o(n=n.attrs)&&n.type;return r===i||fo(r)&&fo(i)}function Ro(t,e,n){var r,i,a={};for(r=e;r<=n;++r)i=t[r].key,o(i)&&(a[i]=r);return a}function Po(t){var e,n,a={},c=t.modules,u=t.nodeOps;for(e=0;ev?(l=r(n[g+1])?null:n[g+1].elm,x(t,l,n,h,g,i)):h>g&&A(e,p,v)}function S(t,e,n,r){for(var i=n;i-1?qo(t,e,n):zr(e)?Jr(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):Br(e)?t.setAttribute(e,qr(e,n)):Kr(e)?Jr(n)?t.removeAttributeNS(Wr,Xr(e)):t.setAttributeNS(Wr,e,n):qo(t,e,n)}function qo(t,e,n){if(Jr(n))t.removeAttribute(e);else{if(tt&&!et&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var zo={create:Bo,update:Bo};function Wo(t,e){var n=e.elm,i=e.data,a=t.data;if(!(r(i.staticClass)&&r(i.class)&&(r(a)||r(a.staticClass)&&r(a.class)))){var s=Gr(e),c=n._transitionClasses;o(c)&&(s=Zr(s,to(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var Ko,Xo={create:Wo,update:Wo},Jo="__r",Go="__c";function Qo(t){if(o(t[Jo])){var e=tt?"change":"input";t[e]=[].concat(t[Jo],t[e]||[]),delete t[Jo]}o(t[Go])&&(t.change=[].concat(t[Go],t.change||[]),delete t[Go])}function Yo(t,e,n){var r=Ko;return function o(){var i=e.apply(null,arguments);null!==i&&ei(t,o,n,r)}}var Zo=se&&!(ot&&Number(ot[1])<=53);function ti(t,e,n,r){if(Zo){var o=Xn,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}Ko.addEventListener(t,e,at?{capture:n,passive:r}:n)}function ei(t,e,n,r){(r||Ko).removeEventListener(t,e._wrapper||e,n)}function ni(t,e){if(!r(t.data.on)||!r(e.data.on)){var n=e.data.on||{},o=t.data.on||{};Ko=e.elm,Qo(n),we(n,o,ti,ei,Yo,e.context),Ko=void 0}}var ri,oi={create:ni,update:ni};function ii(t,e){if(!r(t.data.domProps)||!r(e.data.domProps)){var n,i,a=e.elm,s=t.data.domProps||{},c=e.data.domProps||{};for(n in o(c.__ob__)&&(c=e.data.domProps=T({},c)),s)n in c||(a[n]="");for(n in c){if(i=c[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),i===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n&&"PROGRESS"!==a.tagName){a._value=i;var u=r(i)?"":String(i);ai(a,u)&&(a.value=u)}else if("innerHTML"===n&&io(a.tagName)&&r(a.innerHTML)){ri=ri||document.createElement("div"),ri.innerHTML=""+i+"";var f=ri.firstChild;while(a.firstChild)a.removeChild(a.firstChild);while(f.firstChild)a.appendChild(f.firstChild)}else if(i!==s[n])try{a[n]=i}catch($a){}}}}function ai(t,e){return!t.composing&&("OPTION"===t.tagName||si(t,e)||ci(t,e))}function si(t,e){var n=!0;try{n=document.activeElement!==t}catch($a){}return n&&t.value!==e}function ci(t,e){var n=t.value,r=t._vModifiers;if(o(r)){if(r.number)return v(n)!==v(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}var ui={create:ii,update:ii},fi=w((function(t){var e={},n=/;(?![^(]*\))/g,r=/:(.+)/;return t.split(n).forEach((function(t){if(t){var n=t.split(r);n.length>1&&(e[n[0].trim()]=n[1].trim())}})),e}));function li(t){var e=pi(t.style);return t.staticStyle?T(t.staticStyle,e):e}function pi(t){return Array.isArray(t)?R(t):"string"===typeof t?fi(t):t}function di(t,e){var n,r={};if(e){var o=t;while(o.componentInstance)o=o.componentInstance._vnode,o&&o.data&&(n=li(o.data))&&T(r,n)}(n=li(t.data))&&T(r,n);var i=t;while(i=i.parent)i.data&&(n=li(i.data))&&T(r,n);return r}var hi,vi=/^--/,yi=/\s*!important$/,mi=function(t,e,n){if(vi.test(e))t.style.setProperty(e,n);else if(yi.test(n))t.style.setProperty(k(e),n.replace(yi,""),"important");else{var r=_i(e);if(Array.isArray(n))for(var o=0,i=n.length;o-1?e.split(Ci).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function $i(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(Ci).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";while(n.indexOf(r)>=0)n=n.replace(r," ");n=n.trim(),n?t.setAttribute("class",n):t.removeAttribute("class")}}function Ai(t){if(t){if("object"===typeof t){var e={};return!1!==t.css&&T(e,ki(t.name||"v")),T(e,t),e}return"string"===typeof t?ki(t):void 0}}var ki=w((function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}})),Oi=G&&!et,Si="transition",Ei="animation",ji="transition",Ti="transitionend",Ri="animation",Pi="animationend";Oi&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(ji="WebkitTransition",Ti="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Ri="WebkitAnimation",Pi="webkitAnimationEnd"));var Ii=G?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function Li(t){Ii((function(){Ii(t)}))}function Ni(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),xi(t,e))}function Di(t,e){t._transitionClasses&&g(t._transitionClasses,e),$i(t,e)}function Mi(t,e,n){var r=Ui(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s=o===Si?Ti:Pi,c=0,u=function(){t.removeEventListener(s,f),n()},f=function(e){e.target===t&&++c>=a&&u()};setTimeout((function(){c0&&(n=Si,f=a,l=i.length):e===Ei?u>0&&(n=Ei,f=u,l=c.length):(f=Math.max(a,u),n=f>0?a>u?Si:Ei:null,l=n?n===Si?i.length:c.length:0);var p=n===Si&&Fi.test(r[ji+"Property"]);return{type:n,timeout:f,propCount:l,hasTransform:p}}function Vi(t,e){while(t.length1}function Ki(t,e){!0!==e.data.show&&Hi(e)}var Xi=G?{create:Ki,activate:Ki,remove:function(t,e){!0!==t.data.show?qi(t,e):e()}}:{},Ji=[zo,Xo,oi,ui,wi,Xi],Gi=Ji.concat(Vo),Qi=Po({nodeOps:Ao,modules:Gi});et&&document.addEventListener("selectionchange",(function(){var t=document.activeElement;t&&t.vmodel&&ia(t,"input")}));var Yi={inserted:function(t,e,n,r){"select"===n.tag?(r.elm&&!r.elm._vOptions?Ce(n,"postpatch",(function(){Yi.componentUpdated(t,e,n)})):Zi(t,e,n.context),t._vOptions=[].map.call(t.options,na)):("textarea"===n.tag||fo(t.type))&&(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("compositionstart",ra),t.addEventListener("compositionend",oa),t.addEventListener("change",oa),et&&(t.vmodel=!0)))},componentUpdated:function(t,e,n){if("select"===n.tag){Zi(t,e,n.context);var r=t._vOptions,o=t._vOptions=[].map.call(t.options,na);if(o.some((function(t,e){return!N(t,r[e])}))){var i=t.multiple?e.value.some((function(t){return ea(t,o)})):e.value!==e.oldValue&&ea(e.value,o);i&&ia(t,"change")}}}};function Zi(t,e,n){ta(t,e,n),(tt||nt)&&setTimeout((function(){ta(t,e,n)}),0)}function ta(t,e,n){var r=e.value,o=t.multiple;if(!o||Array.isArray(r)){for(var i,a,s=0,c=t.options.length;s-1,a.selected!==i&&(a.selected=i);else if(N(na(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function ea(t,e){return e.every((function(e){return!N(e,t)}))}function na(t){return"_value"in t?t._value:t.value}function ra(t){t.target.composing=!0}function oa(t){t.target.composing&&(t.target.composing=!1,ia(t.target,"input"))}function ia(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function aa(t){return!t.componentInstance||t.data&&t.data.transition?t:aa(t.componentInstance._vnode)}var sa={bind:function(t,e,n){var r=e.value;n=aa(n);var o=n.data&&n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&o?(n.data.show=!0,Hi(n,(function(){t.style.display=i}))):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value,o=e.oldValue;if(!r!==!o){n=aa(n);var i=n.data&&n.data.transition;i?(n.data.show=!0,r?Hi(n,(function(){t.style.display=t.__vOriginalDisplay})):qi(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none"}},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}},ca={model:Yi,show:sa},ua={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function fa(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?fa($n(e.children)):t}function la(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var i in o)e[x(i)]=o[i];return e}function pa(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}function da(t){while(t=t.parent)if(t.data.transition)return!0}function ha(t,e){return e.key===t.key&&e.tag===t.tag}var va=function(t){return t.tag||Ie(t)},ya=function(t){return"show"===t.name},ma={name:"transition",props:ua,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(va),n.length)){0;var r=this.mode;0;var o=n[0];if(da(this.$vnode))return o;var i=fa(o);if(!i)return o;if(this._leaving)return pa(t,o);var a="__transition-"+this._uid+"-";i.key=null==i.key?i.isComment?a+"comment":a+i.tag:s(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var c=(i.data||(i.data={})).transition=la(this),u=this._vnode,f=fa(u);if(i.data.directives&&i.data.directives.some(ya)&&(i.data.show=!0),f&&f.data&&!ha(i,f)&&!Ie(f)&&(!f.componentInstance||!f.componentInstance._vnode.isComment)){var l=f.data.transition=T({},c);if("out-in"===r)return this._leaving=!0,Ce(l,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),pa(t,o);if("in-out"===r){if(Ie(i))return u;var p,d=function(){p()};Ce(c,"afterEnter",d),Ce(c,"enterCancelled",d),Ce(l,"delayLeave",(function(t){p=t}))}}return o}}},ga=T({tag:String,moveClass:String},ua);delete ga.mode;var _a={props:ga,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=Rn(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=la(this),s=0;s=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}function j(t){return t.replace(/\/\//g,"/")}var T=Array.isArray||function(t){return"[object Array]"==Object.prototype.toString.call(t)},R=Q,P=M,I=F,L=B,N=G,D=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function M(t,e){var n,r=[],o=0,i=0,a="",s=e&&e.delimiter||"/";while(null!=(n=D.exec(t))){var c=n[0],u=n[1],f=n.index;if(a+=t.slice(i,f),i=f+c.length,u)a+=u[1];else{var l=t[i],p=n[2],d=n[3],h=n[4],v=n[5],y=n[6],m=n[7];a&&(r.push(a),a="");var g=null!=p&&null!=l&&l!==p,_="+"===y||"*"===y,b="?"===y||"*"===y,w=n[2]||s,C=h||v;r.push({name:d||o++,prefix:p||"",delimiter:w,optional:b,repeat:_,partial:g,asterisk:!!m,pattern:C?q(C):m?".*":"[^"+H(w)+"]+?"})}}return i1||!$.length)return 0===$.length?t():t("span",{},$)}if("a"===this.tag)x.on=w,x.attrs={href:c,"aria-current":g};else{var A=st(this.$slots.default);if(A){A.isStatic=!1;var k=A.data=o({},A.data);for(var O in k.on=k.on||{},k.on){var S=k.on[O];O in w&&(k.on[O]=Array.isArray(S)?S:[S])}for(var E in w)E in k.on?k.on[E].push(w[E]):k.on[E]=_;var j=A.data.attrs=o({},A.data.attrs);j.href=c,j["aria-current"]=g}else x.on=w}return t(this.tag,x,this.$slots.default)}};function at(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)&&!t.defaultPrevented&&(void 0===t.button||0===t.button)){if(t.currentTarget&&t.currentTarget.getAttribute){var e=t.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}function st(t){if(t)for(var e,n=0;n-1&&(s.params[l]=n.params[l]);return s.path=Z(u.path,s.params,'named route "'+c+'"'),p(u,s,a)}if(s.path){s.params={};for(var d=0;d=t.length?n():t[o]?e(t[o],(function(){r(o+1)})):r(o+1)};r(0)}var Ft={redirected:2,aborted:4,cancelled:8,duplicated:16};function Ut(t,e){return qt(t,e,Ft.redirected,'Redirected when going from "'+t.fullPath+'" to "'+Wt(e)+'" via a navigation guard.')}function Vt(t,e){var n=qt(t,e,Ft.duplicated,'Avoided redundant navigation to current location: "'+t.fullPath+'".');return n.name="NavigationDuplicated",n}function Bt(t,e){return qt(t,e,Ft.cancelled,'Navigation cancelled from "'+t.fullPath+'" to "'+e.fullPath+'" with a new navigation.')}function Ht(t,e){return qt(t,e,Ft.aborted,'Navigation aborted from "'+t.fullPath+'" to "'+e.fullPath+'" via a navigation guard.')}function qt(t,e,n,r){var o=new Error(r);return o._isRouter=!0,o.from=t,o.to=e,o.type=n,o}var zt=["params","query","hash"];function Wt(t){if("string"===typeof t)return t;if("path"in t)return t.path;var e={};return zt.forEach((function(n){n in t&&(e[n]=t[n])})),JSON.stringify(e,null,2)}function Kt(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function Xt(t,e){return Kt(t)&&t._isRouter&&(null==e||t.type===e)}function Jt(t){return function(e,n,r){var o=!1,i=0,a=null;Gt(t,(function(t,e,n,s){if("function"===typeof t&&void 0===t.cid){o=!0,i++;var c,u=te((function(e){Zt(e)&&(e=e.default),t.resolved="function"===typeof e?e:et.extend(e),n.components[s]=e,i--,i<=0&&r()})),f=te((function(t){var e="Failed to resolve async component "+s+": "+t;a||(a=Kt(t)?t:new Error(e),r(a))}));try{c=t(u,f)}catch(p){f(p)}if(c)if("function"===typeof c.then)c.then(u,f);else{var l=c.component;l&&"function"===typeof l.then&&l.then(u,f)}}})),o||r()}}function Gt(t,e){return Qt(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function Qt(t){return Array.prototype.concat.apply([],t)}var Yt="function"===typeof Symbol&&"symbol"===typeof Symbol.toStringTag;function Zt(t){return t.__esModule||Yt&&"Module"===t[Symbol.toStringTag]}function te(t){var e=!1;return function(){var n=[],r=arguments.length;while(r--)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var ee=function(t,e){this.router=t,this.base=ne(e),this.current=m,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function ne(t){if(!t)if(ut){var e=document.querySelector("base");t=e&&e.getAttribute("href")||"/",t=t.replace(/^https?:\/\/[^\/]+/,"")}else t="/";return"/"!==t.charAt(0)&&(t="/"+t),t.replace(/\/$/,"")}function re(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n0)){var e=this.router,n=e.options.scrollBehavior,r=Lt&&n;r&&this.listeners.push(xt());var o=function(){var n=t.current,o=pe(t.base);t.current===m&&o===t._startLocation||t.transitionTo(o,(function(t){r&&$t(e,t,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,n){var r=this,o=this,i=o.current;this.transitionTo(t,(function(t){Nt(j(r.base+t.fullPath)),$t(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this,i=o.current;this.transitionTo(t,(function(t){Dt(j(r.base+t.fullPath)),$t(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.ensureURL=function(t){if(pe(this.base)!==this.current.fullPath){var e=j(this.base+this.current.fullPath);t?Nt(e):Dt(e)}},e.prototype.getCurrentLocation=function(){return pe(this.base)},e}(ee);function pe(t){var e=window.location.pathname,n=e.toLowerCase(),r=t.toLowerCase();return!t||n!==r&&0!==n.indexOf(j(r+"/"))||(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var de=function(t){function e(e,n,r){t.call(this,e,n),r&&he(this.base)||ve()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router,n=e.options.scrollBehavior,r=Lt&&n;r&&this.listeners.push(xt());var o=function(){var e=t.current;ve()&&t.transitionTo(ye(),(function(n){r&&$t(t.router,n,e,!0),Lt||_e(n.fullPath)}))},i=Lt?"popstate":"hashchange";window.addEventListener(i,o),this.listeners.push((function(){window.removeEventListener(i,o)}))}},e.prototype.push=function(t,e,n){var r=this,o=this,i=o.current;this.transitionTo(t,(function(t){ge(t.fullPath),$t(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this,i=o.current;this.transitionTo(t,(function(t){_e(t.fullPath),$t(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;ye()!==e&&(t?ge(e):_e(e))},e.prototype.getCurrentLocation=function(){return ye()},e}(ee);function he(t){var e=pe(t);if(!/^\/#/.test(e))return window.location.replace(j(t+"/#"+e)),!0}function ve(){var t=ye();return"/"===t.charAt(0)||(_e("/"+t),!1)}function ye(){var t=window.location.href,e=t.indexOf("#");return e<0?"":(t=t.slice(e+1),t)}function me(t){var e=window.location.href,n=e.indexOf("#"),r=n>=0?e.slice(0,n):e;return r+"#"+t}function ge(t){Lt?Nt(me(t)):window.location.hash=t}function _e(t){Lt?Dt(me(t)):window.location.replace(me(t))}var be=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var t=e.current;e.index=n,e.updateRoute(r),e.router.afterHooks.forEach((function(e){e&&e(r,t)}))}),(function(t){Xt(t,Ft.duplicated)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(ee),we=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=ht(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!Lt&&!1!==t.fallback,this.fallback&&(e="hash"),ut||(e="abstract"),this.mode=e,e){case"history":this.history=new le(this,t.base);break;case"hash":this.history=new de(this,t.base,this.fallback);break;case"abstract":this.history=new be(this,t.base);break;default:0}},Ce={currentRoute:{configurable:!0}};function xe(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}function $e(t,e,n){var r="hash"===n?"#"+e:e;return t?j(t+"/"+r):r}we.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},Ce.currentRoute.get=function(){return this.history&&this.history.current},we.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()})),!this.app){this.app=t;var n=this.history;if(n instanceof le||n instanceof de){var r=function(t){var r=n.current,o=e.options.scrollBehavior,i=Lt&&o;i&&"fullPath"in t&&$t(e,t,r,!1)},o=function(t){n.setupListeners(),r(t)};n.transitionTo(n.getCurrentLocation(),o,o)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},we.prototype.beforeEach=function(t){return xe(this.beforeHooks,t)},we.prototype.beforeResolve=function(t){return xe(this.resolveHooks,t)},we.prototype.afterEach=function(t){return xe(this.afterHooks,t)},we.prototype.onReady=function(t,e){this.history.onReady(t,e)},we.prototype.onError=function(t){this.history.onError(t)},we.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!==typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},we.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!==typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},we.prototype.go=function(t){this.history.go(t)},we.prototype.back=function(){this.go(-1)},we.prototype.forward=function(){this.go(1)},we.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},we.prototype.resolve=function(t,e,n){e=e||this.history.current;var r=tt(t,e,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath,a=this.history.base,s=$e(a,i,this.mode);return{location:r,route:o,href:s,normalizedTo:r,resolved:o}},we.prototype.getRoutes=function(){return this.matcher.getRoutes()},we.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==m&&this.history.transitionTo(this.history.getCurrentLocation())},we.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==m&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(we.prototype,Ce),we.install=ct,we.version="3.5.2",we.isNavigationFailure=Xt,we.NavigationFailureType=Ft,we.START_LOCATION=m,ut&&window.Vue&&window.Vue.use(we),e["a"]=we},c8ba:function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"===typeof window&&(n=window)}t.exports=n}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/documentation-topic.b1a26a74.js b/Sources/Mockingbird.docc/Renderer/js/documentation-topic.b1a26a74.js deleted file mode 100644 index 48cd5292..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/documentation-topic.b1a26a74.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["documentation-topic"],{"0180":function(e,t,n){"use strict";n("8088")},"03dc":function(e,t,n){},"042f":function(e,t,n){},"0573":function(e,t,n){},"09db":function(e,t,n){"use strict";n("535f")},"0b72":function(e,t,n){},"0d16":function(e,t,n){"use strict";n("10da")},"10da":function(e,t,n){},"179d":function(e,t,n){"use strict";n("90de")},"1a47":function(e,t,n){"use strict";n("042f")},"1d1c":function(e,t,n){"use strict";n("57e3")},"1eff":function(e,t,n){"use strict";n("82d0")},"22f6":function(e,t,n){},"243c":function(e,t,n){"use strict";n("7010")},2521:function(e,t,n){},"252a":function(e,t,n){"use strict";n("8fed")},2822:function(e,t,n){"use strict";n("2521")},2995:function(e,t,n){"use strict";n("8498")},"2f04":function(e,t,n){},"2f87":function(e,t,n){"use strict";n("b0a0")},"374e":function(e,t,n){"use strict";n("0b72")},3825:function(e,t,n){},"395c":function(e,t,n){},"3b96":function(e,t,n){"use strict";var a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"curly-brackets-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M9.987 14h-0.814v-0.916h0.36c0.137 0 0.253-0.038 0.349-0.116 0.099-0.080 0.179-0.188 0.239-0.318 0.064-0.134 0.11-0.298 0.139-0.483 0.031-0.186 0.045-0.38 0.045-0.58v-2.115c0-0.417 0.046-0.781 0.139-1.083 0.092-0.3 0.2-0.554 0.322-0.754 0.127-0.203 0.246-0.353 0.366-0.458 0.087-0.076 0.155-0.131 0.207-0.169-0.052-0.037-0.12-0.093-0.207-0.167-0.12-0.105-0.239-0.255-0.366-0.459-0.122-0.2-0.23-0.453-0.322-0.754-0.093-0.3-0.139-0.665-0.139-1.082v-2.13c0-0.199-0.014-0.392-0.045-0.572-0.029-0.182-0.076-0.345-0.139-0.483-0.060-0.137-0.141-0.246-0.239-0.328-0.095-0.076-0.212-0.115-0.349-0.115h-0.36v-0.916h0.814c0.442 0 0.788 0.18 1.030 0.538 0.238 0.352 0.358 0.826 0.358 1.407v2.236c0 0.3 0.015 0.597 0.044 0.886 0.030 0.287 0.086 0.544 0.164 0.765 0.077 0.216 0.184 0.392 0.318 0.522 0.129 0.124 0.298 0.188 0.503 0.188h0.058v0.916h-0.058c-0.206 0-0.374 0.064-0.503 0.188-0.134 0.129-0.242 0.305-0.318 0.521-0.078 0.223-0.134 0.48-0.164 0.766-0.029 0.288-0.044 0.587-0.044 0.884v2.236c0 0.582-0.12 1.055-0.358 1.409-0.242 0.358-0.588 0.538-1.030 0.538z"}}),n("path",{attrs:{d:"M4.827 14h-0.814c-0.442 0-0.788-0.18-1.030-0.538-0.238-0.352-0.358-0.825-0.358-1.409v-2.221c0-0.301-0.015-0.599-0.045-0.886-0.029-0.287-0.085-0.544-0.163-0.764-0.077-0.216-0.184-0.393-0.318-0.522-0.131-0.127-0.296-0.188-0.503-0.188h-0.058v-0.916h0.058c0.208 0 0.373-0.063 0.503-0.188 0.135-0.129 0.242-0.304 0.318-0.522 0.078-0.22 0.134-0.477 0.163-0.765 0.030-0.286 0.045-0.585 0.045-0.886v-2.251c0-0.582 0.12-1.055 0.358-1.407 0.242-0.358 0.588-0.538 1.030-0.538h0.814v0.916h-0.36c-0.138 0-0.252 0.038-0.349 0.116-0.099 0.079-0.179 0.189-0.239 0.327-0.064 0.139-0.11 0.302-0.141 0.483-0.029 0.18-0.044 0.373-0.044 0.572v2.13c0 0.417-0.046 0.782-0.138 1.082-0.092 0.302-0.201 0.556-0.324 0.754-0.123 0.201-0.246 0.356-0.366 0.459-0.086 0.074-0.153 0.13-0.206 0.167 0.052 0.038 0.12 0.093 0.206 0.169 0.12 0.103 0.243 0.258 0.366 0.458s0.232 0.453 0.324 0.754c0.092 0.302 0.138 0.666 0.138 1.083v2.115c0 0.2 0.015 0.394 0.044 0.58 0.030 0.186 0.077 0.349 0.139 0.482 0.062 0.132 0.142 0.239 0.241 0.32 0.096 0.079 0.21 0.116 0.349 0.116h0.36z"}})])},r=[],s=n("be08"),i={name:"CurlyBracketsIcon",components:{SVGIcon:s["a"]}},o=i,c=n("2877"),l=Object(c["a"])(o,a,r,!1,null,null,null);t["a"]=l.exports},"3d27":function(e,t,n){"use strict";n("8a0a")},"3dca":function(e,t,n){"use strict";n("395c")},4340:function(e,t,n){"use strict";n("a378")},4966:function(e,t,n){"use strict";n("d1af")},"51be":function(e,t,n){},5245:function(e,t,n){"use strict";n("c47b")},"535f":function(e,t,n){},"54bb":function(e,t,n){"use strict";n("e2d5")},"57e3":function(e,t,n){},"61ca":function(e,t,n){"use strict";n("82be")},"64fc":function(e,t,n){},"66c9":function(e,t,n){"use strict";t["a"]={state:{codeColors:null},reset(){this.state.codeColors=null},updateCodeColors(e){const t=e=>e?`rgba(${e.red}, ${e.green}, ${e.blue}, ${e.alpha})`:null;this.state.codeColors=Object.entries(e).reduce((e,[n,a])=>({...e,[n]:t(a)}),{})}}},"67dc":function(e,t,n){"use strict";n("ba38")},"6c70":function(e,t,n){},"6e90":function(e,t,n){},7010:function(e,t,n){},"719b":function(e,t,n){"use strict";n("8b3c")},"76d4":function(e,t,n){"use strict";n("9b11")},"78d5":function(e,t,n){"use strict";n("c9f3")},8088:function(e,t,n){},"812f":function(e,t,n){"use strict";n("a396")},"813b":function(e,t,n){"use strict";n("0573")},"82be":function(e,t,n){},"82d0":function(e,t,n){},"83f0":function(e,t,n){},8427:function(e,t,n){},8498:function(e,t,n){},8590:function(e,t,n){"use strict";var a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{style:e.codeStyle},[e._t("default")],2)},r=[],s=n("66c9");const i=0,o=255;function c(e){const t=e.match(/rgba\((\d+),\s*(\d+),\s*(\d+),\s*(\d+\.?\d*|\.\d+)\s*\)/);if(!t)throw new Error("invalid rgba() input");const n=10;return{r:parseInt(t[1],n),g:parseInt(t[2],n),b:parseInt(t[3],n),a:parseFloat(t[4])}}function l(e){const{r:t,g:n,b:a}=c(e);return.2126*t+.7152*n+.0722*a}function u(e,t){const n=Math.round(o*t),a=c(e),{a:r}=a,[s,l,u]=[a.r,a.g,a.b].map(e=>Math.max(i,Math.min(o,e+n)));return`rgba(${s}, ${l}, ${u}, ${r})`}function d(e,t){return u(e,t)}function p(e,t){return u(e,-1*t)}var h={name:"CodeTheme",data(){return{codeThemeState:s["a"].state}},computed:{codeStyle(){const{codeColors:e}=this.codeThemeState;return e?{"--text":e.text,"--background":e.background,"--line-highlight":e.lineHighlight,"--url":e.commentURL,"--syntax-comment":e.comment,"--syntax-quote":e.comment,"--syntax-keyword":e.keyword,"--syntax-literal":e.keyword,"--syntax-selector-tag":e.keyword,"--syntax-string":e.stringLiteral,"--syntax-bullet":e.stringLiteral,"--syntax-meta":e.keyword,"--syntax-number":e.stringLiteral,"--syntax-symbol":e.stringLiteral,"--syntax-tag":e.stringLiteral,"--syntax-attr":e.typeAnnotation,"--syntax-built_in":e.typeAnnotation,"--syntax-builtin-name":e.typeAnnotation,"--syntax-class":e.typeAnnotation,"--syntax-params":e.typeAnnotation,"--syntax-section":e.typeAnnotation,"--syntax-title":e.typeAnnotation,"--syntax-type":e.typeAnnotation,"--syntax-attribute":e.keyword,"--syntax-identifier":e.text,"--syntax-subst":e.text,"--color-syntax-param-internal-name":this.internalParamNameColor}:null},internalParamNameColor(){const{background:e,text:t}=this.codeThemeState.codeColors;try{const n=l(e),a=n({"~0":"~","~1":"/"}[e]||e))}function*o(e){const t=1;if(e.lengtht)throw new Error("invalid array index "+e);return n}function*h(e,t,n={strict:!1}){let a=e;for(const r of o(t)){if(n.strict&&!Object.prototype.hasOwnProperty.call(a,r))throw new d(t);a=a[r],yield{node:a,token:r}}}function m(e,t){let n=e;for(const{node:a}of h(e,t,{strict:!0}))n=a;return n}function f(e,t,n){let a=null,r=e,s=null;for(const{node:o,token:c}of h(e,t))a=r,r=o,s=c;if(!a)throw new d(t);if(Array.isArray(a))try{const e=p(s,a);a.splice(e,0,n)}catch(i){throw new d(t)}else Object.assign(a,{[s]:n});return e}function y(e,t){let n=null,a=e,r=null;for(const{node:i,token:o}of h(e,t))n=a,a=i,r=o;if(!n)throw new d(t);if(Array.isArray(n))try{const e=p(r,n);n.splice(e,1)}catch(s){throw new d(t)}else{if(!a)throw new d(t);delete n[r]}return e}function g(e,t,n){return y(e,t),f(e,t,n),e}function b(e,t,n){const a=m(e,t);return y(e,t),f(e,n,a),e}function v(e,t,n){return f(e,n,m(e,t)),e}function C(e,t,n){function a(e,t){const n=typeof e,r=typeof t;if(n!==r)return!1;switch(n){case u:{const n=Object.keys(e),r=Object.keys(t);return n.length===r.length&&n.every((n,s)=>n===r[s]&&a(e[n],t[n]))}default:return e===t}}const r=m(e,t);if(!a(n,r))throw new Error("test failed");return e}const _={add:(e,{path:t,value:n})=>f(e,t,n),copy:(e,{from:t,path:n})=>v(e,t,n),move:(e,{from:t,path:n})=>b(e,t,n),remove:(e,{path:t})=>y(e,t),replace:(e,{path:t,value:n})=>g(e,t,n),test:(e,{path:t,value:n})=>C(e,t,n)};function T(e,{op:t,...n}){const a=_[t];if(!a)throw new Error("unknown operation");return a(e,n)}function k(e,t){return t.reduce(T,e)}var S=n("25a9"),x=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"doc-topic"},[e.isTargetIDE?e._e():n("Nav",{attrs:{title:e.title,diffAvailability:e.diffAvailability,interfaceLanguage:e.interfaceLanguage,objcPath:e.objcPath,swiftPath:e.swiftPath,parentTopicIdentifiers:e.parentTopicIdentifiers,isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta,currentTopicTags:e.tags}}),n("main",{staticClass:"main",attrs:{id:"main",role:"main",tabindex:"0"}},[e._t("above-title"),n("Title",{attrs:{eyebrow:e.roleHeading}},[e._v(e._s(e.title))]),n("div",{staticClass:"container content-grid",class:{"full-width":e.hideSummary}},[n("Description",{attrs:{hasOverview:e.hasOverview}},[e.abstract?n("Abstract",{attrs:{content:e.abstract}}):e._e(),e.isRequirement?n("RequirementMetadata",{attrs:{defaultImplementationsCount:e.defaultImplementationsCount}}):e._e(),e.deprecationSummary&&e.deprecationSummary.length?n("Aside",{attrs:{kind:"deprecated"}},[n("ContentNode",{attrs:{content:e.deprecationSummary}})],1):e._e(),e.downloadNotAvailableSummary&&e.downloadNotAvailableSummary.length?n("Aside",{attrs:{kind:"note"}},[n("ContentNode",{attrs:{content:e.downloadNotAvailableSummary}})],1):e._e(),e.sampleCodeDownload?n("DownloadButton",{attrs:{action:e.sampleCodeDownload.action}}):e._e()],1),e.hideSummary?e._e():n("Summary",[e.shouldShowLanguageSwitcher?n("LanguageSwitcher",{attrs:{interfaceLanguage:e.interfaceLanguage,objcPath:e.objcPath,swiftPath:e.swiftPath}}):e._e(),e.platforms?n("Availability",{attrs:{platforms:e.platforms}}):e._e(),e.modules?n("TechnologyList",{attrs:{technologies:e.modules}}):e._e(),e.extendsTechnology?n("TechnologyList",{staticClass:"extends-technology",attrs:{title:"Extends",technologies:[{name:e.extendsTechnology}]}}):e._e(),e.onThisPageSections.length>1?n("OnThisPageNav",{attrs:{sections:e.onThisPageSections}}):e._e()],1),e.primaryContentSections&&e.primaryContentSections.length?n("PrimaryContent",{attrs:{conformance:e.conformance,sections:e.primaryContentSections}}):e._e()],1),e.topicSections?n("Topics",{attrs:{sections:e.topicSections,isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta}}):e._e(),e.defaultImplementationsSections?n("DefaultImplementations",{attrs:{sections:e.defaultImplementationsSections,isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta}}):e._e(),e.relationshipsSections?n("Relationships",{attrs:{sections:e.relationshipsSections}}):e._e(),e.seeAlsoSections?n("SeeAlso",{attrs:{sections:e.seeAlsoSections}}):e._e(),!e.isTargetIDE&&e.hasBetaContent?n("BetaLegalText"):e._e()],2)],1)},O=[],j=n("8649"),P=n("d8ce"),A=n("6842"),B=n("e3ab"),w=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("NavBase",{staticClass:"documentation-nav",attrs:{breakpoint:e.BreakpointName.medium,hasOverlay:!1,hasSolidBackground:"",hasNoBorder:e.hasNoBorder,isDark:e.isDark,hasFullWidthBorder:"","aria-label":"API Reference"}},[n("template",{slot:"default"},[e._t("title",(function(){return[e.rootLink?n("router-link",{staticClass:"nav-title-link",attrs:{to:e.rootLink}},[e._v(" Documentation ")]):n("span",{staticClass:"nav-title-link inactive"},[e._v("Documentation")])]}),null,{rootLink:e.rootLink,linkClass:"nav-title-link",inactiveClass:"inactive"})],2),n("template",{slot:"tray"},[n("Hierarchy",{attrs:{currentTopicTitle:e.title,isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta,parentTopicIdentifiers:e.hierarchyItems,currentTopicTags:e.currentTopicTags}}),e._t("tray-after",null,null,{breadcrumbCount:e.breadcrumbCount})],2),n("template",{slot:"after-content"},[e._t("after-content")],2)],2)},q=[],D=n("cbcf"),I=n("63b8"),L=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("NavMenuItems",{staticClass:"hierarchy",class:{"has-badge":e.hasBadge},attrs:{"aria-label":"Breadcrumbs"}},[e._l(e.collapsibleItems,(function(t){return n("HierarchyItem",{key:t.title,attrs:{isCollapsed:e.shouldCollapseItems,url:e.addQueryParamsToUrl(t.url)}},[e._v(" "+e._s(t.title)+" ")])})),e.shouldCollapseItems?n("HierarchyCollapsedItems",{attrs:{topics:e.collapsibleItems}}):e._e(),e._l(e.nonCollapsibleItems,(function(t){return n("HierarchyItem",{key:t.title,attrs:{url:e.addQueryParamsToUrl(t.url)}},[e._v(" "+e._s(t.title)+" ")])})),n("HierarchyItem",[e._v(" "+e._s(e.currentTopicTitle)+" "),n("template",{slot:"tags"},[e.isSymbolDeprecated?n("Badge",{attrs:{variant:"deprecated"}}):e.isSymbolBeta?n("Badge",{attrs:{variant:"beta"}}):e._e(),e._l(e.currentTopicTags,(function(t){return n("Badge",{key:t.type+"-"+t.text,attrs:{variant:t.type}},[e._v(" "+e._s(t.text)+" ")])}))],2)],2)],2)},$=[],E=n("d26a"),M=n("9b30"),R=function(){var e,t=this,n=t.$createElement,a=t._self._c||n;return a("span",{staticClass:"badge",class:(e={},e["badge-"+t.variant]=t.variant,e),attrs:{role:"presentation"}},[t._t("default",(function(){return[t._v(t._s(t.text))]}))],2)},N=[];const V={beta:"Beta",deprecated:"Deprecated"};var H={name:"Badge",props:{variant:{type:String,default:()=>""}},computed:{text:({variant:e})=>V[e]}},z=H,W=(n("3d27"),n("2877")),G=Object(W["a"])(z,R,N,!1,null,"2bfc9463",null),K=G.exports,F=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("li",{staticClass:"hierarchy-collapsed-items"},[n("InlineChevronRightIcon",{staticClass:"hierarchy-item-icon icon-inline"}),n("button",{ref:"btn",staticClass:"toggle",class:{focused:!e.collapsed},on:{click:e.toggleCollapsed}},[n("span",{staticClass:"indicator"},[n("EllipsisIcon",{staticClass:"icon-inline toggle-icon"})],1)]),n("ul",{ref:"dropdown",staticClass:"dropdown",class:{collapsed:e.collapsed}},e._l(e.topicsWithUrls,(function(t){return n("li",{key:t.title,staticClass:"dropdown-item"},[n("router-link",{staticClass:"nav-menu-link",attrs:{to:t.url}},[e._v(e._s(t.title))])],1)})),0)],1)},U=[],Q=n("34b0"),J=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"ellipsis-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"m12.439 7.777v-1.554h-1.554v1.554zm-4.662 0v-1.554h-1.554v1.554zm-4.662 0v-1.554h-1.554v1.554z"}})])},X=[],Y=n("be08"),Z={name:"EllipsisIcon",components:{SVGIcon:Y["a"]}},ee=Z,te=Object(W["a"])(ee,J,X,!1,null,null,null),ne=te.exports,ae={name:"HierarchyCollapsedItems",components:{EllipsisIcon:ne,InlineChevronRightIcon:Q["a"]},data:()=>({collapsed:!0}),props:{topics:{type:Array,required:!0}},watch:{collapsed(e,t){t&&!e?document.addEventListener("click",this.handleDocumentClick,!1):!t&&e&&document.removeEventListener("click",this.handleDocumentClick,!1)}},beforeDestroy(){document.removeEventListener("click",this.handleDocumentClick,!1)},computed:{topicsWithUrls:({$route:e,topics:t})=>t.map(t=>({...t,url:Object(E["b"])(t.url,e.query)}))},methods:{handleDocumentClick(e){const{target:t}=e,{collapsed:n,$refs:{btn:a,dropdown:r}}=this,s=!a.contains(t)&&!r.contains(t);!n&&s&&(this.collapsed=!0)},toggleCollapsed(){this.collapsed=!this.collapsed}}},re=ae,se=(n("78d5"),Object(W["a"])(re,F,U,!1,null,"45c48d1a",null)),ie=se.exports,oe=function(e,t){var n=t._c;return n(t.$options.components.NavMenuItemBase,{tag:"component",staticClass:"hierarchy-item",class:{collapsed:t.props.isCollapsed}},[n(t.$options.components.InlineChevronRightIcon,{tag:"component",staticClass:"hierarchy-item-icon icon-inline"}),t.props.url?n("router-link",{staticClass:"parent item nav-menu-link",attrs:{to:t.props.url}},[t._t("default")],2):[n("span",{staticClass:"current item"},[t._t("default")],2),t._t("tags")]],2)},ce=[],le=n("863d"),ue={name:"HierarchyItem",components:{NavMenuItemBase:le["a"],InlineChevronRightIcon:Q["a"]},props:{isCollapsed:Boolean,url:{type:String,required:!1}}},de=ue,pe=(n("252a"),Object(W["a"])(de,oe,ce,!0,null,"57182fdb",null)),he=pe.exports;const me=3;var fe={name:"Hierarchy",components:{Badge:K,NavMenuItems:M["a"],HierarchyCollapsedItems:ie,HierarchyItem:he},inject:{references:{default:()=>({})}},props:{isSymbolDeprecated:Boolean,isSymbolBeta:Boolean,currentTopicTitle:{type:String,required:!0},parentTopicIdentifiers:{type:Array,default:()=>[]},currentTopicTags:{type:Array,default:()=>[]}},computed:{parentTopics(){return this.parentTopicIdentifiers.map(e=>{const{title:t,url:n}=this.references[e];return{title:t,url:n}})},shouldCollapseItems(){return this.parentTopics.length+1>me},collapsibleItems:({parentTopics:e})=>e.slice(0,-1),nonCollapsibleItems:({parentTopics:e})=>e.slice(-1),hasBadge:({isSymbolDeprecated:e,isSymbolBeta:t,currentTopicTags:n})=>e||t||n.length},methods:{addQueryParamsToUrl(e){return Object(E["b"])(e,this.$route.query)}}},ye=fe,ge=(n("b1e0"),Object(W["a"])(ye,L,$,!1,null,"20e91056",null)),be=ge.exports,ve={name:"DocumentationNav",components:{NavBase:D["a"],Hierarchy:be},props:{title:{type:String,required:!1},parentTopicIdentifiers:{type:Array,required:!1},isSymbolBeta:{type:Boolean,required:!1},isSymbolDeprecated:{type:Boolean,required:!1},isDark:{type:Boolean,default:!1},hasNoBorder:{type:Boolean,default:!1},currentTopicTags:{type:Array,required:!0}},inject:{references:{default:()=>({})}},computed:{BreakpointName:()=>I["b"],breadcrumbCount:({hierarchyItems:e})=>e.length+1,rootHierarchyReference:({parentTopicIdentifiers:e,references:t})=>t[e[0]]||{},isRootTechnologyLink:({rootHierarchyReference:{kind:e}})=>"technologies"===e,rootLink:({isRootTechnologyLink:e,rootHierarchyReference:t,$route:n})=>e?{path:t.url,query:n.query}:null,hierarchyItems:({parentTopicIdentifiers:e,isRootTechnologyLink:t})=>t?e.slice(1):e}},Ce=ve,_e=(n("243c"),Object(W["a"])(Ce,w,q,!1,null,"324c15b2",null)),Te=_e.exports,ke=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"betainfo"},[n("div",{staticClass:"betainfo-container"},[n("GridRow",[n("GridColumn",{attrs:{span:{large:8,medium:8,small:12},isCentered:{large:!0,medium:!0,small:!0}}},[n("p",{staticClass:"betainfo-label"},[e._v("Beta Software")]),n("div",{staticClass:"betainfo-content"},[e._t("content",(function(){return[n("p",[e._v("This documentation refers to beta software and may be changed.")])]}))],2),e._t("after")],2)],1)],1)])},Se=[],xe=n("0f00"),Oe=n("620a"),je={name:"BetaLegalText",components:{GridColumn:Oe["a"],GridRow:xe["a"]}},Pe=je,Ae=(n("99a2"),Object(W["a"])(Pe,ke,Se,!1,null,"4edf30f4",null)),Be=Ae.exports,we=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("Section",{staticClass:"language",attrs:{role:"complementary","aria-label":"Language"}},[n("Title",[e._v("Language")]),n("LanguageSwitcherLink",{staticClass:"language-option swift",class:{active:e.swift.active},attrs:{url:e.swift.active?null:e.swift.url},on:{click:function(t){return e.chooseLanguage(e.swift)}}},[e._v(e._s(e.swift.name))]),n("LanguageSwitcherLink",{staticClass:"language-option objc",class:{active:e.objc.active},attrs:{url:e.objc.active?null:e.objc.url},on:{click:function(t){return e.chooseLanguage(e.objc)}}},[e._v(e._s(e.objc.name))])],1)},qe=[],De=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.url?n("a",{attrs:{href:e.url},on:{click:function(t){return t.preventDefault(),e.$emit("click")}}},[e._t("default")],2):n("span",[e._t("default")],2)},Ie=[],Le={name:"LanguageSwitcherLink",props:{url:[String,Object]}},$e=Le,Ee=Object(W["a"])($e,De,Ie,!1,null,null,null),Me=Ee.exports,Re=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"summary-section"},[e._t("default")],2)},Ne=[],Ve={name:"Section"},He=Ve,ze=(n("c292"),Object(W["a"])(He,Re,Ne,!1,null,"6185a550",null)),We=ze.exports,Ge=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("p",{staticClass:"title"},[e._t("default")],2)},Ke=[],Fe={name:"Title"},Ue=Fe,Qe=(n("4966"),Object(W["a"])(Ue,Ge,Ke,!1,null,"b903be56",null)),Je=Qe.exports,Xe={name:"LanguageSwitcher",components:{LanguageSwitcherLink:Me,Section:We,Title:Je},inject:{isTargetIDE:{default:()=>!1},store:{default(){return{setPreferredLanguage(){}}}}},props:{interfaceLanguage:{type:String,required:!0},objcPath:{type:String,required:!0},swiftPath:{type:String,required:!0}},computed:{objc:({interfaceLanguage:e,normalizePath:t,objcPath:n,$route:{query:a}})=>({...j["a"].objectiveC,active:j["a"].objectiveC.key.api===e,url:Object(E["b"])(t(n),{...a,language:j["a"].objectiveC.key.url})}),swift:({interfaceLanguage:e,normalizePath:t,swiftPath:n,$route:{query:a}})=>({...j["a"].swift,active:j["a"].swift.key.api===e,url:Object(E["b"])(t(n),{...a,language:void 0})})},methods:{chooseLanguage(e){this.isTargetIDE||this.store.setPreferredLanguage(e.key.url),this.$router.push(e.url)},normalizePath(e){return e.startsWith("/")?e:"/"+e}}},Ye=Xe,Ze=(n("0180"),Object(W["a"])(Ye,we,qe,!1,null,"0836085b",null)),et=Ze.exports,tt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentNode",e._b({staticClass:"abstract"},"ContentNode",e.$props,!1))},nt=[],at=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("BaseContentNode",e._b({},"BaseContentNode",e.$props,!1))},rt=[],st=n("5677"),it={name:"ContentNode",components:{BaseContentNode:st["a"]},props:st["a"].props,methods:st["a"].methods,BlockType:st["a"].BlockType,InlineType:st["a"].InlineType},ot=it,ct=(n("c18a"),Object(W["a"])(ot,at,rt,!1,null,"002affcc",null)),lt=ct.exports,ut={name:"Abstract",components:{ContentNode:lt},props:lt.props},dt=ut,pt=(n("374e"),Object(W["a"])(dt,tt,nt,!1,null,"702ec04e",null)),ht=pt.exports,mt=n("c081"),ft=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("TopicsTable",{attrs:{anchor:"default-implementations",title:"Default Implementations",isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta,sections:e.sections,wrapTitle:!0}})},yt=[],gt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentTable",{attrs:{anchor:e.anchor,title:e.title}},e._l(e.sectionsWithTopics,(function(t){return n("ContentTableSection",{key:t.title,attrs:{title:t.title}},[e.wrapTitle?n("template",{slot:"title"},[n("WordBreak",{staticClass:"title",attrs:{tag:"h3"}},[e._v(" "+e._s(t.title)+" ")])],1):e._e(),t.abstract?n("template",{slot:"abstract"},[n("ContentNode",{attrs:{content:t.abstract}})],1):e._e(),t.discussion?n("template",{slot:"discussion"},[n("ContentNode",{attrs:{content:t.discussion.content}})],1):e._e(),e._l(t.topics,(function(t){return n("TopicsLinkBlock",{key:t.identifier,staticClass:"topic",attrs:{topic:t,isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta}})}))],2)})),1)},bt=[],vt=n("7b1f"),Ct=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("OnThisPageSection",{staticClass:"contenttable alt-light",attrs:{anchor:e.anchor,title:e.title}},[n("div",{staticClass:"container"},[n("h2",{staticClass:"title"},[e._v(e._s(e.title))]),e._t("default")],2)])},_t=[],Tt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("section",{attrs:{id:e.anchor}},[e._t("default")],2)},kt=[],St={name:"OnThisPageSection",inject:{store:{default(){return{addOnThisPageSection(){}}}}},props:{anchor:{type:String,required:!0},title:{type:String,required:!0}},created(){this.store.addOnThisPageSection({anchor:this.anchor,title:this.title})}},xt=St,Ot=Object(W["a"])(xt,Tt,kt,!1,null,null,null),jt=Ot.exports,Pt={name:"ContentTable",components:{OnThisPageSection:jt},props:{anchor:{type:String,required:!0},title:{type:String,required:!0}}},At=Pt,Bt=(n("61ca"),Object(W["a"])(At,Ct,_t,!1,null,"1a780186",null)),wt=Bt.exports,qt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("Row",{staticClass:"contenttable-section"},[n("Column",{staticClass:"section-title",attrs:{span:e.span.title}},[e._t("title",(function(){return[n("h3",{staticClass:"title"},[e._v(e._s(e.title))])]}))],2),n("Column",{staticClass:"section-content",attrs:{span:e.span.content}},[e._t("abstract"),e._t("discussion"),e._t("default")],2)],1)},Dt=[],It={name:"ContentTableSection",components:{Column:Oe["a"],Row:xe["a"]},props:{title:{type:String,required:!0}},computed:{span(){return{title:{large:3,medium:3,small:12},content:{large:9,medium:9,small:12}}}}},Lt=It,$t=(n("813b"),Object(W["a"])(Lt,qt,Dt,!1,null,"bedf02be",null)),Et=$t.exports,Mt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"link-block",class:e.linkBlockClasses},[n(e.linkComponent,e._b({ref:"apiChangesDiff",tag:"component",staticClass:"link",class:e.linkClasses},"component",e.linkProps,!1),[e.topic.role?n("TopicLinkBlockIcon",{attrs:{role:e.topic.role}}):e._e(),e.topic.fragments?n("DecoratedTopicTitle",{attrs:{tokens:e.topic.fragments}}):n("WordBreak",{attrs:{tag:e.titleTag}},[e._v(e._s(e.topic.title))]),e.change?n("span",{staticClass:"visuallyhidden"},[e._v("- "+e._s(e.changeName))]):e._e()],1),e.hasAbstractElements?n("div",{staticClass:"abstract"},[e.topic.abstract?n("ContentNode",{attrs:{content:e.topic.abstract}}):e._e(),e.topic.ideTitle?n("div",{staticClass:"topic-keyinfo"},[e.topic.titleStyle===e.titleStyles.title?[n("strong",[e._v("Key:")]),e._v(" "+e._s(e.topic.name)+" ")]:e.topic.titleStyle===e.titleStyles.symbol?[n("strong",[e._v("Name:")]),e._v(" "+e._s(e.topic.ideTitle)+" ")]:e._e()],2):e._e(),e.topic.required||e.topic.defaultImplementations?n("RequirementMetadata",{staticClass:"topic-required",attrs:{defaultImplementationsCount:e.topic.defaultImplementations}}):e._e(),e.topic.conformance?n("ConditionalConstraints",{attrs:{constraints:e.topic.conformance.constraints,prefix:e.topic.conformance.availabilityPrefix}}):e._e()],1):e._e(),e.showDeprecatedBadge?n("Badge",{attrs:{variant:"deprecated"}}):e.showBetaBadge?n("Badge",{attrs:{variant:"beta"}}):e._e(),e._l(e.tags,(function(t){return n("Badge",{key:t.type+"-"+t.text,attrs:{variant:t.type}},[e._v(" "+e._s(t.text)+" ")])}))],2)},Rt=[],Nt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.icon?n("div",{staticClass:"topic-icon-wrapper"},[n(e.icon,{tag:"component",staticClass:"topic-icon"})],1):e._e()},Vt=[],Ht=n("a9f1"),zt=n("3b96"),Wt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"api-reference-icon",attrs:{viewBox:"0 0 14 14"}},[n("title",[e._v("API Reference")]),n("path",{attrs:{d:"M13 1v12h-12v-12zM12 2h-10v10h10z"}}),n("path",{attrs:{d:"M3 4h8v1h-8z"}}),n("path",{attrs:{d:"M3 6.5h8v1h-8z"}}),n("path",{attrs:{d:"M3 9h8v1h-8z"}})])},Gt=[],Kt={name:"APIReferenceIcon",components:{SVGIcon:Y["a"]}},Ft=Kt,Ut=Object(W["a"])(Ft,Wt,Gt,!1,null,null,null),Qt=Ut.exports,Jt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{attrs:{viewBox:"0 0 14 14"}},[n("title",[e._v("Web Service Endpoint")]),n("path",{attrs:{d:"M4.052 8.737h-1.242l-1.878 5.263h1.15l0.364-1.081h1.939l0.339 1.081h1.193zM2.746 12.012l0.678-2.071 0.653 2.071z"}}),n("path",{attrs:{d:"M11.969 8.737h1.093v5.263h-1.093v-5.263z"}}),n("path",{attrs:{d:"M9.198 8.737h-2.295v5.263h1.095v-1.892h1.12c0.040 0.003 0.087 0.004 0.134 0.004 0.455 0 0.875-0.146 1.217-0.394l-0.006 0.004c0.296-0.293 0.48-0.699 0.48-1.148 0-0.060-0.003-0.118-0.010-0.176l0.001 0.007c0.003-0.039 0.005-0.085 0.005-0.131 0-0.442-0.183-0.842-0.476-1.128l-0-0c-0.317-0.256-0.724-0.41-1.168-0.41-0.034 0-0.069 0.001-0.102 0.003l0.005-0zM9.628 11.014c-0.15 0.118-0.341 0.188-0.548 0.188-0.020 0-0.040-0.001-0.060-0.002l0.003 0h-1.026v-1.549h1.026c0.017-0.001 0.037-0.002 0.058-0.002 0.206 0 0.396 0.066 0.551 0.178l-0.003-0.002c0.135 0.13 0.219 0.313 0.219 0.515 0 0.025-0.001 0.050-0.004 0.074l0-0.003c0.002 0.020 0.003 0.044 0.003 0.068 0 0.208-0.083 0.396-0.219 0.534l0-0z"}}),n("path",{attrs:{d:"M13.529 4.981c0-1.375-1.114-2.489-2.489-2.49h-0l-0.134 0.005c-0.526-1.466-1.903-2.496-3.522-2.496-0.892 0-1.711 0.313-2.353 0.835l0.007-0.005c-0.312-0.243-0.709-0.389-1.14-0.389-1.030 0-1.865 0.834-1.866 1.864v0c0 0.001 0 0.003 0 0.004 0 0.123 0.012 0.242 0.036 0.358l-0.002-0.012c-0.94 0.37-1.593 1.27-1.593 2.323 0 1.372 1.11 2.485 2.482 2.49h8.243c1.306-0.084 2.333-1.164 2.333-2.484 0-0.001 0-0.002 0-0.003v0zM11.139 6.535h-8.319c-0.799-0.072-1.421-0.739-1.421-1.551 0-0.659 0.41-1.223 0.988-1.45l0.011-0.004 0.734-0.28-0.148-0.776-0.012-0.082v-0.088c0-0 0-0.001 0-0.001 0-0.515 0.418-0.933 0.933-0.933 0.216 0 0.416 0.074 0.574 0.197l-0.002-0.002 0.584 0.453 0.575-0.467 0.169-0.127c0.442-0.306 0.991-0.489 1.581-0.489 1.211 0 2.243 0.769 2.633 1.846l0.006 0.019 0.226 0.642 0.814-0.023 0.131 0.006c0.805 0.067 1.432 0.736 1.432 1.552 0 0.836-0.659 1.518-1.486 1.556l-0.003 0z"}})])},Xt=[],Yt={name:"EndpointIcon",components:{SVGIcon:Y["a"]}},Zt=Yt,en=Object(W["a"])(Zt,Jt,Xt,!1,null,null,null),tn=en.exports,nn=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M0 0.948h2.8v2.8h-2.8z"}}),n("path",{attrs:{d:"M11.2 10.252h2.8v2.8h-2.8z"}}),n("path",{attrs:{d:"M6.533 1.852h0.933v10.267h-0.933z"}}),n("path",{attrs:{d:"M2.8 1.852h4.667v0.933h-4.667z"}}),n("path",{attrs:{d:"M6.533 11.186h4.667v0.933h-4.667z"}})])},an=[],rn={name:"PathIcon",components:{SVGIcon:Y["a"]}},sn=rn,on=Object(W["a"])(sn,nn,an,!1,null,null,null),cn=on.exports,ln=n("8d2d"),un=n("66cd");const dn={[un["a"].article]:Ht["a"],[un["a"].collectionGroup]:Qt,[un["a"].learn]:cn,[un["a"].overview]:cn,[un["a"].project]:ln["a"],[un["a"].tutorial]:ln["a"],[un["a"].resources]:cn,[un["a"].sampleCode]:zt["a"],[un["a"].restRequestSymbol]:tn};var pn,hn,mn,fn,yn,gn,bn,vn,Cn={props:{role:{type:String,required:!0}},computed:{icon:({role:e})=>dn[e]}},_n=Cn,Tn=(n("1a47"),Object(W["a"])(_n,Nt,Vt,!1,null,"4d1e7968",null)),kn=Tn.exports,Sn=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("code",{staticClass:"decorated-title"},e._l(e.tokens,(function(t,a){return n(e.componentFor(t),{key:a,tag:"component",class:[e.classFor(t),e.emptyTokenClass(t)]},[e._v(e._s(t.text))])})),1)},xn=[],On={name:"ChangedToken",render(e){const{kind:t,tokens:n}=this;return e("span",{class:["token-"+t,"token-changed"]},n.map(t=>e(Qn,{props:t})))},props:{kind:{type:String,required:!0},tokens:{type:Array,required:!0}}},jn=On,Pn=Object(W["a"])(jn,pn,hn,!1,null,null,null),An=Pn.exports,Bn={name:"RawText",render(e){const{_v:t=(t=>e("span",t)),text:n}=this;return t(n)},props:{text:{type:String,required:!0}}},wn=Bn,qn=Object(W["a"])(wn,mn,fn,!1,null,null,null),Dn=qn.exports,In={name:"SyntaxToken",render(e){return e("span",{class:"token-"+this.kind},this.text)},props:{kind:{type:String,required:!0},text:{type:String,required:!0}}},Ln=In,$n=Object(W["a"])(Ln,yn,gn,!1,null,null,null),En=$n.exports,Mn=n("86d8"),Rn={name:"TypeIdentifierLink",inject:{references:{default(){return{}}}},render(e){const t="type-identifier-link",n=this.references[this.identifier];return n&&n.url?e(Mn["a"],{class:t,props:{url:n.url,kind:n.kind,role:n.role}},this.$slots.default):e("span",{class:t},this.$slots.default)},props:{identifier:{type:String,required:!0,default:()=>""}}},Nn=Rn,Vn=Object(W["a"])(Nn,bn,vn,!1,null,null,null),Hn=Vn.exports;const zn={attribute:"attribute",externalParam:"externalParam",genericParameter:"genericParameter",identifier:"identifier",internalParam:"internalParam",keyword:"keyword",label:"label",number:"number",string:"string",text:"text",typeIdentifier:"typeIdentifier",added:"added",removed:"removed"};var Wn,Gn,Kn={name:"DeclarationToken",render(e){const{kind:t,text:n,tokens:a}=this;switch(t){case zn.text:{const t={text:n};return e(Dn,{props:t})}case zn.typeIdentifier:{const t={identifier:this.identifier};return e(Hn,{props:t},[e(vt["a"],n)])}case zn.added:case zn.removed:return e(An,{props:{tokens:a,kind:t}});default:{const a={kind:t,text:n};return e(En,{props:a})}}},constants:{TokenKind:zn},props:{kind:{type:String,required:!0},identifier:{type:String,required:!1},text:{type:String,required:!1},tokens:{type:Array,required:!1,default:()=>[]}}},Fn=Kn,Un=(n("c36f"),Object(W["a"])(Fn,Wn,Gn,!1,null,"5caf1b5b",null)),Qn=Un.exports;const{TokenKind:Jn}=Qn.constants,Xn={decorator:"decorator",identifier:"identifier",label:"label"};var Yn={name:"DecoratedTopicTitle",components:{WordBreak:vt["a"]},props:{tokens:{type:Array,required:!0,default:()=>[]}},constants:{TokenKind:Jn},methods:{emptyTokenClass:({text:e})=>({"empty-token":" "===e}),classFor({kind:e}){switch(e){case Jn.externalParam:case Jn.identifier:return Xn.identifier;case Jn.label:return Xn.label;default:return Xn.decorator}},componentFor(e){return/^\s+$/.test(e.text)?"span":vt["a"]}}},Zn=Yn,ea=(n("dcf6"),Object(W["a"])(Zn,Sn,xn,!1,null,"06ec7395",null)),ta=ea.exports,na=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentNode",{staticClass:"conditional-constraints",attrs:{content:e.content}})},aa=[],ra={name:"ConditionalConstraints",components:{ContentNode:lt},props:{constraints:lt.props.content,prefix:lt.props.content},computed:{content:({constraints:e,prefix:t,space:n})=>t.concat(n).concat(e),space:()=>({type:lt.InlineType.text,text:" "})}},sa=ra,ia=(n("918a"),Object(W["a"])(sa,na,aa,!1,null,"1548fd90",null)),oa=ia.exports,ca=function(e,t){var n=t._c;return n("p",{staticClass:"requirement-metadata",class:t.data.staticClass},[n("strong",[t._v("Required.")]),t.props.defaultImplementationsCount?[t._v(" Default implementation"+t._s(t.props.defaultImplementationsCount>1?"s":"")+" provided. ")]:t._e()],2)},la=[],ua={name:"RequirementMetadata",props:{defaultImplementationsCount:{type:Number,default:0}}},da=ua,pa=Object(W["a"])(da,ca,la,!0,null,null,null),ha=pa.exports;const ma={added:"added",modified:"modified",deprecated:"deprecated"},fa=(ma.modified,ma.added,ma.deprecated,{[ma.modified]:"Modified",[ma.added]:"Added",[ma.deprecated]:"Deprecated"}),ya="has-multiple-lines";function ga(e){if(!e)return!1;const t=window.getComputedStyle(e.$el||e),n=(e.$el||e).offsetHeight,a=t.lineHeight?parseFloat(t.lineHeight):1,r=t.paddingTop?parseFloat(t.paddingTop):0,s=t.paddingBottom?parseFloat(t.paddingBottom):0,i=t.borderTopWidth?parseFloat(t.borderTopWidth):0,o=t.borderBottomWidth?parseFloat(t.borderBottomWidth):0,c=n-(r+s+i+o),l=c/a;return l>=2}const ba="latest_",va={xcode:{value:"xcode",label:"Xcode"},other:{value:"other",label:"Other"}},Ca={constants:{multipleLinesClass:ya},data(){return{multipleLinesClass:ya}},computed:{hasMultipleLinesAfterAPIChanges:({change:e,changeType:t,$refs:n})=>!(!e&&!t)&&ga(n.apiChangesDiff)}},_a={methods:{toVersionRange({platform:e,versions:t}){return`${e} ${t[0]} – ${e} ${t[1]}`},toOptionValue:e=>`${ba}${e}`,toScope:e=>e.slice(ba.length,e.length),getOptionsForDiffAvailability(e={}){return this.getOptionsForDiffAvailabilities([e])},getOptionsForDiffAvailabilities(e=[]){const t=e.reduce((e,t={})=>Object.keys(t).reduce((e,n)=>({...e,[n]:(e[n]||[]).concat(t[n])}),e),{}),n=Object.keys(t),a=n.reduce((e,n)=>{const a=t[n];return{...e,[n]:a.find(e=>e.platform===va.xcode.label)||a[0]}},{}),r=e=>({label:this.toVersionRange(a[e]),value:this.toOptionValue(e),platform:a[e].platform}),{sdk:s,beta:i,minor:o,major:c,...l}=a,u=[].concat(s?r("sdk"):[]).concat(i?r("beta"):[]).concat(o?r("minor"):[]).concat(c?r("major"):[]).concat(Object.keys(l).map(r));return this.splitOptionsPerPlatform(u)},changesClassesFor(e,t){const n=this.changeFor(e,t);return this.getChangesClasses(n)},getChangesClasses:e=>({["changed changed-"+e]:!!e}),changeFor(e,t){const{change:n}=(t||{})[e]||{};return n},splitOptionsPerPlatform(e){return e.reduce((e,t)=>{const n=t.platform===va.xcode.label?va.xcode.value:va.other.value;return e[n].push(t),e},{[va.xcode.value]:[],[va.other.value]:[]})},getChangeName(e){return fa[e]}},computed:{availableOptions({diffAvailability:e={},toOptionValue:t}){return new Set(Object.keys(e).map(t))}}},Ta={article:"article",symbol:"symbol"},ka={title:"title",symbol:"symbol"},Sa={link:"link"};var xa={name:"TopicsLinkBlock",components:{Badge:K,WordBreak:vt["a"],ContentNode:lt,TopicLinkBlockIcon:kn,DecoratedTopicTitle:ta,RequirementMetadata:ha,ConditionalConstraints:oa},inject:["store"],mixins:[_a,Ca],constants:{ReferenceType:Sa,TopicKind:Ta,TitleStyles:ka},props:{isSymbolBeta:Boolean,isSymbolDeprecated:Boolean,topic:{type:Object,required:!0,validator:e=>(!("abstract"in e)||Array.isArray(e.abstract))&&"string"===typeof e.identifier&&(e.type===Sa.link&&!e.kind||"string"===typeof e.kind)&&(e.type===Sa.link&&!e.role||"string"===typeof e.role)&&"string"===typeof e.title&&"string"===typeof e.url&&(!("defaultImplementations"in e)||"number"===typeof e.defaultImplementations)&&(!("required"in e)||"boolean"===typeof e.required)&&(!("conformance"in e)||"object"===typeof e.conformance)}},data(){return{state:this.store.state}},computed:{linkComponent:({topic:e})=>e.type===Sa.link?"a":"router-link",linkProps({topic:e}){const t=Object(E["b"])(e.url,this.$route.query);return e.type===Sa.link?{href:t}:{to:t}},linkBlockClasses:({changesClasses:e,hasAbstractElements:t,hasMultipleLinesAfterAPIChanges:n,multipleLinesClass:a})=>({"has-inline-element":!t,[a]:n,...!t&&e}),linkClasses:({changesClasses:e,deprecated:t,hasAbstractElements:n})=>({deprecated:t,"has-adjacent-elements":n,...n&&e}),changesClasses:({getChangesClasses:e,change:t})=>e(t),titleTag({topic:e}){if(e.titleStyle===ka.title)return e.ideTitle?"span":"code";switch(e.kind){case Ta.symbol:return"code";default:return"span"}},titleStyles:()=>ka,deprecated:({showDeprecatedBadge:e,topic:t})=>e||t.deprecated,showBetaBadge:({topic:e,isSymbolBeta:t})=>Boolean(!t&&e.beta),showDeprecatedBadge:({topic:e,isSymbolDeprecated:t})=>Boolean(!t&&e.deprecated),change({topic:{identifier:e},state:{apiChanges:t}}){return this.changeFor(e,t)},changeName:({change:e,getChangeName:t})=>t(e),hasAbstractElements:({topic:{abstract:e,conformance:t,required:n,defaultImplementations:a}}={})=>e&&e.length>0||t||n||a,tags:({topic:e})=>(e.tags||[]).slice(0,1)}},Oa=xa,ja=(n("f6d7"),Object(W["a"])(Oa,Mt,Rt,!1,null,"1e5f16e7",null)),Pa=ja.exports,Aa={name:"TopicsTable",inject:{references:{default(){return{}}}},components:{WordBreak:vt["a"],ContentTable:wt,TopicsLinkBlock:Pa,ContentNode:lt,ContentTableSection:Et},props:{isSymbolDeprecated:Boolean,isSymbolBeta:Boolean,sections:{type:Array,required:!0},title:{type:String,required:!1,default(){return"Topics"}},anchor:{type:String,required:!1,default(){return"topics"}},wrapTitle:{type:Boolean,default:!1}},computed:{sectionsWithTopics(){return this.sections.map(e=>({...e,topics:e.identifiers.reduce((e,t)=>this.references[t]?e.concat(this.references[t]):e,[])}))}}},Ba=Aa,wa=(n("0d16"),Object(W["a"])(Ba,gt,bt,!1,null,"3e48ad3a",null)),qa=wa.exports,Da={name:"DefaultImplementations",components:{TopicsTable:qa},props:{isSymbolDeprecated:Boolean,isSymbolBeta:Boolean,sections:qa.props.sections}},Ia=Da,La=Object(W["a"])(Ia,ft,yt,!1,null,null,null),$a=La.exports,Ea=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"description"},[e.$slots.default||e.hasOverview?e._e():n("p",{staticClass:"nodocumentation"},[e._v(" No overview available. ")]),e._t("default")],2)},Ma=[],Ra={name:"Description",props:{hasOverview:{type:Boolean,default:()=>!1}}},Na=Ra,Va=(n("1eff"),Object(W["a"])(Na,Ea,Ma,!1,null,"3b0e7cbb",null)),Ha=Va.exports,za=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("Section",{staticClass:"technologies",attrs:{role:"complementary","aria-label":e.computedTitle}},[n("Title",[e._v(e._s(e.computedTitle))]),n("List",e._l(e.technologies,(function(t){return n("Item",{key:t.name},[n("WordBreak",{staticClass:"name"},[e._v(e._s(t.name))]),e._l(t.relatedModules||[],(function(t){return n("WordBreak",{key:t,staticClass:"name"},[e._v(e._s(t)+" ")])}))],2)})),1)],1)},Wa=[],Ga=n("002d"),Ka=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ul",{staticClass:"summary-list"},[e._t("default")],2)},Fa=[],Ua={name:"List"},Qa=Ua,Ja=(n("9cb2"),Object(W["a"])(Qa,Ka,Fa,!1,null,"731de2f2",null)),Xa=Ja.exports,Ya=function(){var e,t=this,n=t.$createElement,a=t._self._c||n;return a("li",{ref:"apiChangesDiff",staticClass:"summary-list-item",class:(e={},e[t.multipleLinesClass]=t.hasMultipleLinesAfterAPIChanges,e)},[t._t("default")],2)},Za=[],er={name:"ListItem",mixins:[Ca],props:{change:{type:Boolean,default:()=>!1}}},tr=er,nr=(n("67dc"),Object(W["a"])(tr,Ya,Za,!1,null,"1648b0ac",null)),ar=nr.exports,rr={name:"TechnologyList",components:{Item:ar,List:Xa,Section:We,Title:Je,WordBreak:vt["a"]},props:{technologies:{type:Array,required:!0},title:{type:String,required:!1}},computed:{computedTitle:({title:e,defaultTitle:t})=>e||t,defaultTitle:({technologies:e})=>Object(Ga["d"])({en:{one:"Technology",other:"Technologies"}},e.length)}},sr=rr,ir=(n("8c8d"),Object(W["a"])(sr,za,Wa,!1,null,"4616e162",null)),or=ir.exports,cr=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("Section",{staticClass:"on-this-page"},[n("nav",{attrs:{"aria-labelledby":"on-this-page-title"}},[n("Title",{attrs:{id:"on-this-page-title"}},[e._v("On This Page")]),n("List",e._l(e.sectionsWithFragments,(function(t){return n("ListItem",{key:t.anchor},[n("router-link",{staticClass:"link",attrs:{to:e.buildUrl(t.fragment,e.$route.query)}},[n("span",{staticClass:"link-text"},[e._v(e._s(t.title))]),n("span",{staticClass:"icon-holder",attrs:{"aria-hidden":"true"}},[e._v(" "),n("InlineChevronDownCircleIcon",{staticClass:"link-icon icon-inline"})],1)])],1)})),1)],1)])},lr=[],ur=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"inline-chevron-down-circle-icon",attrs:{viewBox:"0 0 14 14"}},[n("polygon",{attrs:{points:"10.1 4 11 4.7 7 10 3 4.7 3.9 4 7 8 10.1 4"}})])},dr=[],pr={name:"InlineChevronDownCircleIcon",components:{SVGIcon:Y["a"]}},hr=pr,mr=Object(W["a"])(hr,ur,dr,!1,null,null,null),fr=mr.exports,yr={name:"OnThisPageNav",components:{InlineChevronDownCircleIcon:fr,List:Xa,ListItem:ar,Section:We,Title:Je},props:{sections:{type:Array,required:!0}},computed:{sectionsWithFragments(){return this.sections.map(({anchor:e,title:t})=>({anchor:e,fragment:"#"+e,title:t}))}},methods:{buildUrl:E["b"]}},gr=yr,br=(n("5245"),Object(W["a"])(gr,cr,lr,!1,null,"7e43087c",null)),vr=br.exports,Cr=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"primary-content"},e._l(e.sections,(function(t,a){return n(e.componentFor(t),e._b({key:a,tag:"component"},"component",e.propsFor(t),!1))})),1)},_r=[],Tr=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("OnThisPageSection",{attrs:{anchor:"possibleValues",title:"PossibleValues"}},[n("h2",[e._v("Possible Values")]),n("dl",{staticClass:"datalist"},[e._l(e.values,(function(t){return[n("dt",{key:t.name+":name",staticClass:"param-name"},[n("WordBreak",{attrs:{tag:"code"}},[e._v(e._s(t.name))])],1),t.content?n("dd",{key:t.name+":content",staticClass:"value-content"},[n("ContentNode",{attrs:{content:t.content}})],1):e._e()]}))],2)])},kr=[],Sr={name:"PossibleValues",components:{ContentNode:st["a"],OnThisPageSection:jt,WordBreak:vt["a"]},props:{values:{type:Array,required:!0}}},xr=Sr,Or=(n("719b"),Object(W["a"])(xr,Tr,kr,!1,null,null,null)),jr=Or.exports,Pr=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("OnThisPageSection",{attrs:{anchor:e.anchor,title:e.title}},[n("h2",[e._v(e._s(e.title))]),n("DeclarationSource",{attrs:{tokens:e.tokens}})],1)},Ar=[],Br=function(){var e,t=this,n=t.$createElement,a=t._self._c||n;return a("pre",{ref:"declarationGroup",staticClass:"source",class:(e={indented:t.simpleIndent},e[t.multipleLinesClass]=t.hasMultipleLines,e)},[a("code",{ref:"code"},t._l(t.tokens,(function(e,n){return a("Token",t._b({key:n},"Token",t.propsFor(e),!1))})),1)])},wr=[];function qr(e){const t=e.getElementsByClassName("token-identifier");if(t.length<2)return;const n=e.textContent.indexOf(":")+1;for(let a=1;a=a.length)return;const r=e.textContent.indexOf("(");for(let s=n;sObject(Ga["a"])(e)}},Nr=Rr,Vr=Object(W["a"])(Nr,Pr,Ar,!1,null,null,null),Hr=Vr.exports,zr=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("OnThisPageSection",{staticClass:"declaration",attrs:{anchor:"declaration",title:"Declaration"}},[n("h2",[e._v("Declaration")]),e.hasModifiedChanges?[n("DeclarationDiff",{class:[e.changeClasses,e.multipleLinesClass],attrs:{changes:e.declarationChanges,changeType:e.changeType}})]:e._l(e.declarations,(function(t,a){return n("DeclarationGroup",{key:a,class:e.changeClasses,attrs:{declaration:t,shouldCaption:e.hasPlatformVariants,changeType:e.changeType}})})),e.conformance?n("ConditionalConstraints",{attrs:{constraints:e.conformance.constraints,prefix:e.conformance.availabilityPrefix}}):e._e()],2)},Wr=[],Gr=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{ref:"apiChangesDiff",staticClass:"declaration-group",class:e.classes},[e.shouldCaption?n("p",{staticClass:"platforms"},[n("strong",[e._v(e._s(e.caption))])]):e._e(),n("Source",{attrs:{tokens:e.declaration.tokens,"simple-indent":e.isSwift&&!e.isCocoaApi,"smart-indent":e.isCocoaApi,language:e.interfaceLanguage}})],1)},Kr=[],Fr={name:"DeclarationGroup",components:{Source:Mr},mixins:[Ca],inject:{languages:{default:()=>new Set},interfaceLanguage:{default:()=>j["a"].swift.key.api}},props:{declaration:{type:Object,required:!0},shouldCaption:{type:Boolean,default:!1},changeType:{type:String,required:!1}},computed:{classes:({changeType:e,multipleLinesClass:t,hasMultipleLinesAfterAPIChanges:n})=>({["declaration-group--changed declaration-group--"+e]:e,[t]:n}),caption(){return this.declaration.platforms.join(", ")},isSwift:({interfaceLanguage:e})=>e===j["a"].swift.key.api,isCocoaApi:({languages:e})=>e.has(j["a"].objectiveC.key.api)}},Ur=Fr,Qr=(n("1d1c"),Object(W["a"])(Ur,Gr,Kr,!1,null,"1dc256a6",null)),Jr=Qr.exports,Xr=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"declaration-diff"},[n("div",{staticClass:"declaration-diff-current"},[n("div",{staticClass:"declaration-diff-version"},[e._v("Current")]),e._l(e.currentDeclarations,(function(t,a){return n("DeclarationGroup",{key:a,attrs:{declaration:t,"should-caption":e.currentDeclarations.length>1,changeType:e.changeType}})}))],2),n("div",{staticClass:"declaration-diff-previous"},[n("div",{staticClass:"declaration-diff-version"},[e._v("Previous")]),e._l(e.previousDeclarations,(function(t,a){return n("DeclarationGroup",{key:a,attrs:{declaration:t,"should-caption":e.previousDeclarations.length>1,changeType:e.changeType}})}))],2)])},Yr=[],Zr={name:"DeclarationDiff",components:{DeclarationGroup:Jr},props:{changes:{type:Object,required:!0},changeType:{type:String,required:!0}},computed:{previousDeclarations:({changes:e})=>e.declaration.previous||[],currentDeclarations:({changes:e})=>e.declaration.new||[]}},es=Zr,ts=(n("3dca"),Object(W["a"])(es,Xr,Yr,!1,null,"676d8556",null)),ns=ts.exports,as={name:"Declaration",components:{DeclarationDiff:ns,DeclarationGroup:Jr,ConditionalConstraints:oa,OnThisPageSection:jt},constants:{ChangeTypes:ma,multipleLinesClass:ya},inject:["identifier","store"],data:({store:{state:e}})=>({state:e,multipleLinesClass:ya}),props:{conformance:{type:Object,required:!1},declarations:{type:Array,required:!0}},computed:{hasPlatformVariants(){return this.declarations.length>1},hasModifiedChanges({declarationChanges:e}){if(!e||!e.declaration)return!1;const t=e.declaration;return!(!(t.new||[]).length||!(t.previous||[]).length)},declarationChanges:({state:{apiChanges:e},identifier:t})=>e&&e[t],changeType:({declarationChanges:e,hasModifiedChanges:t})=>{if(!e)return;const n=e.declaration;return n?t?ma.modified:e.change:e.change===ma.added?ma.added:void 0},changeClasses:({changeType:e})=>({["changed changed-"+e]:e})}},rs=as,ss=(n("4340"),Object(W["a"])(rs,zr,Wr,!1,null,"e39c4ee4",null)),is=ss.exports,os=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("OnThisPageSection",{staticClass:"details",attrs:{anchor:"details",title:"Details"}},[n("h2",[e._v("Details")]),n("dl",[e.isSymbol?[n("dt",{key:e.details.name+":name",staticClass:"detail-type"},[e._v(" Name ")]),n("dd",{key:e.details.ideTitle+":content",staticClass:"detail-content"},[e._v(" "+e._s(e.details.ideTitle)+" ")])]:e._e(),e.isTitle?[n("dt",{key:e.details.name+":key",staticClass:"detail-type"},[e._v(" Key ")]),n("dd",{key:e.details.ideTitle+":content",staticClass:"detail-content"},[e._v(" "+e._s(e.details.name)+" ")])]:e._e(),n("dt",{key:e.details.name+":type",staticClass:"detail-type"},[e._v(" Type ")]),n("dd",{staticClass:"detail-content"},[n("PropertyListKeyType",{attrs:{types:e.details.value}})],1)],2)])},cs=[],ls=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"type"},[e._v(e._s(e.typeOutput))])},us=[],ds={name:"PropertyListKeyType",props:{types:{type:Array,required:!0}},computed:{englishTypes(){return this.types.map(({arrayMode:e,baseType:t="*"})=>e?"array of "+this.pluralizeKeyType(t):t)},typeOutput(){return this.englishTypes.length>2?[this.englishTypes.slice(0,this.englishTypes.length-1).join(", "),this.englishTypes[this.englishTypes.length-1]].join(", or "):this.englishTypes.join(" or ")}},methods:{pluralizeKeyType(e){switch(e){case"dictionary":return"dictionaries";case"array":case"number":case"string":return e+"s";default:return e}}}},ps=ds,hs=(n("f7c0"),Object(W["a"])(ps,ls,us,!1,null,"791bac44",null)),ms=hs.exports,fs={name:"PropertyListKeyDetails",components:{PropertyListKeyType:ms,OnThisPageSection:jt},props:{details:{type:Object,required:!0}},computed:{isTitle(){return"title"===this.details.titleStyle&&this.details.ideTitle},isSymbol(){return"symbol"===this.details.titleStyle&&this.details.ideTitle}}},ys=fs,gs=(n("a705"),Object(W["a"])(ys,os,cs,!1,null,"61ef551b",null)),bs=gs.exports,vs=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentNode",e._b({},"ContentNode",e.$props,!1))},Cs=[],_s={name:"GenericContent",inject:{store:{default(){return{addOnThisPageSection(){}}}}},components:{ContentNode:lt},props:lt.props,methods:{...lt.methods,addOnThisPageSections(){const{isTopLevelHeading:e,store:t}=this;this.forEach(n=>{e(n)&&t.addOnThisPageSection({anchor:n.anchor,title:n.text})})},isTopLevelHeading(e){const{level:t,type:n}=e;return n===lt.BlockType.heading&&2===t}},created(){this.addOnThisPageSections()}},Ts=_s,ks=Object(W["a"])(Ts,vs,Cs,!1,null,null,null),Ss=ks.exports,xs=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("OnThisPageSection",{staticClass:"parameters",attrs:{anchor:"parameters",title:"Parameters"}},[n("h2",[e._v("Parameters")]),n("dl",[e._l(e.parameters,(function(t){return[n("dt",{key:t.name+":name",staticClass:"param-name"},[n("code",[e._v(e._s(t.name))])]),n("dd",{key:t.name+":content",staticClass:"param-content"},[n("ContentNode",{attrs:{content:t.content}})],1)]}))],2)])},Os=[],js={name:"Parameters",components:{ContentNode:lt,OnThisPageSection:jt},props:{parameters:{type:Array,required:!0}}},Ps=js,As=(n("09db"),Object(W["a"])(Ps,xs,Os,!1,null,"7bb7c035",null)),Bs=As.exports,ws=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("OnThisPageSection",{attrs:{anchor:e.anchor,title:e.title}},[n("h2",[e._v(e._s(e.title))]),n("ParametersTable",{staticClass:"property-table",attrs:{parameters:e.properties,changes:e.propertyChanges},scopedSlots:e._u([{key:"symbol",fn:function(t){var a=t.name,r=t.type,s=t.content,i=t.changes,o=t.deprecated;return[n("div",{staticClass:"property-name",class:{deprecated:o}},[n("WordBreak",{attrs:{tag:"code"}},[e._v(e._s(a))])],1),e.shouldShiftType({name:a,content:s})?e._e():n("PossiblyChangedType",{attrs:{type:r,changes:i.type}})]}},{key:"description",fn:function(t){var a=t.name,r=t.type,s=t.attributes,i=t.content,o=t.required,c=t.changes,l=t.deprecated;return[e.shouldShiftType({name:a,content:i})?n("PossiblyChangedType",{attrs:{type:r,changes:c.type}}):e._e(),l?[n("Badge",{staticClass:"property-deprecated",attrs:{variant:"deprecated"}}),e._v("  ")]:e._e(),n("PossiblyChangedRequiredAttribute",{attrs:{required:o,changes:c.required}}),i?n("ContentNode",{attrs:{content:i}}):e._e(),n("ParameterAttributes",{attrs:{attributes:s,changes:c.attributes}})]}}])})],1)},qs=[],Ds={inject:["identifier","store"],data:({store:{state:e}})=>({state:e}),computed:{apiChanges:({state:{apiChanges:e},identifier:t})=>e&&e[t]}},Is=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"parameters-table"},e._l(e.parameters,(function(t){return n("Row",{key:t[e.keyBy],staticClass:"param",class:e.changedClasses(t[e.keyBy])},[n("Column",{staticClass:"param-symbol",attrs:{span:{large:3,small:12}}},[e._t("symbol",null,null,e.getProps(t,e.changes[t[e.keyBy]]))],2),n("Column",{staticClass:"param-content",attrs:{span:{large:9,small:12}}},[e._t("description",null,null,e.getProps(t,e.changes[t[e.keyBy]]))],2)],1)})),1)},Ls=[],$s={name:"ParametersTable",components:{Row:xe["a"],Column:Oe["a"]},props:{parameters:{type:Array,required:!0},changes:{type:Object,default:()=>({})},keyBy:{type:String,default:"name"}},methods:{getProps(e,t={}){return{...e,changes:t}},changedClasses(e){const{changes:t}=this,{change:n}=t[e]||{};return{["changed changed-"+n]:n}}}},Es=$s,Ms=(n("85b8"),Object(W["a"])(Es,Is,Ls,!1,null,"1455266b",null)),Rs=Ms.exports,Ns=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"parameter-attributes"},[e.shouldRender(e.AttributeKind.default)?n("ParameterMetaAttribute",e._b({scopedSlots:e._u([{key:"default",fn:function(t){var a=t.attribute;return[e._v(" "+e._s(a.title||"Default")+": "),n("code",[e._v(e._s(a.value))])]}}],null,!1,4247435012)},"ParameterMetaAttribute",{kind:e.AttributeKind.default,attributes:e.attributesObject,changes:e.changes},!1)):e._e(),e.shouldRender(e.AttributeKind.minimum)?n("ParameterMetaAttribute",e._b({scopedSlots:e._u([{key:"default",fn:function(t){var a=t.attribute;return[e._v(" "+e._s(a.title||"Minimum")+": "),n("code",[e._v(e._s(a.value))])]}}],null,!1,455861177)},"ParameterMetaAttribute",{kind:e.AttributeKind.minimum,attributes:e.attributesObject,changes:e.changes},!1)):e._e(),e.shouldRender(e.AttributeKind.minimumExclusive)?n("ParameterMetaAttribute",e._b({scopedSlots:e._u([{key:"default",fn:function(t){var a=t.attribute;return[e._v(" "+e._s(a.title||"Minimum")+": "),n("code",[e._v("> "+e._s(a.value))])]}}],null,!1,3844501612)},"ParameterMetaAttribute",{kind:e.AttributeKind.minimumExclusive,attributes:e.attributesObject,changes:e.changes},!1)):e._e(),e.shouldRender(e.AttributeKind.maximum)?n("ParameterMetaAttribute",e._b({scopedSlots:e._u([{key:"default",fn:function(t){var a=t.attribute;return[e._v(" "+e._s(a.title||"Maximum")+": "),n("code",[e._v(e._s(a.value))])]}}],null,!1,19641767)},"ParameterMetaAttribute",{kind:e.AttributeKind.maximum,attributes:e.attributesObject,changes:e.changes},!1)):e._e(),e.shouldRender(e.AttributeKind.maximumExclusive)?n("ParameterMetaAttribute",e._b({scopedSlots:e._u([{key:"default",fn:function(t){var a=t.attribute;return[e._v(" "+e._s(a.title||"Maximum")+": "),n("code",[e._v("< "+e._s(a.value))])]}}],null,!1,4289558576)},"ParameterMetaAttribute",{kind:e.AttributeKind.maximumExclusive,attributes:e.attributesObject,changes:e.changes},!1)):e._e(),e.shouldRender(e.AttributeKind.allowedTypes)?n("ParameterMetaAttribute",e._b({scopedSlots:e._u([{key:"default",fn:function(t){var a=t.attribute;return[e._v(" "+e._s(e.fallbackToValues(a).length>1?"Possible types":"Type")+": "),n("code",[e._l(e.fallbackToValues(a),(function(t,r){return[e._l(t,(function(t,s){return[n("DeclarationToken",e._b({key:r+"-"+s},"DeclarationToken",t,!1)),r+11?"Possible values":"Value")+": "),n("code",[e._v(e._s(e.fallbackToValues(a).join(", ")))])]}}],null,!1,1507632019)},"ParameterMetaAttribute",{kind:e.AttributeKind.allowedValues,attributes:e.attributesObject,changes:e.changes},!1)):e._e()],1)},Vs=[],Hs=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("RenderChanged",{attrs:{value:e.attributes[e.kind],changes:e.changes[e.kind]},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.value;return n("div",{staticClass:"property-metadata"},[e._t("default",null,{attribute:a})],2)}}],null,!0)})},zs=[];const Ws={added:"change-added",removed:"change-removed"};var Gs,Ks,Fs={name:"RenderChanged",constants:{ChangedClasses:Ws},props:{changes:{type:Object,default:()=>({new:null,previous:null})},value:{type:[Object,Array,String,Boolean],default:null},wrapChanges:{type:Boolean,default:!0},renderSingleChange:{type:Boolean,default:!1}},render(e){const{value:t,changes:n={},wrapChanges:a,renderSingleChange:r}=this,{new:s,previous:i}=n,o=(t,n)=>{const r=this.$scopedSlots.default({value:t});return n&&a?e("div",{class:n},[r]):r?r[0]:null};if(s||i){const t=o(s,Ws.added),n=o(i,Ws.removed);return r?s&&!i?t:n:e("div",{class:"property-changegroup"},[s?t:"",i?n:""])}return o(t)}},Us=Fs,Qs=Object(W["a"])(Us,Gs,Ks,!1,null,null,null),Js=Qs.exports,Xs={name:"ParameterMetaAttribute",components:{RenderChanged:Js},props:{kind:{type:String,required:!0},attributes:{type:Object,required:!0},changes:{type:Object,default:()=>({})}}},Ys=Xs,Zs=(n("2822"),Object(W["a"])(Ys,Hs,zs,!1,null,"8590589e",null)),ei=Zs.exports;const ti={allowedTypes:"allowedTypes",allowedValues:"allowedValues",default:"default",maximum:"maximum",maximumExclusive:"maximumExclusive",minimum:"minimum",minimumExclusive:"minimumExclusive"};var ni={name:"ParameterAttributes",components:{ParameterMetaAttribute:ei,DeclarationToken:Qn},constants:{AttributeKind:ti},props:{attributes:{type:Array,default:()=>[]},changes:{type:Object,default:()=>({})}},computed:{AttributeKind:()=>ti,attributesObject:({attributes:e})=>e.reduce((e,t)=>({...e,[t.kind]:t}),{})},methods:{shouldRender(e){return Object.prototype.hasOwnProperty.call(this.attributesObject,e)},fallbackToValues:e=>{const t=e||[];return Array.isArray(t)?t:t.values}}},ai=ni,ri=Object(W["a"])(ai,Ns,Vs,!1,null,null,null),si=ri.exports,ii=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("RenderChanged",{attrs:{renderSingleChange:"",value:e.required,changes:e.changes},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.value;return a?n("span",{staticClass:"property-required"},[e._v("(Required) ")]):e._e()}}],null,!0)})},oi=[],ci={name:"PossiblyChangedRequiredAttribute",components:{RenderChanged:Js},props:{required:{type:Boolean,default:!1},changes:{type:Object,required:!1}}},li=ci,ui=(n("98af"),Object(W["a"])(li,ii,oi,!1,null,null,null)),di=ui.exports,pi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("RenderChanged",{attrs:{value:e.type,wrapChanges:!1,changes:e.changes},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.value;return n("DeclarationTokenGroup",{staticClass:"property-metadata property-type",attrs:{type:e.getValues(a)}})}}])})},hi=[],mi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.type&&e.type.length?n("div",[n("code",e._l(e.type,(function(t,a){return n("DeclarationToken",e._b({key:a},"DeclarationToken",t,!1))})),1)]):e._e()},fi=[],yi={name:"DeclarationTokenGroup",components:{DeclarationToken:Qn},props:{type:{type:Array,default:()=>[],required:!1}}},gi=yi,bi=Object(W["a"])(gi,mi,fi,!1,null,null,null),vi=bi.exports,Ci={name:"PossiblyChangedType",components:{DeclarationTokenGroup:vi,RenderChanged:Js},props:{type:{type:Array,required:!0},changes:{type:Object,required:!1}},methods:{getValues(e){return Array.isArray(e)?e:e.values}}},_i=Ci,Ti=(n("2f87"),Object(W["a"])(_i,pi,hi,!1,null,"0a648a1e",null)),ki=Ti.exports,Si={name:"PropertyTable",mixins:[Ds],components:{Badge:K,WordBreak:vt["a"],PossiblyChangedRequiredAttribute:di,PossiblyChangedType:ki,ParameterAttributes:si,ContentNode:lt,OnThisPageSection:jt,ParametersTable:Rs},props:{title:{type:String,required:!0},properties:{type:Array,required:!0}},computed:{anchor:({title:e})=>Object(Ga["a"])(e),propertyChanges:({apiChanges:e})=>(e||{}).properties},methods:{shouldShiftType:({content:e=[],name:t})=>!e.length&&t}},xi=Si,Oi=(n("fde4"),Object(W["a"])(xi,ws,qs,!1,null,"387d76c0",null)),ji=Oi.exports,Pi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("OnThisPageSection",{attrs:{anchor:e.anchor,title:e.title}},[n("h2",[e._v(e._s(e.title))]),n("ParametersTable",{attrs:{parameters:[e.bodyParam],changes:e.bodyChanges,keyBy:"key"},scopedSlots:e._u([{key:"symbol",fn:function(t){var a=t.type,r=t.content,s=t.changes,i=t.name;return[e.shouldShiftType({name:i,content:r})?e._e():n("PossiblyChangedType",{attrs:{type:a,changes:s.type}})]}},{key:"description",fn:function(t){var a=t.name,r=t.content,s=t.mimeType,i=t.type,o=t.changes;return[e.shouldShiftType({name:a,content:r})?n("PossiblyChangedType",{attrs:{type:i,changes:o.type}}):e._e(),r?n("ContentNode",{attrs:{content:r}}):e._e(),s?n("PossiblyChangedMimetype",{attrs:{mimetype:s,changes:o.mimetype,change:o.change}}):e._e()]}}])}),e.parts.length?[n("h3",[e._v("Parts")]),n("ParametersTable",{staticClass:"parts",attrs:{parameters:e.parts,changes:e.partsChanges},scopedSlots:e._u([{key:"symbol",fn:function(t){var a=t.name,r=t.type,s=t.content,i=t.changes;return[n("div",{staticClass:"part-name"},[n("WordBreak",{attrs:{tag:"code"}},[e._v(e._s(a))])],1),s?n("PossiblyChangedType",{attrs:{type:r,changes:i.type}}):e._e()]}},{key:"description",fn:function(t){var a=t.content,r=t.mimeType,s=t.required,i=t.type,o=t.attributes,c=t.changes;return[n("div",[a?e._e():n("PossiblyChangedType",{attrs:{type:i,changes:c.type}}),n("PossiblyChangedRequiredAttribute",{attrs:{required:s,changes:c.required}}),a?n("ContentNode",{attrs:{content:a}}):e._e(),r?n("PossiblyChangedMimetype",{attrs:{mimetype:r,changes:c.mimetype,change:c.change}}):e._e(),n("ParameterAttributes",{attrs:{attributes:o,changes:c.attributes}})],1)]}}],null,!1,3752543529)})]:e._e()],2)},Ai=[],Bi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("RenderChanged",{attrs:{changes:e.changeValues,value:e.mimetype},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.value;return n("div",{staticClass:"response-mimetype"},[e._v("Content-Type: "+e._s(a))])}}])})},wi=[],qi={name:"PossiblyChangedMimetype",components:{RenderChanged:Js},props:{mimetype:{type:String,required:!0},changes:{type:[Object,String],required:!1},change:{type:String,required:!1}},computed:{changeValues({change:e,changes:t}){return e===ma.modified&&"string"!==typeof t?t:void 0}}},Di=qi,Ii=(n("a91f"),Object(W["a"])(Di,Bi,wi,!1,null,"2faa6020",null)),Li=Ii.exports;const $i="restRequestBody";var Ei={name:"RestBody",mixins:[Ds],components:{PossiblyChangedMimetype:Li,PossiblyChangedRequiredAttribute:di,PossiblyChangedType:ki,WordBreak:vt["a"],ParameterAttributes:si,ContentNode:lt,OnThisPageSection:jt,ParametersTable:Rs},constants:{ChangesKey:$i},props:{bodyContentType:{type:Array,required:!0},content:{type:Array},mimeType:{type:String,required:!0},parts:{type:Array,default:()=>[]},title:{type:String,required:!0}},computed:{anchor:({title:e})=>Object(Ga["a"])(e),bodyParam:({bodyContentType:e,content:t,mimeType:n})=>({key:$i,content:t,mimeType:n,type:e}),bodyChanges:({apiChanges:e})=>e||{},partsChanges:({bodyChanges:e})=>(e[$i]||{}).parts},methods:{shouldShiftType:({content:e=[],name:t})=>!e.length&&t}},Mi=Ei,Ri=(n("f8d9"),Object(W["a"])(Mi,Pi,Ai,!1,null,"458971c5",null)),Ni=Ri.exports,Vi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("OnThisPageSection",{attrs:{anchor:e.anchor,title:e.title}},[n("h2",[e._v(e._s(e.title))]),n("ParametersTable",{attrs:{parameters:e.parameters,changes:e.parameterChanges},scopedSlots:e._u([{key:"symbol",fn:function(t){var a=t.name,r=t.type,s=t.content,i=t.changes,o=t.deprecated;return[n("div",{staticClass:"param-name",class:{deprecated:o}},[n("WordBreak",{attrs:{tag:"code"}},[e._v(e._s(a))])],1),e.shouldShiftType({content:s,name:a})?e._e():n("PossiblyChangedType",{attrs:{type:r,changes:i.type}})]}},{key:"description",fn:function(t){var a=t.name,r=t.type,s=t.content,i=t.required,o=t.attributes,c=t.changes,l=t.deprecated;return[n("div",[e.shouldShiftType({content:s,name:a})?n("PossiblyChangedType",{attrs:{type:r,changes:c.type}}):e._e(),l?[n("Badge",{staticClass:"param-deprecated",attrs:{variant:"deprecated"}}),e._v("  ")]:e._e(),n("PossiblyChangedRequiredAttribute",{attrs:{required:i,changes:c.required}}),s?n("ContentNode",{attrs:{content:s}}):e._e(),n("ParameterAttributes",{attrs:{attributes:o,changes:c}})],2)]}}])})],1)},Hi=[],zi={name:"RestParameters",mixins:[Ds],components:{Badge:K,PossiblyChangedType:ki,PossiblyChangedRequiredAttribute:di,ParameterAttributes:si,WordBreak:vt["a"],ContentNode:lt,OnThisPageSection:jt,ParametersTable:Rs},props:{title:{type:String,required:!0},parameters:{type:Array,required:!0}},computed:{anchor:({title:e})=>Object(Ga["a"])(e),parameterChanges:({apiChanges:e})=>(e||{}).restParameters},methods:{shouldShiftType:({content:e=[],name:t})=>!e.length&&t}},Wi=zi,Gi=(n("76d4"),Object(W["a"])(Wi,Vi,Hi,!1,null,"74e7f790",null)),Ki=Gi.exports,Fi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("OnThisPageSection",{attrs:{anchor:e.anchor,title:e.title}},[n("h2",[e._v(e._s(e.title))]),n("ParametersTable",{attrs:{parameters:e.responses,changes:e.propertyChanges,"key-by":"status"},scopedSlots:e._u([{key:"symbol",fn:function(t){var a=t.status,r=t.type,s=t.reason,i=t.content,o=t.changes;return[n("div",{staticClass:"response-name"},[n("code",[e._v(" "+e._s(a)+" "),n("span",{staticClass:"reason"},[e._v(e._s(s))])])]),e.shouldShiftType({content:i,reason:s,status:a})?e._e():n("PossiblyChangedType",{attrs:{type:r,changes:o.type}})]}},{key:"description",fn:function(t){var a=t.content,r=t.mimetype,s=t.reason,i=t.type,o=t.status,c=t.changes;return[e.shouldShiftType({content:a,reason:s,status:o})?n("PossiblyChangedType",{attrs:{type:i,changes:c.type}}):e._e(),n("div",{staticClass:"response-reason"},[n("code",[e._v(e._s(s))])]),a?n("ContentNode",{attrs:{content:a}}):e._e(),r?n("PossiblyChangedMimetype",{attrs:{mimetype:r,changes:c.mimetype,change:c.change}}):e._e()]}}])})],1)},Ui=[],Qi={name:"RestResponses",mixins:[Ds],components:{PossiblyChangedMimetype:Li,PossiblyChangedType:ki,ContentNode:lt,OnThisPageSection:jt,ParametersTable:Rs},props:{title:{type:String,required:!0},responses:{type:Array,required:!0}},computed:{anchor:({title:e})=>Object(Ga["a"])(e),propertyChanges:({apiChanges:e})=>(e||{}).restResponses},methods:{shouldShiftType:({content:e=[],reason:t,status:n})=>!(e.length||t)&&n}},Ji=Qi,Xi=(n("e335"),Object(W["a"])(Ji,Fi,Ui,!1,null,"57796e8c",null)),Yi=Xi.exports;const Zi={content:"content",declarations:"declarations",details:"details",parameters:"parameters",possibleValues:"possibleValues",properties:"properties",restBody:"restBody",restCookies:"restCookies",restEndpoint:"restEndpoint",restHeaders:"restHeaders",restParameters:"restParameters",restResponses:"restResponses"};var eo={name:"PrimaryContent",components:{Declaration:is,GenericContent:Ss,Parameters:Bs,PropertyListKeyDetails:bs,PropertyTable:ji,RestBody:Ni,RestEndpoint:Hr,RestParameters:Ki,RestResponses:Yi,PossibleValues:jr},constants:{SectionKind:Zi},props:{conformance:{type:Object,required:!1},sections:{type:Array,required:!0,validator:e=>e.every(({kind:e})=>Object.prototype.hasOwnProperty.call(Zi,e))}},computed:{span(){return{large:9,medium:9,small:12}}},methods:{componentFor(e){return{[Zi.content]:Ss,[Zi.declarations]:is,[Zi.details]:bs,[Zi.parameters]:Bs,[Zi.properties]:ji,[Zi.restBody]:Ni,[Zi.restParameters]:Ki,[Zi.restHeaders]:Ki,[Zi.restCookies]:Ki,[Zi.restEndpoint]:Hr,[Zi.restResponses]:Yi,[Zi.possibleValues]:jr}[e.kind]},propsFor(e){const{conformance:t}=this,{bodyContentType:n,content:a,declarations:r,details:s,items:i,kind:o,mimeType:c,parameters:l,title:u,tokens:d,values:p}=e;return{[Zi.content]:{content:a},[Zi.declarations]:{conformance:t,declarations:r},[Zi.details]:{details:s},[Zi.parameters]:{parameters:l},[Zi.possibleValues]:{values:p},[Zi.properties]:{properties:i,title:u},[Zi.restBody]:{bodyContentType:n,content:a,mimeType:c,parts:l,title:u},[Zi.restCookies]:{parameters:i,title:u},[Zi.restEndpoint]:{tokens:d,title:u},[Zi.restHeaders]:{parameters:i,title:u},[Zi.restParameters]:{parameters:i,title:u},[Zi.restResponses]:{responses:i,title:u}}[o]}}},to=eo,no=(n("812f"),Object(W["a"])(to,Cr,_r,!1,null,"011bef72",null)),ao=no.exports,ro=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentTable",{attrs:{anchor:"relationships",title:"Relationships"}},e._l(e.sectionsWithSymbols,(function(e){return n("Section",{key:e.type,attrs:{title:e.title}},[n("List",{attrs:{symbols:e.symbols,type:e.type}})],1)})),1)},so=[],io=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ul",{ref:"apiChangesDiff",staticClass:"relationships-list",class:e.classes},e._l(e.symbols,(function(t){return n("li",{key:t.identifier,staticClass:"relationships-item"},[t.url?n("router-link",{staticClass:"link",attrs:{to:e.buildUrl(t.url,e.$route.query)}},[n("WordBreak",{attrs:{tag:"code"}},[e._v(e._s(t.title))])],1):n("WordBreak",{attrs:{tag:"code"}},[e._v(e._s(t.title))]),t.conformance?n("ConditionalConstraints",{attrs:{constraints:t.conformance.constraints,prefix:t.conformance.conformancePrefix}}):e._e()],1)})),0)},oo=[];const co=3,lo={conformsTo:"conformance",inheritsFrom:"inheritance",inheritedBy:"inheritedBy"};var uo={name:"RelationshipsList",components:{ConditionalConstraints:oa,WordBreak:vt["a"]},inject:["store","identifier"],mixins:[_a,Ca],props:{symbols:{type:Array,required:!0},type:{type:String,required:!0}},data(){return{state:this.store.state}},computed:{classes({changeType:e,multipleLinesClass:t,hasMultipleLinesAfterAPIChanges:n}){return[{inline:this.shouldDisplayInline,column:!this.shouldDisplayInline,["changed changed-"+e]:!!e,[t]:n}]},hasAvailabilityConstraints(){return this.symbols.some(e=>!!(e.conformance||{}).constraints)},changes({identifier:e,state:{apiChanges:t}}){return(t||{})[e]||{}},changeType({changes:e,type:t}){const n=lo[t];if(e.change!==ma.modified)return e.change;const a=e[n];if(!a)return;const r=(e,t)=>e.map((e,n)=>[e,t[n]]),s=r(a.previous,a.new).some(([e,t])=>e.content?0===e.content.length&&t.content.length>0:!!t.content);return s?ma.added:ma.modified},shouldDisplayInline(){const{hasAvailabilityConstraints:e,symbols:t}=this;return t.length<=co&&!e}},methods:{buildUrl:E["b"]}},po=uo,ho=(n("2995"),Object(W["a"])(po,io,oo,!1,null,"e4fe9834",null)),mo=ho.exports,fo={name:"Relationships",inject:{references:{default(){return{}}}},components:{ContentTable:wt,List:mo,Section:Et},props:{sections:{type:Array,required:!0}},computed:{sectionsWithSymbols(){return this.sections.map(e=>({...e,symbols:e.identifiers.reduce((e,t)=>this.references[t]?e.concat(this.references[t]):e,[])}))}}},yo=fo,go=Object(W["a"])(yo,ro,so,!1,null,null,null),bo=go.exports,vo=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("Section",{staticClass:"availability",attrs:{role:"complementary","aria-label":"Availability"}},[n("Title",[e._v("Availability")]),n("List",{staticClass:"platform-list"},e._l(e.platforms,(function(t){return n("Item",{key:t.name,staticClass:"platform",class:e.changesClassesFor(t.name),attrs:{change:!!e.changeFor(t.name)}},[n("AvailabilityRange",{attrs:{deprecatedAt:t.deprecatedAt,introducedAt:t.introducedAt,platformName:t.name}}),t.deprecatedAt?n("Badge",{attrs:{variant:"deprecated"}}):t.beta?n("Badge",{attrs:{variant:"beta"}}):e._e()],1)})),1)],1)},Co=[],_o=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("span",{attrs:{role:"text","aria-label":e.ariaLabel,title:e.description}},[e._v(" "+e._s(e.text)+" ")])},To=[],ko={name:"AvailabilityRange",props:{deprecatedAt:{type:String,required:!1},introducedAt:{type:String,required:!0},platformName:{type:String,required:!0}},computed:{ariaLabel(){const{deprecatedAt:e,description:t,text:n}=this;return[n].concat(e?"Deprecated":[]).concat(t).join(", ")},description(){const{deprecatedAt:e,introducedAt:t,platformName:n}=this;return e?`Introduced in ${n} ${t} and deprecated in ${n} ${e}`:`Available on ${n} ${t} and later`},text(){const{deprecatedAt:e,introducedAt:t,platformName:n}=this;return e?`${n} ${t}–${e}`:`${n} ${t}+`}}},So=ko,xo=Object(W["a"])(So,_o,To,!1,null,null,null),Oo=xo.exports,jo={name:"Availability",mixins:[_a],inject:["identifier","store"],components:{Badge:K,AvailabilityRange:Oo,Item:ar,List:Xa,Section:We,Title:Je},props:{platforms:{type:Array,required:!0}},data(){return{state:this.store.state}},methods:{changeFor(e){const{identifier:t,state:{apiChanges:n}}=this,{availability:a={}}=(n||{})[t]||{},r=a[e];if(r)return r.deprecated?ma.deprecated:r.introduced&&!r.introduced.previous?ma.added:ma.modified}}},Po=jo,Ao=(n("bc10"),Object(W["a"])(Po,vo,Co,!1,null,"0c59731a",null)),Bo=Ao.exports,wo=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("TopicsTable",{attrs:{anchor:"see-also",title:"See Also",isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta,sections:e.sections}})},qo=[],Do={name:"SeeAlso",components:{TopicsTable:qa},props:{isSymbolDeprecated:Boolean,isSymbolBeta:Boolean,sections:qa.props.sections}},Io=Do,Lo=Object(W["a"])(Io,wo,qo,!1,null,null,null),$o=Lo.exports,Eo=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"summary"},[e._t("default")],2)},Mo=[],Ro={name:"Summary"},No=Ro,Vo=(n("179d"),Object(W["a"])(No,Eo,Mo,!1,null,"19bd58b6",null)),Ho=Vo.exports,zo=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"topictitle"},[e.eyebrow?n("span",{staticClass:"eyebrow"},[e._v(e._s(e.eyebrow))]):e._e(),n("WordBreak",{staticClass:"title",attrs:{tag:"h1"}},[e._t("default")],2)],1)},Wo=[],Go={name:"Title",components:{WordBreak:vt["a"]},props:{eyebrow:{type:String,required:!1}}},Ko=Go,Fo=(n("54bb"),Object(W["a"])(Ko,zo,Wo,!1,null,"e1f00c5e",null)),Uo=Fo.exports,Qo=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("TopicsTable",{attrs:{anchor:"topics",title:"Topics",isSymbolDeprecated:e.isSymbolDeprecated,isSymbolBeta:e.isSymbolBeta,sections:e.sections}})},Jo=[],Xo={name:"Topics",components:{TopicsTable:qa},props:{isSymbolDeprecated:Boolean,isSymbolBeta:Boolean,sections:qa.props.sections}},Yo=Xo,Zo=Object(W["a"])(Yo,Qo,Jo,!1,null,null,null),ec=Zo.exports,tc={name:"DocumentationTopic",mixins:[P["a"]],inject:{isTargetIDE:{default(){return!1}},store:{default(){return{reset(){},state:{onThisPageSections:[]}}}}},components:{Abstract:ht,Aside:B["a"],BetaLegalText:Be,ContentNode:lt,DefaultImplementations:$a,Description:Ha,DownloadButton:mt["a"],TechnologyList:or,LanguageSwitcher:et,Nav:Te,OnThisPageNav:vr,PrimaryContent:ao,Relationships:bo,RequirementMetadata:ha,Availability:Bo,SeeAlso:$o,Summary:Ho,Title:Uo,Topics:ec},props:{abstract:{type:Array,required:!1},conformance:{type:Object,required:!1},defaultImplementationsSections:{type:Array,required:!1},downloadNotAvailableSummary:{type:Array,required:!1},deprecationSummary:{type:Array,required:!1},diffAvailability:{type:Object,required:!1},modules:{type:Array,required:!1},hierarchy:{type:Object,default:()=>({})},interfaceLanguage:{type:String,required:!0},identifier:{type:String,required:!0},isRequirement:{type:Boolean,default:()=>!1},platforms:{type:Array,required:!1},primaryContentSections:{type:Array,required:!1},references:{type:Object,required:!0},relationshipsSections:{type:Array,required:!1},roleHeading:{type:String,required:!1},title:{type:String,required:!0},topicSections:{type:Array,required:!1},sampleCodeDownload:{type:Object,required:!1},seeAlsoSections:{type:Array,required:!1},variants:{type:Array,default:()=>[]},extendsTechnology:{type:String},tags:{type:Array,required:!0}},provide(){return{references:this.references,identifier:this.identifier,languages:new Set(Object.keys(this.languagePaths)),interfaceLanguage:this.interfaceLanguage}},data(){return{topicState:this.store.state}},computed:{defaultImplementationsCount(){return(this.defaultImplementationsSections||[]).reduce((e,t)=>e+t.identifiers.length,0)},hasOverview:({primaryContentSections:e=[]})=>e.filter(e=>e.kind===ao.constants.SectionKind.content).length>0,languagePaths:({variants:e})=>e.reduce((e,t)=>t.traits.reduce((e,n)=>n.interfaceLanguage?{...e,[n.interfaceLanguage]:(e[n.interfaceLanguage]||[]).concat(t.paths)}:e,e),{}),objcPath:({languagePaths:{[j["a"].objectiveC.key.api]:[e]=[]}={}})=>e,swiftPath:({languagePaths:{[j["a"].swift.key.api]:[e]=[]}={}})=>e,onThisPageSections(){return this.topicState.onThisPageSections},isSymbolBeta:({platforms:e})=>e&&e.length&&e.every(e=>e.beta),hasBetaContent:({platforms:e})=>e&&e.length&&e.some(e=>e.beta),isSymbolDeprecated:({platforms:e,deprecationSummary:t})=>t&&t.length>0||e&&e.length&&e.every(e=>e.deprecatedAt),pageTitle:({title:e})=>e,parentTopicIdentifiers:({hierarchy:{paths:[e=[]]=[]}})=>e,shouldShowLanguageSwitcher:({objcPath:e,swiftPath:t})=>e&&t,hideSummary:()=>Object(A["c"])(["features","docs","summary","hide"],!1)},methods:{normalizePath(e){return e.startsWith("/")?e:"/"+e}},created(){if(this.topicState.preferredLanguage===j["a"].objectiveC.key.url&&this.interfaceLanguage!==j["a"].objectiveC.key.api&&this.objcPath&&this.$route.query.language!==j["a"].objectiveC.key.url){const{query:e}=this.$route;this.$nextTick().then(()=>{this.$router.replace({path:this.normalizePath(this.objcPath),query:{...e,language:j["a"].objectiveC.key.url}})})}this.store.reset()}},nc=tc,ac=(n("d85c"),Object(W["a"])(nc,x,O,!1,null,"134e8272",null)),rc=ac.exports,sc=n("2b0e");const ic=()=>({[ma.modified]:0,[ma.added]:0,[ma.deprecated]:0});var oc={state:{apiChanges:null,apiChangesCounts:ic()},setAPIChanges(e){this.state.apiChanges=e},resetApiChanges(){this.state.apiChanges=null,this.state.apiChangesCounts=ic()},async updateApiChangesCounts(){await sc["default"].nextTick(),Object.keys(this.state.apiChangesCounts).forEach(e=>{this.state.apiChangesCounts[e]=this.countChangeType(e)})},countChangeType(e){if(document&&document.querySelectorAll){const t=`.changed-${e}:not(.changed-total)`;return document.querySelectorAll(t).length}return 0}},cc=n("d369");const{state:lc,...uc}=oc;var dc={state:{onThisPageSections:[],preferredLanguage:cc["a"].preferredLanguage,...lc},reset(){this.state.onThisPageSections=[],this.state.preferredLanguage=cc["a"].preferredLanguage,this.resetApiChanges()},addOnThisPageSection(e){this.state.onThisPageSections.push(e)},setPreferredLanguage(e){this.state.preferredLanguage=e,cc["a"].preferredLanguage=this.state.preferredLanguage},...uc},pc=n("8590"),hc=n("66c9"),mc=n("bb52"),fc=n("146e"),yc={name:"DocumentationTopic",components:{Topic:rc,CodeTheme:pc["a"]},mixins:[mc["a"],fc["a"]],data(){return{topicDataDefault:null,topicDataObjc:null}},computed:{store(){return dc},objcOverrides:({topicData:e})=>{const{variantOverrides:t=[]}=e||{},n=({interfaceLanguage:e})=>e===j["a"].objectiveC.key.api,a=({traits:e})=>e.some(n),r=t.find(a);return r?r.patch:null},topicData:{get(){return this.topicDataObjc?this.topicDataObjc:this.topicDataDefault},set(e){this.topicDataDefault=e}},topicKey:({$route:e,topicProps:t})=>[e.path,t.interfaceLanguage].join(),topicProps(){const{abstract:e,defaultImplementationsSections:t,deprecationSummary:n,downloadNotAvailableSummary:a,diffAvailability:r,hierarchy:s,identifier:{interfaceLanguage:i,url:o},metadata:{extends:c,conformance:l,modules:u,platforms:d,required:p,roleHeading:h,title:m="",tags:f=[]}={},primaryContentSections:y,relationshipsSections:g,references:b={},sampleCodeDownload:v,topicSections:C,seeAlsoSections:_,variantOverrides:T,variants:k}=this.topicData;return{abstract:e,conformance:l,defaultImplementationsSections:t,deprecationSummary:n,downloadNotAvailableSummary:a,diffAvailability:r,hierarchy:s,identifier:o,interfaceLanguage:i,isRequirement:p,modules:u,platforms:d,primaryContentSections:y,relationshipsSections:g,references:b,roleHeading:h,sampleCodeDownload:v,title:m,topicSections:C,seeAlsoSections:_,variantOverrides:T,variants:k,extendsTechnology:c,tags:f.slice(0,1)}}},methods:{applyObjcOverrides(){this.topicDataObjc=k(Object(S["a"])(this.topicData),this.objcOverrides)},handleCodeColorsChange(e){hc["a"].updateCodeColors(e)}},mounted(){this.$bridge.on("contentUpdate",e=>{this.topicData=e}),this.$bridge.on("codeColors",this.handleCodeColorsChange),this.$bridge.send({type:"requestCodeColors"})},provide(){return{store:this.store}},beforeDestroy(){this.$bridge.off("codeColors",this.handleCodeColorsChange)},beforeRouteEnter(e,t,n){Object(S["b"])(e,t,n).then(t=>n(n=>{n.topicData=t,e.query.language===j["a"].objectiveC.key.url&&n.objcOverrides&&n.applyObjcOverrides()})).catch(n)},beforeRouteUpdate(e,t,n){e.path===t.path&&e.query.language===j["a"].objectiveC.key.url&&this.objcOverrides?(this.applyObjcOverrides(),n()):Object(S["c"])(e,t)?Object(S["b"])(e,t,n).then(t=>{this.topicDataObjc=null,this.topicData=t,e.query.language===j["a"].objectiveC.key.url&&this.objcOverrides&&this.applyObjcOverrides(),n()}).catch(n):n()},created(){this.store.reset()},watch:{topicData(){this.$nextTick(()=>{this.newContentMounted()})}}},gc=yc,bc=Object(W["a"])(gc,a,r,!1,null,null,null);t["default"]=bc.exports},f8bd:function(e,t,n){},f8d9:function(e,t,n){"use strict";n("83f0")},fca4:function(e,t,n){"use strict";n("b876")},fde4:function(e,t,n){"use strict";n("f5b1")}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/documentation-topic~topic~tutorials-overview.36db035f.js b/Sources/Mockingbird.docc/Renderer/js/documentation-topic~topic~tutorials-overview.36db035f.js deleted file mode 100644 index 23b42725..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/documentation-topic~topic~tutorials-overview.36db035f.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["documentation-topic~topic~tutorials-overview"],{"05a1":function(e,t,n){},"0f00":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"row"},[e._t("default")],2)},s=[],r={name:"GridRow"},a=r,o=(n("2224"),n("2877")),c=Object(o["a"])(a,i,s,!1,null,"be73599c",null);t["a"]=c.exports},1020:function(e,t){var n={exports:{}};function i(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach((function(t){var n=e[t];"object"!=typeof n||Object.isFrozen(n)||i(n)})),e}n.exports=i,n.exports.default=i;var s=n.exports;class r{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function a(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function o(e,...t){const n=Object.create(null);for(const i in e)n[i]=e[i];return t.forEach((function(e){for(const t in e)n[t]=e[t]})),n}const c="
",l=e=>!!e.kind,u=(e,{prefix:t})=>{if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map((e,t)=>`${e}${"_".repeat(t+1)}`)].join(" ")}return`${t}${e}`};class d{constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=a(e)}openNode(e){if(!l(e))return;let t=e.kind;t=e.sublanguage?"language-"+t:u(t,{prefix:this.classPrefix}),this.span(t)}closeNode(e){l(e)&&(this.buffer+=c)}value(){return this.buffer}span(e){this.buffer+=``}}class h{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const t={kind:e,children:[]};this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){while(this.closeNode());}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return"string"===typeof t?e.addText(t):t.children&&(e.openNode(t),t.children.forEach(t=>this._walk(e,t)),e.closeNode(t)),e}static _collapse(e){"string"!==typeof e&&e.children&&(e.children.every(e=>"string"===typeof e)?e.children=[e.children.join("")]:e.children.forEach(e=>{h._collapse(e)}))}}class p extends h{constructor(e){super(),this.options=e}addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())}addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){const e=new d(this,this.options);return e.value()}finalize(){return!0}}function g(e){return e?"string"===typeof e?e:e.source:null}function f(e){return v("(?=",e,")")}function m(e){return v("(?:",e,")*")}function b(e){return v("(?:",e,")?")}function v(...e){const t=e.map(e=>g(e)).join("");return t}function y(e){const t=e[e.length-1];return"object"===typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function w(...e){const t=y(e),n="("+(t.capture?"":"?:")+e.map(e=>g(e)).join("|")+")";return n}function x(e){return new RegExp(e.toString()+"|").exec("").length-1}function E(e,t){const n=e&&e.exec(t);return n&&0===n.index}const _=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function j(e,{joinWith:t}){let n=0;return e.map(e=>{n+=1;const t=n;let i=g(e),s="";while(i.length>0){const e=_.exec(i);if(!e){s+=i;break}s+=i.substring(0,e.index),i=i.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?s+="\\"+String(Number(e[1])+t):(s+=e[0],"("===e[0]&&n++)}return s}).map(e=>`(${e})`).join(t)}const k=/\b\B/,T="[a-zA-Z]\\w*",C="[a-zA-Z_]\\w*",S="\\b\\d+(\\.\\d+)?",O="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",N="\\b(0b[01]+)",L="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",I=(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=v(t,/.*\b/,e.binary,/\b.*/)),o({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},A={begin:"\\\\[\\s\\S]",relevance:0},B={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[A]},M={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[A]},$={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},R=function(e,t,n={}){const i=o({scope:"comment",begin:e,end:t,contains:[]},n);i.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const s=w("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return i.contains.push({begin:v(/[ ]+/,"(",s,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),i},D=R("//","$"),P=R("/\\*","\\*/"),F=R("#","$"),H={scope:"number",begin:S,relevance:0},q={scope:"number",begin:O,relevance:0},V={scope:"number",begin:N,relevance:0},U={begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[A,{begin:/\[/,end:/\]/,relevance:0,contains:[A]}]}]},z={scope:"title",begin:T,relevance:0},G={scope:"title",begin:C,relevance:0},W={begin:"\\.\\s*"+C,relevance:0},K=function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})};var Y=Object.freeze({__proto__:null,MATCH_NOTHING_RE:k,IDENT_RE:T,UNDERSCORE_IDENT_RE:C,NUMBER_RE:S,C_NUMBER_RE:O,BINARY_NUMBER_RE:N,RE_STARTERS_RE:L,SHEBANG:I,BACKSLASH_ESCAPE:A,APOS_STRING_MODE:B,QUOTE_STRING_MODE:M,PHRASAL_WORDS_MODE:$,COMMENT:R,C_LINE_COMMENT_MODE:D,C_BLOCK_COMMENT_MODE:P,HASH_COMMENT_MODE:F,NUMBER_MODE:H,C_NUMBER_MODE:q,BINARY_NUMBER_MODE:V,REGEXP_MODE:U,TITLE_MODE:z,UNDERSCORE_TITLE_MODE:G,METHOD_GUARD:W,END_SAME_AS_BEGIN:K});function X(e,t){const n=e.input[e.index-1];"."===n&&t.ignoreMatch()}function Z(e,t){void 0!==e.className&&(e.scope=e.className,delete e.className)}function J(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=X,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,void 0===e.relevance&&(e.relevance=0))}function Q(e,t){Array.isArray(e.illegal)&&(e.illegal=w(...e.illegal))}function ee(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function te(e,t){void 0===e.relevance&&(e.relevance=1)}const ne=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach(t=>{delete e[t]}),e.keywords=n.keywords,e.begin=v(n.beforeMatch,f(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},ie=["of","and","for","in","not","or","if","then","parent","list","value"],se="keyword";function re(e,t,n=se){const i=Object.create(null);return"string"===typeof e?s(n,e.split(" ")):Array.isArray(e)?s(n,e):Object.keys(e).forEach((function(n){Object.assign(i,re(e[n],t,n))})),i;function s(e,n){t&&(n=n.map(e=>e.toLowerCase())),n.forEach((function(t){const n=t.split("|");i[n[0]]=[e,ae(n[0],n[1])]}))}}function ae(e,t){return t?Number(t):oe(e)?0:1}function oe(e){return ie.includes(e.toLowerCase())}const ce={},le=e=>{console.error(e)},ue=(e,...t)=>{console.log("WARN: "+e,...t)},de=(e,t)=>{ce[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),ce[`${e}/${t}`]=!0)},he=new Error;function pe(e,t,{key:n}){let i=0;const s=e[n],r={},a={};for(let o=1;o<=t.length;o++)a[o+i]=s[o],r[o+i]=!0,i+=x(t[o-1]);e[n]=a,e[n]._emit=r,e[n]._multi=!0}function ge(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw le("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),he;if("object"!==typeof e.beginScope||null===e.beginScope)throw le("beginScope must be object"),he;pe(e,e.begin,{key:"beginScope"}),e.begin=j(e.begin,{joinWith:""})}}function fe(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw le("skip, excludeEnd, returnEnd not compatible with endScope: {}"),he;if("object"!==typeof e.endScope||null===e.endScope)throw le("endScope must be object"),he;pe(e,e.end,{key:"endScope"}),e.end=j(e.end,{joinWith:""})}}function me(e){e.scope&&"object"===typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,delete e.scope)}function be(e){me(e),"string"===typeof e.beginScope&&(e.beginScope={_wrap:e.beginScope}),"string"===typeof e.endScope&&(e.endScope={_wrap:e.endScope}),ge(e),fe(e)}function ve(e){function t(t,n){return new RegExp(g(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,t){t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),this.matchAt+=x(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const e=this.regexes.map(e=>e[1]);this.matcherRe=t(j(e,{joinWith:"|"}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e);if(!t)return null;const n=t.findIndex((e,t)=>t>0&&void 0!==e),i=this.matchIndexes[n];return t.splice(0,n),Object.assign(t,i)}}class i{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n;return this.rules.slice(e).forEach(([e,n])=>t.addRule(e,n)),t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex;let n=t.exec(e);if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}return n&&(this.regexIndex+=n.position+1,this.regexIndex===this.count&&this.considerAll()),n}}function s(e){const t=new i;return e.contains.forEach(e=>t.addRule(e.begin,{rule:e,type:"begin"})),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t}function r(n,i){const a=n;if(n.isCompiled)return a;[Z,ee,be,ne].forEach(e=>e(n,i)),e.compilerExtensions.forEach(e=>e(n,i)),n.__beforeBegin=null,[J,Q,te].forEach(e=>e(n,i)),n.isCompiled=!0;let o=null;return"object"===typeof n.keywords&&n.keywords.$pattern&&(n.keywords=Object.assign({},n.keywords),o=n.keywords.$pattern,delete n.keywords.$pattern),o=o||/\w+/,n.keywords&&(n.keywords=re(n.keywords,e.case_insensitive)),a.keywordPatternRe=t(o,!0),i&&(n.begin||(n.begin=/\B|\b/),a.beginRe=t(a.begin),n.end||n.endsWithParent||(n.end=/\B|\b/),n.end&&(a.endRe=t(a.end)),a.terminatorEnd=g(a.end)||"",n.endsWithParent&&i.terminatorEnd&&(a.terminatorEnd+=(n.end?"|":"")+i.terminatorEnd)),n.illegal&&(a.illegalRe=t(n.illegal)),n.contains||(n.contains=[]),n.contains=[].concat(...n.contains.map((function(e){return we("self"===e?n:e)}))),n.contains.forEach((function(e){r(e,a)})),n.starts&&r(n.starts,i),a.matcher=s(a),a}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=o(e.classNameAliases||{}),r(e)}function ye(e){return!!e&&(e.endsWithParent||ye(e.starts))}function we(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((function(t){return o(e,{variants:null},t)}))),e.cachedVariants?e.cachedVariants:ye(e)?o(e,{starts:e.starts?o(e.starts):null}):Object.isFrozen(e)?o(e):e}var xe="11.3.1";class Ee extends Error{constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}}const _e=a,je=o,ke=Symbol("nomatch"),Te=7,Ce=function(e){const t=Object.create(null),n=Object.create(null),i=[];let a=!0;const o="Could not find the language '{}', did you forget to load/include a language module?",c={disableAutodetect:!0,name:"Plain text",contains:[]};let l={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:p};function u(e){return l.noHighlightRe.test(e)}function d(e){let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"";const n=l.languageDetectRe.exec(t);if(n){const t=B(n[1]);return t||(ue(o.replace("{}",n[1])),ue("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}return t.split(/\s+/).find(e=>u(e)||B(e))}function h(e,t,n){let i="",s="";"object"===typeof t?(i=e,n=t.ignoreIllegals,s=t.language):(de("10.7.0","highlight(lang, code, ...args) has been deprecated."),de("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),s=e,i=t),void 0===n&&(n=!0);const r={code:i,language:s};P("before:highlight",r);const a=r.result?r.result:g(r.language,r.code,n);return a.code=r.code,P("after:highlight",a),a}function g(e,n,i,s){const c=Object.create(null);function u(e,t){return e.keywords[t]}function d(){if(!O.keywords)return void L.addText(I);let e=0;O.keywordPatternRe.lastIndex=0;let t=O.keywordPatternRe.exec(I),n="";while(t){n+=I.substring(e,t.index);const i=T.case_insensitive?t[0].toLowerCase():t[0],s=u(O,i);if(s){const[e,r]=s;if(L.addText(n),n="",c[i]=(c[i]||0)+1,c[i]<=Te&&(A+=r),e.startsWith("_"))n+=t[0];else{const n=T.classNameAliases[e]||e;L.addKeyword(t[0],n)}}else n+=t[0];e=O.keywordPatternRe.lastIndex,t=O.keywordPatternRe.exec(I)}n+=I.substr(e),L.addText(n)}function h(){if(""===I)return;let e=null;if("string"===typeof O.subLanguage){if(!t[O.subLanguage])return void L.addText(I);e=g(O.subLanguage,I,!0,N[O.subLanguage]),N[O.subLanguage]=e._top}else e=x(I,O.subLanguage.length?O.subLanguage:null);O.relevance>0&&(A+=e.relevance),L.addSublanguage(e._emitter,e.language)}function p(){null!=O.subLanguage?h():d(),I=""}function f(e,t){let n=1;while(void 0!==t[n]){if(!e._emit[n]){n++;continue}const i=T.classNameAliases[e[n]]||e[n],s=t[n];i?L.addKeyword(s,i):(I=s,d(),I=""),n++}}function m(e,t){return e.scope&&"string"===typeof e.scope&&L.openNode(T.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(L.addKeyword(I,T.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),I=""):e.beginScope._multi&&(f(e.beginScope,t),I="")),O=Object.create(e,{parent:{value:O}}),O}function b(e,t,n){let i=E(e.endRe,n);if(i){if(e["on:end"]){const n=new r(e);e["on:end"](t,n),n.isMatchIgnored&&(i=!1)}if(i){while(e.endsParent&&e.parent)e=e.parent;return e}}if(e.endsWithParent)return b(e.parent,t,n)}function v(e){return 0===O.matcher.regexIndex?(I+=e[0],1):(R=!0,0)}function y(e){const t=e[0],n=e.rule,i=new r(n),s=[n.__beforeBegin,n["on:begin"]];for(const r of s)if(r&&(r(e,i),i.isMatchIgnored))return v(t);return n.skip?I+=t:(n.excludeBegin&&(I+=t),p(),n.returnBegin||n.excludeBegin||(I=t)),m(n,e),n.returnBegin?0:t.length}function w(e){const t=e[0],i=n.substr(e.index),s=b(O,e,i);if(!s)return ke;const r=O;O.endScope&&O.endScope._wrap?(p(),L.addKeyword(t,O.endScope._wrap)):O.endScope&&O.endScope._multi?(p(),f(O.endScope,e)):r.skip?I+=t:(r.returnEnd||r.excludeEnd||(I+=t),p(),r.excludeEnd&&(I=t));do{O.scope&&L.closeNode(),O.skip||O.subLanguage||(A+=O.relevance),O=O.parent}while(O!==s.parent);return s.starts&&m(s.starts,e),r.returnEnd?0:t.length}function _(){const e=[];for(let t=O;t!==T;t=t.parent)t.scope&&e.unshift(t.scope);e.forEach(e=>L.openNode(e))}let j={};function k(t,s){const r=s&&s[0];if(I+=t,null==r)return p(),0;if("begin"===j.type&&"end"===s.type&&j.index===s.index&&""===r){if(I+=n.slice(s.index,s.index+1),!a){const t=new Error(`0 width match regex (${e})`);throw t.languageName=e,t.badRule=j.rule,t}return 1}if(j=s,"begin"===s.type)return y(s);if("illegal"===s.type&&!i){const e=new Error('Illegal lexeme "'+r+'" for mode "'+(O.scope||"")+'"');throw e.mode=O,e}if("end"===s.type){const e=w(s);if(e!==ke)return e}if("illegal"===s.type&&""===r)return 1;if($>1e5&&$>3*s.index){const e=new Error("potential infinite loop, way more iterations than matches");throw e}return I+=r,r.length}const T=B(e);if(!T)throw le(o.replace("{}",e)),new Error('Unknown language: "'+e+'"');const C=ve(T);let S="",O=s||C;const N={},L=new l.__emitter(l);_();let I="",A=0,M=0,$=0,R=!1;try{for(O.matcher.considerAll();;){$++,R?R=!1:O.matcher.considerAll(),O.matcher.lastIndex=M;const e=O.matcher.exec(n);if(!e)break;const t=n.substring(M,e.index),i=k(t,e);M=e.index+i}return k(n.substr(M)),L.closeAllNodes(),L.finalize(),S=L.toHTML(),{language:e,value:S,relevance:A,illegal:!1,_emitter:L,_top:O}}catch(D){if(D.message&&D.message.includes("Illegal"))return{language:e,value:_e(n),illegal:!0,relevance:0,_illegalBy:{message:D.message,index:M,context:n.slice(M-100,M+100),mode:D.mode,resultSoFar:S},_emitter:L};if(a)return{language:e,value:_e(n),illegal:!1,relevance:0,errorRaised:D,_emitter:L,_top:O};throw D}}function y(e){const t={value:_e(e),illegal:!1,relevance:0,_top:c,_emitter:new l.__emitter(l)};return t._emitter.addText(e),t}function x(e,n){n=n||l.languages||Object.keys(t);const i=y(e),s=n.filter(B).filter($).map(t=>g(t,e,!1));s.unshift(i);const r=s.sort((e,t)=>{if(e.relevance!==t.relevance)return t.relevance-e.relevance;if(e.language&&t.language){if(B(e.language).supersetOf===t.language)return 1;if(B(t.language).supersetOf===e.language)return-1}return 0}),[a,o]=r,c=a;return c.secondBest=o,c}function _(e,t,i){const s=t&&n[t]||i;e.classList.add("hljs"),e.classList.add("language-"+s)}function j(e){let t=null;const n=d(e);if(u(n))return;if(P("before:highlightElement",{el:e,language:n}),e.children.length>0&&(l.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/issues/2886"),console.warn(e)),l.throwUnescapedHTML)){const t=new Ee("One of your code blocks includes unescaped HTML.",e.innerHTML);throw t}t=e;const i=t.textContent,s=n?h(i,{language:n,ignoreIllegals:!0}):x(i);e.innerHTML=s.value,_(e,n,s.language),e.result={language:s.language,re:s.relevance,relevance:s.relevance},s.secondBest&&(e.secondBest={language:s.secondBest.language,relevance:s.secondBest.relevance}),P("after:highlightElement",{el:e,result:s,text:i})}function k(e){l=je(l,e)}const T=()=>{O(),de("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function C(){O(),de("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let S=!1;function O(){if("loading"===document.readyState)return void(S=!0);const e=document.querySelectorAll(l.cssSelector);e.forEach(j)}function N(){S&&O()}function L(n,i){let s=null;try{s=i(e)}catch(r){if(le("Language definition for '{}' could not be registered.".replace("{}",n)),!a)throw r;le(r),s=c}s.name||(s.name=n),t[n]=s,s.rawDefinition=i.bind(null,e),s.aliases&&M(s.aliases,{languageName:n})}function I(e){delete t[e];for(const t of Object.keys(n))n[t]===e&&delete n[t]}function A(){return Object.keys(t)}function B(e){return e=(e||"").toLowerCase(),t[e]||t[n[e]]}function M(e,{languageName:t}){"string"===typeof e&&(e=[e]),e.forEach(e=>{n[e.toLowerCase()]=t})}function $(e){const t=B(e);return t&&!t.disableAutodetect}function R(e){e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{e["before:highlightBlock"](Object.assign({block:t.el},t))}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{e["after:highlightBlock"](Object.assign({block:t.el},t))})}function D(e){R(e),i.push(e)}function P(e,t){const n=e;i.forEach((function(e){e[n]&&e[n](t)}))}function F(e){return de("10.7.0","highlightBlock will be removed entirely in v12.0"),de("10.7.0","Please use highlightElement now."),j(e)}"undefined"!==typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",N,!1),Object.assign(e,{highlight:h,highlightAuto:x,highlightAll:O,highlightElement:j,highlightBlock:F,configure:k,initHighlighting:T,initHighlightingOnLoad:C,registerLanguage:L,unregisterLanguage:I,listLanguages:A,getLanguage:B,registerAliases:M,autoDetection:$,inherit:je,addPlugin:D}),e.debugMode=function(){a=!1},e.safeMode=function(){a=!0},e.versionString=xe,e.regex={concat:v,lookahead:f,either:w,optional:b,anyNumberOfTimes:m};for(const r in Y)"object"===typeof Y[r]&&s(Y[r]);return Object.assign(e,Y),e};var Se=Ce({});e.exports=Se,Se.HighlightJS=Se,Se.default=Se},1417:function(e,t,n){var i={"./markdown":["84cb","highlight-js-custom-markdown"],"./markdown.js":["84cb","highlight-js-custom-markdown"],"./swift":["81c8","highlight-js-custom-swift"],"./swift.js":["81c8","highlight-js-custom-swift"]};function s(e){if(!n.o(i,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=i[e],s=t[0];return n.e(t[1]).then((function(){return n(s)}))}s.keys=function(){return Object.keys(i)},s.id="1417",e.exports=s},"146e":function(e,t,n){"use strict";var i=n("3908"),s=n("8a61");t["a"]={mixins:[s["a"]],async mounted(){this.$route.hash&&(await Object(i["a"])(8),this.scrollToElement(this.$route.hash))}}},2224:function(e,t,n){"use strict";n("b392")},"25a9":function(e,t,n){"use strict";n.d(t,"b",(function(){return m})),n.d(t,"c",(function(){return b})),n.d(t,"a",(function(){return v}));var i=n("748c"),s=n("d26a");const r={major:0,minor:2,patch:0};function a({major:e,minor:t,patch:n}){return[e,t,n].join(".")}const o=a(r);function c(e){return`[Swift-DocC-Render] The render node version for this page has a higher minor version (${e}) than Swift-DocC-Render supports (${o}). Compatibility is not guaranteed.`}const l=e=>`[Swift-DocC-Render] The render node version for this page (${e}) has a different major version component than Swift-DocC-Render supports (${o}). Compatibility is not guaranteed.`;function u(e){const{major:t,minor:n}=e,{major:i,minor:s}=r;return t!==i?l(a(e)):n>s?c(a(e)):""}function d(e){if(!e)return;const t=u(e);t&&console.warn(t)}var h=n("6842");class p extends Error{constructor(e){super("Unable to fetch data"),this.route=e}}async function g(e,t={}){function n(e){return("ide"!==Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET||0!==e.status)&&!e.ok}const i=new URL(e,window.location.href),r=Object(s["c"])(t);r&&(i.search=r);const a=await fetch(i.href);if(n(a))throw a;const o=await a.json();return d(o.schemaVersion),o}function f(e){const t=e.replace(/\/$/,""),n=Object(i["c"])([h["a"],"data","documentation","mockingbird"]);return""===t?n+".json":Object(i["c"])([n,t])+".json"}async function m(e,t,n){const i=f(e.path);let s;try{s=await g(i,e.query)}catch(r){if("ide"===Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET)throw console.error(r),!1;r.status&&404===r.status?n({name:"not-found",params:[e.path]}):n(new p(e))}return s}function b(e,t){return!Object(s["a"])(e,t)}function v(e){return JSON.parse(JSON.stringify(e))}},"2ab3":function(e,t,n){var i={"./bash":["f0f8","highlight-js-bash"],"./bash.js":["f0f8","highlight-js-bash"],"./c":["1fe5","highlight-js-c"],"./c.js":["1fe5","highlight-js-c"],"./cpp":["0209","highlight-js-cpp"],"./cpp.js":["0209","highlight-js-cpp"],"./css":["ee8c","highlight-js-css"],"./css.js":["ee8c","highlight-js-css"],"./diff":["48b8","highlight-js-diff"],"./diff.js":["48b8","highlight-js-diff"],"./http":["c01d","highlight-js-http"],"./http.js":["c01d","highlight-js-http"],"./java":["332f","highlight-js-java"],"./java.js":["332f","highlight-js-java"],"./javascript":["4dd1","highlight-js-javascript"],"./javascript.js":["4dd1","highlight-js-javascript"],"./json":["5ad2","highlight-js-json"],"./json.js":["5ad2","highlight-js-json"],"./llvm":["7c30","highlight-js-llvm"],"./llvm.js":["7c30","highlight-js-llvm"],"./markdown":["04b0","highlight-js-markdown"],"./markdown.js":["04b0","highlight-js-markdown"],"./objectivec":["9bf2","highlight-js-objectivec"],"./objectivec.js":["9bf2","highlight-js-objectivec"],"./perl":["6a51","highlight-js-perl"],"./perl.js":["6a51","highlight-js-perl"],"./php":["2907","highlight-js-php"],"./php.js":["2907","highlight-js-php"],"./python":["9510","highlight-js-python"],"./python.js":["9510","highlight-js-python"],"./ruby":["82cb","highlight-js-ruby"],"./ruby.js":["82cb","highlight-js-ruby"],"./scss":["6113","highlight-js-scss"],"./scss.js":["6113","highlight-js-scss"],"./shell":["b65b","highlight-js-shell"],"./shell.js":["b65b","highlight-js-shell"],"./swift":["2a39","highlight-js-swift"],"./swift.js":["2a39","highlight-js-swift"],"./xml":["8dcb","highlight-js-xml"],"./xml.js":["8dcb","highlight-js-xml"]};function s(e){if(!n.o(i,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=i[e],s=t[0];return n.e(t[1]).then((function(){return n.t(s,7)}))}s.keys=function(){return Object.keys(i)},s.id="2ab3",e.exports=s},"2d80":function(e,t,n){"use strict";n("3705")},"30b0":function(e,t,n){},"34b0":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"inline-chevron-right-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M2.964 1.366l0.649-0.76 7.426 6.343-7.423 6.445-0.655-0.755 6.545-5.683-6.542-5.59z"}})])},s=[],r=n("be08"),a={name:"InlineChevronRightIcon",components:{SVGIcon:r["a"]}},o=a,c=n("2877"),l=Object(c["a"])(o,i,s,!1,null,null,null);t["a"]=l.exports},3705:function(e,t,n){},"3b8f":function(e,t,n){},"47cc":function(e,t,n){},"4c7a":function(e,t,n){},"502c":function(e,t,n){"use strict";n("e1d1")},"50fc":function(e,t,n){},"52e4":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("WordBreak",{attrs:{tag:"code"}},[e._t("default")],2)},s=[],r=n("7b1f"),a={name:"CodeVoice",components:{WordBreak:r["a"]}},o=a,c=(n("8c92"),n("2877")),l=Object(c["a"])(o,i,s,!1,null,"05f4a5b7",null);t["a"]=l.exports},5677:function(e,t,n){"use strict";var i=n("e3ab"),s=n("7b69"),r=n("52e4"),a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"DictionaryExample"},[e._t("default"),n("CollapsibleCodeListing",{attrs:{content:e.example.content,showLineNumbers:""}})],2)},o=[],c=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"collapsible-code-listing",class:{"single-line":1===e.content[0].code.length}},[n("pre",[n("div",e._l(this.content,(function(t,i){return n("div",{key:i,class:["container-general",{collapsible:!0===t.collapsible},{collapsed:!0===t.collapsible&&e.collapsed}]},e._l(t.code,(function(t,i){return n("code",{key:i,staticClass:"code-line-container"},[e._v("\n "),n("div",{directives:[{name:"show",rawName:"v-show",value:e.showLineNumbers,expression:"showLineNumbers"}],staticClass:"code-number"}),e._v("\n "),n("div",{staticClass:"code-line"},[e._v(e._s(t))]),e._v("\n ")])})),0)})),0)])])},l=[],u={name:"CollapsibleCodeListing",props:{collapsed:{type:Boolean,required:!1},content:{type:Array,required:!0},showLineNumbers:{type:Boolean,default:()=>!0}}},d=u,h=(n("c919"),n("2877")),p=Object(h["a"])(d,c,l,!1,null,"369467b5",null),g=p.exports,f={name:"DictionaryExample",components:{CollapsibleCodeListing:g},props:{example:{type:Object,required:!0}}},m=f,b=Object(h["a"])(m,a,o,!1,null,null,null),v=b.exports,y=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("Row",{staticClass:"endpoint-example"},[n("Column",{staticClass:"example-code"},[e._t("default"),n("Tabnav",{model:{value:e.currentTab,callback:function(t){e.currentTab=t},expression:"currentTab"}},[n("TabnavItem",{attrs:{value:e.Tab.request}},[e._v(e._s(e.Tab.request))]),n("TabnavItem",{attrs:{value:e.Tab.response}},[e._v(e._s(e.Tab.response))])],1),n("div",{staticClass:"output"},[e.isCurrent(e.Tab.request)?n("div",{staticClass:"code"},[n("CollapsibleCodeListing",e._b({attrs:{collapsed:e.isCollapsed,showLineNumbers:""}},"CollapsibleCodeListing",e.request,!1))],1):e._e(),e.isCurrent(e.Tab.response)?n("div",{staticClass:"code"},[n("CollapsibleCodeListing",e._b({attrs:{collapsed:e.isCollapsed,showLineNumbers:""}},"CollapsibleCodeListing",e.response,!1))],1):e._e()]),e.isCollapsible?n("div",{staticClass:"controls"},[e.isCollapsed?n("a",{staticClass:"toggle",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.showMore.apply(null,arguments)}}},[n("InlinePlusCircleSolidIcon",{staticClass:"control-icon icon-inline"}),e._v(" More ")],1):n("a",{staticClass:"toggle",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.showLess.apply(null,arguments)}}},[n("InlineMinusCircleSolidIcon",{staticClass:"control-icon icon-inline"}),e._v(" Less ")],1)]):e._e()],2)],1)},w=[],x=n("0f00"),E=n("620a"),_=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("nav",{staticClass:"tabnav"},[n("ul",{staticClass:"tabnav-items"},[e._t("default")],2)])},j=[];const k="tabnavData";var T={name:"Tabnav",constants:{ProvideKey:k},provide(){const e={selectTab:this.selectTab};return Object.defineProperty(e,"activeTab",{enumerable:!0,get:()=>this.value}),{[k]:e}},props:{value:{type:String,required:!0}},methods:{selectTab(e){this.$emit("input",e)}}},C=T,S=(n("bab1"),Object(h["a"])(C,_,j,!1,null,"42371214",null)),O=S.exports,N=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("li",{staticClass:"tabnav-item"},[n("a",{staticClass:"tabnav-link",class:{active:e.isActive},attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.tabnavData.selectTab(e.value)}}},[e._t("default")],2)])},L=[],I={name:"TabnavItem",inject:{tabnavData:{default:{activeTab:null,selectTab:()=>{}}}},props:{value:{type:String,default:""}},computed:{isActive({tabnavData:e,value:t}){return e.activeTab===t}}},A=I,B=(n("c064"),Object(h["a"])(A,N,L,!1,null,"723a9588",null)),M=B.exports,$=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"inline-plus-circle-solid-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M7.005 0.5h-0.008c-1.791 0.004-3.412 0.729-4.589 1.9l0-0c-1.179 1.177-1.908 2.803-1.908 4.6 0 3.59 2.91 6.5 6.5 6.5s6.5-2.91 6.5-6.5c0-3.587-2.906-6.496-6.492-6.5h-0zM4.005 7.52v-1h2.5v-2.51h1v2.51h2.5v1h-2.501v2.49h-1v-2.49z"}})])},R=[],D=n("be08"),P={name:"InlinePlusCircleSolidIcon",components:{SVGIcon:D["a"]}},F=P,H=Object(h["a"])(F,$,R,!1,null,null,null),q=H.exports,V=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"inline-minus-circle-solid-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"m6.98999129.48999129c3.58985091 0 6.50000001 2.91014913 6.50000001 6.5 0 3.58985091-2.9101491 6.50000001-6.50000001 6.50000001-3.58985087 0-6.5-2.9101491-6.5-6.50000001 0-3.58985087 2.91014913-6.5 6.5-6.5zm3 6.02001742h-6v1h6z","fill-rule":"evenodd"}})])},U=[],z={name:"InlineMinusCircleSolidIcon",components:{SVGIcon:D["a"]}},G=z,W=Object(h["a"])(G,V,U,!1,null,null,null),K=W.exports;const Y={request:"Request",response:"Response"};var X={name:"EndpointExample",components:{InlineMinusCircleSolidIcon:K,InlinePlusCircleSolidIcon:q,TabnavItem:M,Tabnav:O,CollapsibleCodeListing:g,Row:x["a"],Column:E["a"]},constants:{Tab:Y},props:{request:{type:Object,required:!0},response:{type:Object,required:!0}},data(){return{isCollapsed:!0,currentTab:Y.request}},computed:{Tab:()=>Y,isCollapsible:({response:e,request:t,currentTab:n})=>{const i={[Y.request]:t.content,[Y.response]:e.content}[n]||[];return i.some(({collapsible:e})=>e)}},methods:{isCurrent(e){return this.currentTab===e},showMore(){this.isCollapsed=!1},showLess(){this.isCollapsed=!0}}},Z=X,J=(n("9a2b"),Object(h["a"])(Z,y,w,!1,null,"6197ce3f",null)),Q=J.exports,ee=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("figure",{attrs:{id:e.anchor}},[e._t("default")],2)},te=[],ne={name:"Figure",props:{anchor:{type:String,required:!0}}},ie=ne,se=(n("57ea"),Object(h["a"])(ie,ee,te,!1,null,"7be42fb4",null)),re=se.exports,ae=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("figcaption",{staticClass:"caption"},[n("strong",[e._v(e._s(e.title))]),e._v(" "),e._t("default")],2)},oe=[],ce={name:"FigureCaption",props:{title:{type:String,required:!0}}},le=ce,ue=(n("e7fb"),Object(h["a"])(le,ae,oe,!1,null,"0bcb8b58",null)),de=ue.exports,he=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ImageAsset",{attrs:{alt:e.alt,variants:e.variants}})},pe=[],ge=n("8bd9"),fe={name:"InlineImage",components:{ImageAsset:ge["a"]},props:{alt:{type:String,default:""},variants:{type:Array,required:!0}}},me=fe,be=(n("cb92"),Object(h["a"])(me,he,pe,!1,null,"3a939631",null)),ve=be.exports,ye=n("86d8"),we=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"table-wrapper"},[n("table",[e._t("default")],2)])},xe=[],Ee={name:"Table"},_e=Ee,je=(n("72af"),n("90f3"),Object(h["a"])(_e,we,xe,!1,null,"358dcd5e",null)),ke=je.exports,Te=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("s",[e._t("default")],2)},Ce=[],Se={name:"StrikeThrough"},Oe=Se,Ne=(n("830f"),Object(h["a"])(Oe,Te,Ce,!1,null,"eb91ce54",null)),Le=Ne.exports;const Ie={aside:"aside",codeListing:"codeListing",endpointExample:"endpointExample",heading:"heading",orderedList:"orderedList",paragraph:"paragraph",table:"table",termList:"termList",unorderedList:"unorderedList",dictionaryExample:"dictionaryExample"},Ae={codeVoice:"codeVoice",emphasis:"emphasis",image:"image",inlineHead:"inlineHead",link:"link",newTerm:"newTerm",reference:"reference",strong:"strong",text:"text",superscript:"superscript",subscript:"subscript",strikethrough:"strikethrough"},Be={both:"both",column:"column",none:"none",row:"row"};function Me(e,t){const n=n=>n.map(Me(e,t)),a=t=>t.map(t=>e("li",{},n(t.content))),o=(t,i=Be.none)=>{switch(i){case Be.both:{const[i,...s]=t;return[e("thead",{},[e("tr",{},i.map(t=>e("th",{attrs:{scope:"col"}},n(t))))]),e("tbody",{},s.map(([t,...i])=>e("tr",{},[e("th",{attrs:{scope:"row"}},n(t)),...i.map(t=>e("td",{},n(t)))])))]}case Be.column:return[e("tbody",{},t.map(([t,...i])=>e("tr",{},[e("th",{attrs:{scope:"row"}},n(t)),...i.map(t=>e("td",{},n(t)))])))];case Be.row:{const[i,...s]=t;return[e("thead",{},[e("tr",{},i.map(t=>e("th",{attrs:{scope:"col"}},n(t))))]),e("tbody",{},s.map(t=>e("tr",{},t.map(t=>e("td",{},n(t))))))]}default:return[e("tbody",{},t.map(t=>e("tr",{},t.map(t=>e("td",{},n(t))))))]}},c=({metadata:{abstract:t,anchor:i,title:s},...r})=>e(re,{props:{anchor:i}},[...s&&t&&t.length?[e(de,{props:{title:s}},n(t))]:[],n([r])]);return function(l){switch(l.type){case Ie.aside:{const t={kind:l.style,name:l.name};return e(i["a"],{props:t},n(l.content))}case Ie.codeListing:{if(l.metadata&&l.metadata.anchor)return c(l);const t={syntax:l.syntax,fileType:l.fileType,content:l.code,showLineNumbers:l.showLineNumbers};return e(s["a"],{props:t})}case Ie.endpointExample:{const t={request:l.request,response:l.response};return e(Q,{props:t},n(l.summary||[]))}case Ie.heading:return e("h"+l.level,{attrs:{id:l.anchor}},l.text);case Ie.orderedList:return e("ol",{attrs:{start:l.start}},a(l.items));case Ie.paragraph:return e("p",{},n(l.inlineContent));case Ie.table:return l.metadata&&l.metadata.anchor?c(l):e(ke,{},o(l.rows,l.header));case Ie.termList:return e("dl",{},l.items.map(({term:t,definition:i})=>[e("dt",{},n(t.inlineContent)),e("dd",{},n(i.content))]));case Ie.unorderedList:return e("ul",{},a(l.items));case Ie.dictionaryExample:{const t={example:l.example};return e(v,{props:t},n(l.summary||[]))}case Ae.codeVoice:return e(r["a"],{},l.code);case Ae.emphasis:case Ae.newTerm:return e("em",n(l.inlineContent));case Ae.image:{if(l.metadata&&l.metadata.anchor)return c(l);const n=t[l.identifier];return n?e(ve,{props:{alt:n.alt,variants:n.variants}}):null}case Ae.link:return e("a",{attrs:{href:l.destination}},l.title);case Ae.reference:{const i=t[l.identifier];if(!i)return null;const s=l.overridingTitleInlineContent||i.titleInlineContent,r=l.overridingTitle||i.title;return e(ye["a"],{props:{url:i.url,kind:i.kind,role:i.role,isActive:l.isActive,ideTitle:i.ideTitle,titleStyle:i.titleStyle}},s?n(s):r)}case Ae.strong:case Ae.inlineHead:return e("strong",n(l.inlineContent));case Ae.text:return l.text;case Ae.superscript:return e("sup",n(l.inlineContent));case Ae.subscript:return e("sub",n(l.inlineContent));case Ae.strikethrough:return e(Le,n(l.inlineContent));default:return null}}}var $e,Re,De={name:"ContentNode",constants:{TableHeaderStyle:Be},render:function(e){return e(this.tag,{class:"content"},this.content.map(Me(e,this.references),this))},inject:{references:{default(){return{}}}},props:{content:{type:Array,required:!0},tag:{type:String,default:()=>"div"}},methods:{map(e){function t(n=[]){return n.map(n=>{switch(n.type){case Ie.aside:return e({...n,content:t(n.content)});case Ie.dictionaryExample:return e({...n,summary:t(n.summary)});case Ie.paragraph:case Ae.emphasis:case Ae.strong:case Ae.inlineHead:case Ae.superscript:case Ae.subscript:case Ae.strikethrough:case Ae.newTerm:return e({...n,inlineContent:t(n.inlineContent)});case Ie.orderedList:case Ie.unorderedList:return e({...n,items:n.items.map(e=>({...e,content:t(e.content)}))});case Ie.table:return e({...n,rows:n.rows.map(e=>e.map(t))});case Ie.termList:return e({...n,items:n.items.map(e=>({...e,term:{inlineContent:t(e.term.inlineContent)},definition:{content:t(e.definition.content)}}))});default:return e(n)}})}return t(this.content)},forEach(e){function t(n=[]){n.forEach(n=>{switch(e(n),n.type){case Ie.aside:t(n.content);break;case Ie.paragraph:case Ae.emphasis:case Ae.strong:case Ae.inlineHead:case Ae.newTerm:case Ae.superscript:case Ae.subscript:case Ae.strikethrough:t(n.inlineContent);break;case Ie.orderedList:case Ie.unorderedList:n.items.forEach(e=>t(e.content));break;case Ie.dictionaryExample:t(n.summary);break;case Ie.table:n.rows.forEach(e=>{e.forEach(t)});break;case Ie.termList:n.items.forEach(e=>{t(e.term.inlineContent),t(e.definition.content)});break}})}return t(this.content)}},BlockType:Ie,InlineType:Ae},Pe=De,Fe=Object(h["a"])(Pe,$e,Re,!1,null,null,null);t["a"]=Fe.exports},"57ea":function(e,t,n){"use strict";n("971b")},"598a":function(e,t,n){},"620a":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"col",class:e.classes},[e._t("default")],2)},s=[];const r=0,a=12,o=new Set(["large","medium","small"]),c=e=>({type:Object,default:()=>({}),validator:t=>Object.keys(t).every(n=>o.has(n)&&e(t[n]))}),l=c(e=>"boolean"===typeof e),u=c(e=>"number"===typeof e&&e>=r&&e<=a);var d={name:"GridColumn",props:{isCentered:l,isUnCentered:l,span:{...u,default:()=>({large:a})}},computed:{classes:function(){return{["large-"+this.span.large]:void 0!==this.span.large,["medium-"+this.span.medium]:void 0!==this.span.medium,["small-"+this.span.small]:void 0!==this.span.small,"large-centered":!!this.isCentered.large,"medium-centered":!!this.isCentered.medium,"small-centered":!!this.isCentered.small,"large-uncentered":!!this.isUnCentered.large,"medium-uncentered":!!this.isUnCentered.medium,"small-uncentered":!!this.isUnCentered.small}}}},h=d,p=(n("6e4a"),n("2877")),g=Object(p["a"])(h,i,s,!1,null,"2ee3ad8b",null);t["a"]=g.exports},"621f":function(e,t,n){"use strict";n("b1d4")},"66cd":function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));const i={article:"article",codeListing:"codeListing",collection:"collection",collectionGroup:"collectionGroup",containerSymbol:"containerSymbol",devLink:"devLink",dictionarySymbol:"dictionarySymbol",generic:"generic",link:"link",media:"media",pseudoCollection:"pseudoCollection",pseudoSymbol:"pseudoSymbol",restRequestSymbol:"restRequestSymbol",sampleCode:"sampleCode",symbol:"symbol",table:"table",learn:"learn",overview:"overview",project:"project",tutorial:"tutorial",resources:"resources"}},"6cc4":function(e,t,n){},"6e4a":function(e,t,n){"use strict";n("05a1")},"72af":function(e,t,n){"use strict";n("d541")},"72e7":function(e,t,n){"use strict";const i={up:"up",down:"down"};t["a"]={constants:{IntersectionDirections:i},data(){return{intersectionObserver:null,intersectionPreviousScrollY:0,intersectionScrollDirection:i.down}},computed:{intersectionThreshold(){const e=[];for(let t=0;t<=1;t+=.01)e.push(t);return e},intersectionRoot(){return null},intersectionRootMargin(){return"0px 0px 0px 0px"},intersectionObserverOptions(){return{root:this.intersectionRoot,rootMargin:this.intersectionRootMargin,threshold:this.intersectionThreshold}}},async mounted(){await n.e("chunk-2d0d3105").then(n.t.bind(null,"5abe",7)),this.intersectionObserver=new IntersectionObserver(e=>{this.detectIntersectionScrollDirection();const t=this.onIntersect;t?e.forEach(t):console.warn("onIntersect not implemented")},this.intersectionObserverOptions),this.getIntersectionTargets().forEach(e=>{this.intersectionObserver.observe(e)})},beforeDestroy(){this.intersectionObserver&&this.intersectionObserver.disconnect()},methods:{getIntersectionTargets(){return[this.$el]},detectIntersectionScrollDirection(){window.scrollYthis.intersectionPreviousScrollY&&(this.intersectionScrollDirection=i.up),this.intersectionPreviousScrollY=window.scrollY}}}},"748c":function(e,t,n){"use strict";n.d(t,"d",(function(){return s})),n.d(t,"a",(function(){return r})),n.d(t,"c",(function(){return a})),n.d(t,"b",(function(){return o}));var i=n("6842");function s(e){return e.reduce((e,t)=>(t.traits.includes("dark")?e.dark.push(t):e.light.push(t),e),{light:[],dark:[]})}function r(e){const t=["1x","2x","3x"];return t.reduce((t,n)=>{const i=e.find(e=>e.traits.includes(n));return i?t.concat({density:n,src:i.url,size:i.size}):t},[])}function a(e){const t="/",n=new RegExp(t+"+","g");return e.join(t).replace(n,t)}function o(e){return e&&"string"===typeof e&&!e.startsWith(i["a"])&&e.startsWith("/")?a([i["a"],e]):e}},"76ab":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(e.resolvedComponent,e._b({tag:"component",staticClass:"button-cta",class:{"is-dark":e.isDark}},"component",e.componentProps,!1),[e._t("default")],2)},s=[],r=n("86d8"),a={name:"ButtonLink",components:{Reference:r["a"]},props:{url:{type:String,required:!1},isDark:{type:Boolean,default:!1}},computed:{resolvedComponent:({url:e})=>e?r["a"]:"button",componentProps:({url:e})=>e?{url:e}:{}}},o=a,c=(n("621f"),n("2877")),l=Object(c["a"])(o,i,s,!1,null,"494ad9c8",null);t["a"]=l.exports},"787d":function(e,t,n){},"7b1f":function(e,t,n){"use strict";var i,s,r={functional:!0,name:"WordBreak",render(e,{props:t,slots:n,data:i}){const s=n().default||[],r=s.filter(e=>e.text&&!e.tag);if(0===r.length||r.length!==s.length)return e(t.tag,i,s);const a=r.map(({text:e})=>e).join(),o=[];let c=null,l=0;while(null!==(c=t.safeBoundaryPattern.exec(a))){const t=c.index+1;o.push(a.slice(l,t)),o.push(e("wbr",{key:c.index})),l=t}return o.push(a.slice(l,a.length)),e(t.tag,i,o)},props:{safeBoundaryPattern:{type:RegExp,default:()=>/([a-z](?=[A-Z])|(:)\w|\w(?=[._]\w))/g},tag:{type:String,default:()=>"span"}}},a=r,o=n("2877"),c=Object(o["a"])(a,i,s,!1,null,null,null);t["a"]=c.exports},"7b69":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"code-listing",class:{"single-line":1===e.syntaxHighlightedLines.length},attrs:{"data-syntax":e.syntaxNameNormalized}},[e.fileName?n("Filename",{attrs:{isActionable:e.isFileNameActionable,fileType:e.fileType},on:{click:function(t){return e.$emit("file-name-click")}}},[e._v(e._s(e.fileName)+" ")]):e._e(),n("div",{staticClass:"container-general"},[n("pre",[n("code",e._l(e.syntaxHighlightedLines,(function(t,i){return n("span",{key:i,class:["code-line-container",{highlighted:e.isHighlighted(i)}]},[n("span",{directives:[{name:"show",rawName:"v-show",value:e.showLineNumbers,expression:"showLineNumbers"}],staticClass:"code-number",attrs:{"data-line-number":e.lineNumberFor(i)}}),e._v("\n"),n("span",{staticClass:"code-line",domProps:{innerHTML:e._s(t)}})])})),0)])])],1)},s=[],r=n("002d"),a=n("8649"),o=n("1020"),c=n.n(o);const l={bash:["sh","zsh"],c:["h"],cpp:["cc","c++","h++","hpp","hh","hxx","cxx"],css:[],diff:["patch"],http:["https"],java:["jsp"],javascript:["js","jsx","mjs","cjs"],json:[],llvm:[],markdown:["md","mkdown","mkd"],objectivec:["mm","objc","obj-c"],perl:["pl","pm"],php:[],python:["py","gyp","ipython"],ruby:["rb","gemspec","podspec","thor","irb"],scss:[],shell:["console","shellsession"],swift:[],xml:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"]},u=new Set(["markdown","swift"]),d=Object.entries(l),h=new Set(Object.keys(l)),p=new Map;async function g(e){const t=[e];try{return await t.reduce(async(e,t)=>{let i;await e,i=u.has(t)?await n("1417")("./"+t):await n("2ab3")("./"+t),c.a.registerLanguage(t,i.default)},Promise.resolve()),!0}catch(i){return console.error(`Could not load ${e} file`),!1}}function f(e){if(h.has(e))return e;const t=d.find(([,t])=>t.includes(e));return t?t[0]:null}function m(e){if(p.has(e))return p.get(e);const t=f(e);return p.set(e,t),t}c.a.configure({classPrefix:"syntax-",languages:[...h]});const b=async e=>{const t=m(e);return!(!t||c.a.listLanguages().includes(t))&&g(t)},v=/\r\n|\r|\n/g,y=/syntax-/;function w(e){return 0===e.length?[]:e.split(v)}function x(e){return(e.trim().match(v)||[]).length}function E(e){const t=document.createElement("template");return t.innerHTML=e,t.content.childNodes}function _(e){const{className:t}=e;if(!y.test(t))return null;const n=w(e.innerHTML).reduce((e,n)=>`${e}${n}\n`,"");return E(n.trim())}function j(e){return Array.from(e.childNodes).forEach(e=>{if(x(e.textContent))try{const t=e.childNodes.length?j(e):_(e);t&&e.replaceWith(...t)}catch(t){console.error(t)}}),_(e)}function k(e,t){if(!c.a.getLanguage(t))throw new Error("Unsupported language for syntax highlighting: "+t);return c.a.highlight(e,{language:t,ignoreIllegals:!0}).value}function T(e,t){const n=e.join("\n"),i=k(n,t),s=document.createElement("code");return s.innerHTML=i,j(s),w(s.innerHTML)}var C=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("span",{staticClass:"filename"},[e.isActionable?n("a",{attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.$emit("click")}}},[n("FileIcon",{attrs:{fileType:e.fileType}}),e._t("default")],2):n("span",[n("FileIcon",{attrs:{fileType:e.fileType}}),e._t("default")],2)])},S=[],O=function(){var e=this,t=e.$createElement,n=e._self._c||t;return"swift"===e.fileType?n("SwiftFileIcon",{staticClass:"file-icon"}):n("GenericFileIcon",{staticClass:"file-icon"})},N=[],L=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"swift-file-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M8.033 1l3.967 4.015v7.985h-10v-12zM7.615 2h-4.615v10h8v-6.574z"}}),n("path",{attrs:{d:"M7 1h1v4h-1z"}}),n("path",{attrs:{d:"M7 5h5v1h-5z"}})])},I=[],A=n("be08"),B={name:"SwiftFileIcon",components:{SVGIcon:A["a"]}},M=B,$=n("2877"),R=Object($["a"])(M,L,I,!1,null,null,null),D=R.exports,P=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"generic-file-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M8.033 1l3.967 4.015v7.985h-10v-12zM7.615 2h-4.615v10h8v-6.574z"}}),n("path",{attrs:{d:"M7 1h1v4h-1z"}}),n("path",{attrs:{d:"M7 5h5v1h-5z"}})])},F=[],H={name:"GenericFileIcon",components:{SVGIcon:A["a"]}},q=H,V=Object($["a"])(q,P,F,!1,null,null,null),U=V.exports,z={name:"CodeListingFileIcon",components:{SwiftFileIcon:D,GenericFileIcon:U},props:{fileType:String}},G=z,W=(n("e6db"),Object($["a"])(G,O,N,!1,null,"7c381064",null)),K=W.exports,Y={name:"CodeListingFilename",components:{FileIcon:K},props:{isActionable:{type:Boolean,default:()=>!1},fileType:String}},X=Y,Z=(n("8608"),Object($["a"])(X,C,S,!1,null,"c8c40662",null)),J=Z.exports,Q={name:"CodeListing",components:{Filename:J},data(){return{syntaxHighlightedLines:[]}},props:{fileName:String,isFileNameActionable:{type:Boolean,default:()=>!1},syntax:String,fileType:String,content:{type:Array,required:!0},startLineNumber:{type:Number,default:()=>1},highlights:{type:Array,default:()=>[]},showLineNumbers:{type:Boolean,default:()=>!1}},computed:{escapedContent:({content:e})=>e.map(r["c"]),highlightedLineNumbers(){return new Set(this.highlights.map(({line:e})=>e))},syntaxNameNormalized(){const e={occ:a["a"].objectiveC.key.url};return e[this.syntax]||this.syntax}},watch:{content:{handler:"syntaxHighlightLines",immediate:!0}},methods:{isHighlighted(e){return this.highlightedLineNumbers.has(this.lineNumberFor(e))},lineNumberFor(e){return this.startLineNumber+e},async syntaxHighlightLines(){let e;try{await b(this.syntaxNameNormalized),e=T(this.content,this.syntaxNameNormalized)}catch(t){e=this.escapedContent}this.syntaxHighlightedLines=e.map(e=>""===e?"\n":e)}}},ee=Q,te=(n("2d80"),Object($["a"])(ee,i,s,!1,null,"193a0b82",null));t["a"]=te.exports},"80c8":function(e,t,n){},"830f":function(e,t,n){"use strict";n("30b0")},8608:function(e,t,n){"use strict";n("a7f3")},8649:function(e,t,n){"use strict";t["a"]={objectiveC:{name:"Objective-C",key:{api:"occ",url:"objc"}},swift:{name:"Swift",key:{api:"swift",url:"swift"}}}},"86d8":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(e.refComponent,{tag:"component",attrs:{url:e.urlWithParams,"is-active":e.isActiveComputed}},[e._t("default")],2)},s=[],r=n("d26a"),a=n("66cd"),o=n("9895"),c=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.isActive?n("a",{attrs:{href:e.url}},[e._t("default")],2):n("span",[e._t("default")],2)},l=[],u={name:"ReferenceExternal",props:{url:{type:String,required:!0},isActive:{type:Boolean,default:!0}}},d=u,h=n("2877"),p=Object(h["a"])(d,c,l,!1,null,null,null),g=p.exports,f=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ReferenceInternal",e._b({},"ReferenceInternal",e.$props,!1),[n("CodeVoice",[e._t("default")],2)],1)},m=[],b=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.isActive?n("router-link",{attrs:{to:e.url}},[e._t("default")],2):n("span",[e._t("default")],2)},v=[],y={name:"ReferenceInternal",props:{url:{type:String,required:!0},isActive:{type:Boolean,default:!0}}},w=y,x=Object(h["a"])(w,b,v,!1,null,null,null),E=x.exports,_=n("52e4"),j={name:"ReferenceInternalSymbol",props:E.props,components:{ReferenceInternal:E,CodeVoice:_["a"]}},k=j,T=Object(h["a"])(k,f,m,!1,null,null,null),C=T.exports,S={name:"Reference",computed:{isInternal({url:e}){if(!e.startsWith("/")&&!e.startsWith("#"))return!1;const{resolved:{name:t}={}}=this.$router.resolve(e)||{};return t!==o["b"]},isSymbolReference(){return"symbol"===this.kind&&(this.role===a["a"].symbol||this.role===a["a"].dictionarySymbol)},isDisplaySymbol({isSymbolReference:e,titleStyle:t,ideTitle:n}){return n?e&&"symbol"===t:e},refComponent(){return this.isInternal?this.isDisplaySymbol?C:E:g},urlWithParams({isInternal:e}){return e?Object(r["b"])(this.url,this.$route.query):this.url},isActiveComputed({url:e,isActive:t}){return!(!e||!t)}},props:{url:{type:String,required:!0},kind:{type:String,required:!1},role:{type:String,required:!1},isActive:{type:Boolean,required:!1,default:!0},ideTitle:{type:String,required:!1},titleStyle:{type:String,required:!1}}},O=S,N=Object(h["a"])(O,i,s,!1,null,null,null);t["a"]=N.exports},"8a61":function(e,t,n){"use strict";t["a"]={methods:{scrollToElement(e){const t=this.$router.resolve({hash:e});return this.$router.options.scrollBehavior(t.route).then(({selector:e,offset:t})=>{const n=document.querySelector(e);return n?(n.scrollIntoView(),window.scrollBy(-t.x,-t.y),n):null})}}}},"8bd9":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("picture",[e.prefersAuto&&e.darkVariantAttributes?n("source",{attrs:{media:"(prefers-color-scheme: dark)",srcset:e.darkVariantAttributes.srcSet}}):e._e(),e.prefersDark&&e.darkVariantAttributes?n("img",e._b({attrs:{alt:e.alt}},"img",e.darkVariantAttributes,!1)):n("img",e._b({attrs:{alt:e.alt}},"img",e.defaultAttributes,!1))])},s=[],r=n("748c"),a={props:{variants:{type:Array,required:!0}},computed:{variantsGroupedByAppearance(){return Object(r["d"])(this.variants)},lightVariants(){return Object(r["a"])(this.variantsGroupedByAppearance.light)},darkVariants(){return Object(r["a"])(this.variantsGroupedByAppearance.dark)}}},o=n("e425"),c=n("821b");function l(e){if(!e.length)return null;const t=e.map(e=>`${Object(r["b"])(e.src)} ${e.density}`).join(", "),n=e[0],i={srcSet:t,src:Object(r["b"])(n.src)},{width:s}=n.size||{width:null};return s&&(i.width=s,i.height="auto"),i}var u={name:"ImageAsset",mixins:[a],data:()=>({appState:o["a"].state}),computed:{defaultAttributes:({lightVariantAttributes:e,darkVariantAttributes:t})=>e||t,darkVariantAttributes:({darkVariants:e})=>l(e),lightVariantAttributes:({lightVariants:e})=>l(e),preferredColorScheme:({appState:e})=>e.preferredColorScheme,prefersAuto:({preferredColorScheme:e})=>e===c["a"].auto.value,prefersDark:({preferredColorScheme:e})=>e===c["a"].dark.value},props:{alt:{type:String,default:""},variants:{type:Array,required:!0}}},d=u,h=n("2877"),p=Object(h["a"])(d,i,s,!1,null,null,null);t["a"]=p.exports},"8c92":function(e,t,n){"use strict";n("80c8")},"90f3":function(e,t,n){"use strict";n("6cc4")},9152:function(e,t,n){"use strict";n("50fc")},"95da":function(e,t,n){"use strict";function i(e,t){const n=document.body;let s=e,r=e;while(s=s.previousElementSibling)t(s);while(r=r.nextElementSibling)t(r);e.parentElement&&e.parentElement!==n&&i(e.parentElement,t)}const s="data-original-",r="aria-hidden",a=s+r,o=e=>{let t=e.getAttribute(a);t||(t=e.getAttribute(r)||"",e.setAttribute(a,t)),e.setAttribute(r,"true")},c=e=>{const t=e.getAttribute(a);"string"===typeof t&&(t.length?e.setAttribute(r,t):e.removeAttribute(r)),e.removeAttribute(a)};t["a"]={hide(e){i(e,o)},show(e){i(e,c)}}},"971b":function(e,t,n){},"9a2b":function(e,t,n){"use strict";n("dce7")},"9b30":function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ul",{staticClass:"nav-menu-items",attrs:{"data-previous-menu-children-count":e.previousSiblingChildren}},[e._t("default")],2)},s=[],r={name:"NavMenuItems",props:{previousSiblingChildren:{type:Number,default:0}}},a=r,o=(n("502c"),n("2877")),c=Object(o["a"])(a,i,s,!1,null,"aa06bfc4",null);t["a"]=c.exports},"9bb2":function(e,t,n){"use strict";n("3b8f")},a1bd:function(e,t,n){},a7f3:function(e,t,n){},a97e:function(e,t,n){"use strict";var i=n("63b8");const s=e=>e?`(max-width: ${e}px)`:"",r=e=>e?`(min-width: ${e}px)`:"";function a({minWidth:e,maxWidth:t}){return["only screen",r(e),s(t)].filter(Boolean).join(" and ")}function o({maxWidth:e,minWidth:t}){return window.matchMedia(a({minWidth:t,maxWidth:e}))}var c,l,u={name:"BreakpointEmitter",constants:{BreakpointAttributes:i["a"],BreakpointName:i["b"],BreakpointScopes:i["c"]},props:{scope:{type:String,default:()=>i["c"].default,validator:e=>e in i["c"]}},render(){return this.$scopedSlots.default?this.$scopedSlots.default({matchingBreakpoint:this.matchingBreakpoint}):null},data:()=>({matchingBreakpoint:null}),methods:{initMediaQuery(e,t){const n=o(t),i=t=>this.handleMediaQueryChange(t,e);n.addListener(i),this.$once("hook:beforeDestroy",()=>{n.removeListener(i)}),i(n)},handleMediaQueryChange(e,t){e.matches&&(this.matchingBreakpoint=t,this.$emit("change",t))}},mounted(){const e=i["a"][this.scope]||{};Object.entries(e).forEach(([e,t])=>{this.initMediaQuery(e,t)})}},d=u,h=n("2877"),p=Object(h["a"])(d,c,l,!1,null,null,null);t["a"]=p.exports},b1d4:function(e,t,n){},b392:function(e,t,n){},bab1:function(e,t,n){"use strict";n("a1bd")},bb52:function(e,t,n){"use strict";t["a"]={inject:{performanceMetricsEnabled:{default:!1},isTargetIDE:{default:!1}},methods:{newContentMounted(){let e;this.performanceMetricsEnabled&&(e=Math.round(window.performance.now()),window.renderedTimes||(window.renderedTimes=[]),window.renderedTimes.push(e)),this.$bridge.send({type:"rendered",data:{time:e}})}}}},be08:function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("svg",{staticClass:"svg-icon",attrs:{"aria-hidden":"true",xmlns:"http://www.w3.org/2000/svg"}},[e._t("default")],2)},s=[],r={name:"SVGIcon"},a=r,o=(n("9bb2"),n("2877")),c=Object(o["a"])(a,i,s,!1,null,"0137d411",null);t["a"]=c.exports},c064:function(e,t,n){"use strict";n("ca8c")},c081:function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.action?n("DestinationDataProvider",{attrs:{destination:e.action},scopedSlots:e._u([{key:"default",fn:function(t){var i=t.url,s=t.title;return n("ButtonLink",{attrs:{url:i,isDark:e.isDark}},[e._v(" "+e._s(s)+" ")])}}],null,!1,1264376715)}):e._e()},s=[],r=n("76ab"),a=n("c7ea"),o={name:"CallToActionButton",components:{DestinationDataProvider:a["a"],ButtonLink:r["a"]},props:{action:{type:Object,required:!0},isDark:{type:Boolean,default:!1}}},c=o,l=n("2877"),u=Object(l["a"])(c,i,s,!1,null,null,null);t["a"]=u.exports},c7ea:function(e,t,n){"use strict";const i={link:"link",reference:"reference",text:"text"};var s,r,a={name:"DestinationDataProvider",props:{destination:{type:Object,required:!0,default:()=>({})}},inject:{references:{default:()=>({})},isTargetIDE:{default:()=>!1}},constants:{DestinationType:i},computed:{isExternal:({reference:e,destination:t})=>e.type===i.link||t.type===i.link,shouldAppendOpensInBrowser:({isExternal:e,isTargetIDE:t})=>e&&t,reference:({references:e,destination:t})=>e[t.identifier]||{},linkUrl:({destination:e,reference:t})=>({[i.link]:e.destination,[i.reference]:t.url,[i.text]:e.text}[e.type]),linkTitle:({reference:e,destination:t})=>({[i.link]:t.title,[i.reference]:t.overridingTitle||e.title,[i.text]:""}[t.type])},methods:{formatAriaLabel(e){return this.shouldAppendOpensInBrowser?e+" (opens in browser)":e}},render(){return this.$scopedSlots.default({url:this.linkUrl||"",title:this.linkTitle||"",formatAriaLabel:this.formatAriaLabel,isExternal:this.isExternal})}},o=a,c=n("2877"),l=Object(c["a"])(o,s,r,!1,null,null,null);t["a"]=l.exports},c8e2:function(e,t,n){"use strict";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.d(t,"a",(function(){return o}));const s=["input","select","textarea","button","optgroup","option","menuitem","fieldset","object","a[href]","*[tabindex]","*[contenteditable]"],r=s.join(",");var a={getTabbableElements(e){const t=e.querySelectorAll(r),n=t.length;let i;const s=[];for(i=0;i=0},isFocusableElement(e){const t=e.nodeName.toLowerCase(),n=s.includes(t);return!("a"!==t||!e.getAttribute("href"))||(n?!e.disabled:"true"===e.getAttribute("contenteditable")||!Number.isNaN(parseFloat(e.getAttribute("tabindex"))))}};class o{constructor(e){i(this,"focusContainer",null),i(this,"tabTargets",[]),i(this,"firstTabTarget",null),i(this,"lastTabTarget",null),i(this,"lastFocusedElement",null),this.focusContainer=e,this.onFocus=this.onFocus.bind(this)}updateFocusContainer(e){this.focusContainer=e}start(){this.collectTabTargets(),this.firstTabTarget?this.focusContainer.contains(document.activeElement)||this.firstTabTarget.focus():console.warn("There are no focusable elements. FocusTrap needs at least one."),this.lastFocusedElement=document.activeElement,document.addEventListener("focus",this.onFocus,!0)}stop(){document.removeEventListener("focus",this.onFocus,!0)}collectTabTargets(){this.tabTargets=a.getTabbableElements(this.focusContainer),this.firstTabTarget=this.tabTargets[0],this.lastTabTarget=this.tabTargets[this.tabTargets.length-1]}onFocus(e){if(this.focusContainer.contains(e.target))this.lastFocusedElement=e.target;else{if(e.preventDefault(),this.collectTabTargets(),this.lastFocusedElement===this.lastTabTarget||!this.lastFocusedElement)return this.firstTabTarget.focus(),void(this.lastFocusedElement=this.firstTabTarget);this.lastFocusedElement===this.firstTabTarget&&(this.lastTabTarget.focus(),this.lastFocusedElement=this.lastTabTarget)}}destroy(){this.stop(),this.focusContainer=null,this.tabTargets=[],this.firstTabTarget=null,this.lastTabTarget=null,this.lastFocusedElement=null}}},c919:function(e,t,n){"use strict";n("e5ca")},ca8c:function(e,t,n){},cb92:function(e,t,n){"use strict";n("598a")},cbcf:function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("nav",{ref:"nav",staticClass:"nav",class:e.rootClasses,attrs:{role:"navigation"}},[n("div",{ref:"wrapper",staticClass:"nav__wrapper"},[n("div",{staticClass:"nav__background"}),e.hasOverlay?n("div",{staticClass:"nav-overlay",on:{click:e.closeNav}}):e._e(),n("div",{staticClass:"nav-content"},[e.$slots.default?n("div",{staticClass:"nav-title"},[e._t("default")],2):e._e(),e._t("after-title"),n("div",{staticClass:"nav-menu"},[n("a",{ref:"axToggle",staticClass:"nav-ax-toggle",attrs:{href:"#",role:"button"},on:{click:function(t){return t.preventDefault(),e.toggleNav.apply(null,arguments)}}},[n("span",{staticClass:"visuallyhidden"},[e.isOpen?[e._v("Close Menu")]:[e._v("Open Menu")]],2)]),n("div",{ref:"tray",staticClass:"nav-menu-tray",on:{transitionend:function(t){return t.target!==t.currentTarget?null:e.onTransitionEnd.apply(null,arguments)},click:e.handleTrayClick}},[e._t("tray",(function(){return[n("NavMenuItems",[e._t("menu-items")],2)]}))],2)]),n("div",{staticClass:"nav-actions"},[n("a",{staticClass:"nav-menucta",attrs:{href:"#",tabindex:"-1","aria-hidden":"true"},on:{click:function(t){return t.preventDefault(),e.toggleNav.apply(null,arguments)}}},[n("span",{staticClass:"nav-menucta-chevron"})])])],2),e._t("after-content")],2),n("BreakpointEmitter",{attrs:{scope:e.BreakpointScopes.nav},on:{change:e.onBreakpointChange}})],1)},s=[],r=n("72e7"),a=n("9b30"),o=n("a97e"),c=n("c8e2"),l=n("f2af"),u=n("942d"),d=n("63b8"),h=n("95da");const{BreakpointName:p,BreakpointScopes:g}=o["a"].constants,f={isDark:"theme-dark",isOpen:"nav--is-open",inBreakpoint:"nav--in-breakpoint-range",isTransitioning:"nav--is-opening",isSticking:"nav--is-sticking",hasSolidBackground:"nav--solid-background",hasNoBorder:"nav--noborder",hasFullWidthBorder:"nav--fullwidth-border"};var m={name:"NavBase",components:{NavMenuItems:a["a"],BreakpointEmitter:o["a"]},constants:{NavStateClasses:f},props:{breakpoint:{type:String,default:p.small},hasOverlay:{type:Boolean,default:!0},hasSolidBackground:{type:Boolean,default:!1},hasNoBorder:{type:Boolean,default:!1},hasFullWidthBorder:{type:Boolean,default:!1},isDark:{type:Boolean,default:!1}},mixins:[r["a"]],data(){return{isOpen:!1,inBreakpoint:!1,isTransitioning:!1,isSticking:!1,focusTrapInstance:null}},computed:{BreakpointScopes:()=>g,rootClasses:({isOpen:e,inBreakpoint:t,isTransitioning:n,isSticking:i,hasSolidBackground:s,hasNoBorder:r,hasFullWidthBorder:a,isDark:o})=>({[f.isDark]:o,[f.isOpen]:e,[f.inBreakpoint]:t,[f.isTransitioning]:n,[f.isSticking]:i,[f.hasSolidBackground]:s,[f.hasNoBorder]:r,[f.hasFullWidthBorder]:a})},watch:{isOpen(e){this.$emit("change",e),e?this.onExpand():this.onClose()}},async mounted(){window.addEventListener("keydown",this.onEscape),window.addEventListener("popstate",this.closeNav),window.addEventListener("orientationchange",this.closeNav),document.addEventListener("click",this.handleClickOutside),await this.$nextTick(),this.focusTrapInstance=new c["a"](this.$refs.wrapper)},beforeDestroy(){window.removeEventListener("keydown",this.onEscape),window.removeEventListener("popstate",this.closeNav),window.removeEventListener("orientationchange",this.closeNav),document.removeEventListener("click",this.handleClickOutside),this.isOpen&&this.toggleScrollLock(!1),this.focusTrapInstance.destroy()},methods:{getIntersectionTargets(){return[document.getElementById(u["c"])||this.$el]},toggleNav(){this.isOpen=!this.isOpen,this.isTransitioning=!0},closeNav(){this.isOpen=!1},async onTransitionEnd({propertyName:e}){"max-height"===e&&(this.$emit("changed",this.isOpen),this.isTransitioning=!1,this.isOpen?(this.$emit("opened"),this.toggleScrollLock(!0)):this.$emit("closed"))},onBreakpointChange(e){const t=Object(d["d"])(e,this.breakpoint);this.inBreakpoint=!t,t&&this.closeNav()},onIntersect({intersectionRatio:e}){window.scrollY<0||(this.isSticking=1!==e)},onEscape({key:e}){"Escape"===e&&this.isOpen&&(this.closeNav(),this.$refs.axToggle.focus())},handleTrayClick({target:e}){e.href&&this.closeNav()},handleClickOutside({target:e}){this.$refs.nav.contains(e)||this.closeNav()},toggleScrollLock(e){e?l["a"].lockScroll(this.$refs.tray):l["a"].unlockScroll(this.$refs.tray)},onExpand(){this.$emit("open"),this.focusTrapInstance.start(),h["a"].hide(this.$refs.wrapper)},onClose(){this.$emit("close"),this.toggleScrollLock(!1),this.focusTrapInstance.stop(),h["a"].show(this.$refs.wrapper)}}},b=m,v=(n("d020"),n("2877")),y=Object(v["a"])(b,i,s,!1,null,"489e6297",null);t["a"]=y.exports},d020:function(e,t,n){"use strict";n("787d")},d541:function(e,t,n){},d8ce:function(e,t,n){"use strict";var i=n("6842");t["a"]={created(){if(this.pageTitle){const e=Object(i["c"])(["meta","title"],"Documentation"),t=[this.pageTitle,e].filter(Boolean);document.title=t.join(" | ")}}}},dce7:function(e,t,n){},e1d1:function(e,t,n){},e3ab:function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("aside",{class:e.kind,attrs:{"aria-label":e.kind}},[n("p",{staticClass:"label"},[e._v(e._s(e.label))]),e._t("default")],2)},s=[];const r={deprecated:"deprecated",experiment:"experiment",important:"important",note:"note",tip:"tip",warning:"warning"};var a={name:"Aside",props:{kind:{type:String,required:!0,validator:e=>Object.prototype.hasOwnProperty.call(r,e)},name:{type:String,required:!1}},computed:{label:({kind:e,name:t})=>t||{[r.deprecated]:"Deprecated",[r.experiment]:"Experiment",[r.important]:"Important",[r.note]:"Note",[r.tip]:"Tip",[r.warning]:"Warning"}[e]}},o=a,c=(n("9152"),n("2877")),l=Object(c["a"])(o,i,s,!1,null,"5117d474",null);t["a"]=l.exports},e5ca:function(e,t,n){},e6db:function(e,t,n){"use strict";n("47cc")},e7fb:function(e,t,n){"use strict";n("4c7a")},f2af:function(e,t,n){"use strict";let i=!1,s=-1,r=0;const a=()=>window.navigator&&window.navigator.platform&&(/iP(ad|hone|od)/.test(window.navigator.platform)||"MacIntel"===window.navigator.platform&&window.navigator.maxTouchPoints>1);function o(e){e.touches.length>1||e.preventDefault()}const c=e=>!!e&&e.scrollHeight-e.scrollTop<=e.clientHeight;function l(){r=document.body.getBoundingClientRect().top,document.body.style.overflow="hidden scroll",document.body.style.top=r+"px",document.body.style.position="fixed",document.body.style.width="100%"}function u(e){e.ontouchstart=null,e.ontouchmove=null,document.removeEventListener("touchmove",o)}function d(e,t){const n=e.targetTouches[0].clientY-s;return 0===t.scrollTop&&n>0||c(t)&&n<0?o(e):(e.stopPropagation(),!0)}function h(e){e.ontouchstart=e=>{1===e.targetTouches.length&&(s=e.targetTouches[0].clientY)},e.ontouchmove=t=>{1===t.targetTouches.length&&d(t,e)},document.addEventListener("touchmove",o,{passive:!1})}t["a"]={lockScroll(e){i||(a()?h(e):l(),i=!0)},unlockScroll(e){i&&(a()?u(e):(document.body.style.cssText="",window.scrollTo(0,Math.abs(r))),i=!1)}}}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/highlight-js-bash.1b52852f.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-bash.1b52852f.js deleted file mode 100644 index 6db17786..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/highlight-js-bash.1b52852f.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-bash"],{f0f8:function(e,s){function t(e){const s=e.regex,t={},n={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{className:"variable",variants:[{begin:s.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},n]});const a={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},i={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t,a]};a.contains.push(c);const o={className:"",begin:/\\"/},r={className:"string",begin:/'/,end:/'/},l={begin:/\$\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t]},p=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],d=e.SHEBANG({binary:`(${p.join("|")})`,relevance:10}),h={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},m=["if","then","else","elif","fi","for","while","in","do","done","case","esac","function"],u=["true","false"],b={match:/(\/[a-z._-]+)+/},g=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],f=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias"],w=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],k=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z._-]+\b/,keyword:m,literal:u,built_in:[...g,...f,"set","shopt",...w,...k]},contains:[d,e.SHEBANG(),h,l,e.HASH_COMMENT_MODE,i,b,c,o,r,t]}}e.exports=t}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/highlight-js-c.d1db3f17.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-c.d1db3f17.js deleted file mode 100644 index 3bc41acb..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/highlight-js-c.d1db3f17.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-c"],{"1fe5":function(e,n){function s(e){const n=e.regex,s=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),t="decltype\\(auto\\)",a="[a-zA-Z_]\\w*::",i="<[^<>]+>",r="("+t+"|"+n.optional(a)+"[a-zA-Z_]\\w*"+n.optional(i)+")",l={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},o="\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)",c={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+o+"|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},d={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},u={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(c,{className:"string"}),{className:"string",begin:/<.*?>/},s,e.C_BLOCK_COMMENT_MODE]},g={className:"title",begin:n.optional(a)+e.IDENT_RE,relevance:0},p=n.optional(a)+e.IDENT_RE+"\\s*\\(",m=["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],_=["float","double","signed","unsigned","int","short","long","char","void","_Bool","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal128","const","static","complex","bool","imaginary"],f={keyword:m,type:_,literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},b=[u,l,s,e.C_BLOCK_COMMENT_MODE,d,c],w={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:f,contains:b.concat([{begin:/\(/,end:/\)/,keywords:f,contains:b.concat(["self"]),relevance:0}]),relevance:0},h={begin:"("+r+"[\\*&\\s]+)+"+p,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:f,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:t,keywords:f,relevance:0},{begin:p,returnBegin:!0,contains:[e.inherit(g,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:f,relevance:0,contains:[s,e.C_BLOCK_COMMENT_MODE,c,d,l,{begin:/\(/,end:/\)/,keywords:f,relevance:0,contains:["self",s,e.C_BLOCK_COMMENT_MODE,c,d,l]}]},l,s,e.C_BLOCK_COMMENT_MODE,u]};return{name:"C",aliases:["h"],keywords:f,disableAutodetect:!0,illegal:"=]/,contains:[{beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:u,strings:c,keywords:f}}}e.exports=s}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/highlight-js-cpp.eaddddbe.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-cpp.eaddddbe.js deleted file mode 100644 index db9fd820..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/highlight-js-cpp.eaddddbe.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-cpp"],{"0209":function(e,t){function n(e){const t=e.regex,n=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),a="decltype\\(auto\\)",i="[a-zA-Z_]\\w*::",r="<[^<>]+>",s="(?!struct)("+a+"|"+t.optional(i)+"[a-zA-Z_]\\w*"+t.optional(r)+")",c={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},o="\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)",l={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+o+"|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},d={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},u={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(l,{className:"string"}),{className:"string",begin:/<.*?>/},n,e.C_BLOCK_COMMENT_MODE]},p={className:"title",begin:t.optional(i)+e.IDENT_RE,relevance:0},_=t.optional(i)+e.IDENT_RE+"\\s*\\(",m=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],g=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],f=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],b=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],h=["NULL","false","nullopt","nullptr","true"],w=["_Pragma"],y={type:g,keyword:m,literal:h,built_in:w,_type_hints:f},v={className:"function.dispatch",relevance:0,keywords:{_hint:b},begin:t.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,t.lookahead(/(<[^<>]+>|)\s*\(/))},k=[v,u,c,n,e.C_BLOCK_COMMENT_MODE,d,l],x={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:y,contains:k.concat([{begin:/\(/,end:/\)/,keywords:y,contains:k.concat(["self"]),relevance:0}]),relevance:0},E={className:"function",begin:"("+s+"[\\*&\\s]+)+"+_,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:y,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:a,keywords:y,relevance:0},{begin:_,returnBegin:!0,contains:[p],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[l,d]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:y,relevance:0,contains:[n,e.C_BLOCK_COMMENT_MODE,l,d,c,{begin:/\(/,end:/\)/,keywords:y,relevance:0,contains:["self",n,e.C_BLOCK_COMMENT_MODE,l,d,c]}]},c,n,e.C_BLOCK_COMMENT_MODE,u]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:y,illegal:"",keywords:y,contains:["self",c]},{begin:e.IDENT_RE+"::",keywords:y},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}e.exports=n}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/highlight-js-css.75eab1fe.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-css.75eab1fe.js deleted file mode 100644 index 3d507d0b..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/highlight-js-css.75eab1fe.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-css"],{ee8c:function(e,t){const o=e=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/}}),i=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],r=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],a=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],n=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],l=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-height","max-width","min-height","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse();function s(e){const t=e.regex,s=o(e),d={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},c="and or not only",g=/@-?\w[\w]*(-\w+)*/,m="[a-zA-Z-][a-zA-Z0-9_-]*",p=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[s.BLOCK_COMMENT,d,s.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+m,relevance:0},s.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+a.join("|")+")"},{begin:":(:)?("+n.join("|")+")"}]},s.CSS_VARIABLE,{className:"attribute",begin:"\\b("+l.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[s.BLOCK_COMMENT,s.HEXCOLOR,s.IMPORTANT,s.CSS_NUMBER_MODE,...p,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},s.FUNCTION_DISPATCH]},{begin:t.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:g},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:c,attribute:r.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...p,s.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+i.join("|")+")\\b"}]}}e.exports=s}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/highlight-js-custom-markdown.7cffc4b3.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-custom-markdown.7cffc4b3.js deleted file mode 100644 index 5271416e..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/highlight-js-custom-markdown.7cffc4b3.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-custom-markdown","highlight-js-markdown"],{"04b0":function(n,e){function a(n){const e=n.regex,a={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},i={begin:"^[-\\*]{3,}",end:"$"},s={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},t={className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},c={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},d=/[A-Za-z][A-Za-z0-9+.-]*/,l={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:e.concat(/\[.+?\]\(/,d,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},g={className:"strong",contains:[],variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},o={className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{begin:/_(?!_)/,end:/_/,relevance:0}]};g.contains.push(o),o.contains.push(g);let r=[a,l];g.contains=g.contains.concat(r),o.contains=o.contains.concat(r),r=r.concat(g,o);const b={className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:r},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:r}]}]},u={className:"quote",begin:"^>\\s+",contains:r,end:"$"};return{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[b,a,t,g,o,u,s,i,l,c]}}n.exports=a},"84cb":function(n,e,a){"use strict";a.r(e);var i=a("04b0"),s=a.n(i);const t={begin:"",returnBegin:!0,contains:[{className:"link",begin:"doc:",end:">",excludeEnd:!0}]},c={className:"link",begin:/`{2}(?!`)/,end:/`{2}(?!`)/,excludeBegin:!0,excludeEnd:!0},d={begin:"^>\\s+[Note:|Tip:|Important:|Experiment:|Warning:]",end:"$",returnBegin:!0,contains:[{className:"quote",begin:"^>",end:"\\s+"},{className:"type",begin:"Note|Tip|Important|Experiment|Warning",end:":"},{className:"quote",begin:".*",end:"$",endsParent:!0}]},l={begin:"@",end:"[{\\)\\s]",returnBegin:!0,contains:[{className:"title",begin:"@",end:"[\\s+(]",excludeEnd:!0},{begin:":",end:"[,\\)\n\t]",excludeBegin:!0,keywords:{literal:"true false null undefined"},contains:[{className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",endsWithParent:!0,excludeEnd:!0},{className:"string",variants:[{begin:/"""/,end:/"""/},{begin:/"/,end:/"/}],endsParent:!0},{className:"link",begin:"http|https",endsWithParent:!0,excludeEnd:!0}]}]};e["default"]=function(n){const e=s()(n),a=e.contains.find(({className:n})=>"code"===n);a.variants=a.variants.filter(({begin:n})=>!n.includes("( {4}|\\t)"));const i=[...e.contains.filter(({className:n})=>"code"!==n),a];return{...e,contains:[c,t,d,l,...i]}}}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/highlight-js-custom-swift.6a006062.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-custom-swift.6a006062.js deleted file mode 100644 index 490f1980..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/highlight-js-custom-swift.6a006062.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-custom-swift","highlight-js-swift"],{"2a39":function(e,n){function t(e){return e?"string"===typeof e?e:e.source:null}function a(e){return i("(?=",e,")")}function i(...e){const n=e.map(e=>t(e)).join("");return n}function s(e){const n=e[e.length-1];return"object"===typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{}}function c(...e){const n=s(e),a="("+(n.capture?"":"?:")+e.map(e=>t(e)).join("|")+")";return a}const u=e=>i(/\b/,e,/\w$/.test(e)?/\b/:/\B/),o=["Protocol","Type"].map(u),r=["init","self"].map(u),l=["Any","Self"],m=["actor","associatedtype","async","await",/as\?/,/as!/,"as","break","case","catch","class","continue","convenience","default","defer","deinit","didSet","do","dynamic","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],p=["false","nil","true"],d=["assignment","associativity","higherThan","left","lowerThan","none","right"],b=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warn_unqualified_access","#warning"],F=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],h=c(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),f=c(h,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),w=i(h,f,"*"),y=c(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),g=c(y,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),E=i(y,g,"*"),v=i(/[A-Z]/,g,"*"),A=["autoclosure",i(/convention\(/,c("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",i(/objc\(/,E,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","testable","UIApplicationMain","unknown","usableFromInline"],N=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function C(e){const n={match:/\s+/,relevance:0},t=e.COMMENT("/\\*","\\*/",{contains:["self"]}),s=[e.C_LINE_COMMENT_MODE,t],h={match:[/\./,c(...o,...r)],className:{2:"keyword"}},y={match:i(/\./,c(...m)),relevance:0},C=m.filter(e=>"string"===typeof e).concat(["_|0"]),k=m.filter(e=>"string"!==typeof e).concat(l).map(u),D={variants:[{className:"keyword",match:c(...k,...r)}]},B={$pattern:c(/\b\w+/,/#\w+/),keyword:C.concat(b),literal:p},_=[h,y,D],S={match:i(/\./,c(...F)),relevance:0},x={className:"built_in",match:i(/\b/,c(...F),/(?=\()/)},M=[S,x],I={match:/->/,relevance:0},$={className:"operator",relevance:0,variants:[{match:w},{match:`\\.(\\.|${f})+`}]},O=[I,$],L="([0-9]_*)+",T="([0-9a-fA-F]_*)+",j={className:"number",relevance:0,variants:[{match:`\\b(${L})(\\.(${L}))?([eE][+-]?(${L}))?\\b`},{match:`\\b0x(${T})(\\.(${T}))?([pP][+-]?(${L}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},K=(e="")=>({className:"subst",variants:[{match:i(/\\/,e,/[0\\tnr"']/)},{match:i(/\\/,e,/u\{[0-9a-fA-F]{1,8}\}/)}]}),P=(e="")=>({className:"subst",match:i(/\\/,e,/[\t ]*(?:[\r\n]|\r\n)/)}),z=(e="")=>({className:"subst",label:"interpol",begin:i(/\\/,e,/\(/),end:/\)/}),Z=(e="")=>({begin:i(e,/"""/),end:i(/"""/,e),contains:[K(e),P(e),z(e)]}),q=(e="")=>({begin:i(e,/"/),end:i(/"/,e),contains:[K(e),z(e)]}),U={className:"string",variants:[Z(),Z("#"),Z("##"),Z("###"),q(),q("#"),q("##"),q("###")]},V={match:i(/`/,E,/`/)},W={className:"variable",match:/\$\d+/},G={className:"variable",match:`\\$${g}+`},J=[V,W,G],R={match:/(@|#)available/,className:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:N,contains:[...O,j,U]}]}},X={className:"keyword",match:i(/@/,c(...A))},H={className:"meta",match:i(/@/,E)},Q=[R,X,H],Y={match:a(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:i(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,g,"+")},{className:"type",match:v,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:i(/\s+&\s+/,a(v)),relevance:0}]},ee={begin://,keywords:B,contains:[...s,..._,...Q,I,Y]};Y.contains.push(ee);const ne={match:i(E,/\s*:/),keywords:"_|0",relevance:0},te={begin:/\(/,end:/\)/,relevance:0,keywords:B,contains:["self",ne,...s,..._,...M,...O,j,U,...J,...Q,Y]},ae={begin://,contains:[...s,Y]},ie={begin:c(a(i(E,/\s*:/)),a(i(E,/\s+/,E,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:E}]},se={begin:/\(/,end:/\)/,keywords:B,contains:[ie,...s,..._,...O,j,U,...Q,Y,te],endsParent:!0,illegal:/["']/},ce={match:[/func/,/\s+/,c(V.match,E,w)],className:{1:"keyword",3:"title.function"},contains:[ae,se,n],illegal:[/\[/,/%/]},ue={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[ae,se,n],illegal:/\[|%/},oe={match:[/operator/,/\s+/,w],className:{1:"keyword",3:"title"}},re={begin:[/precedencegroup/,/\s+/,v],className:{1:"keyword",3:"title"},contains:[Y],keywords:[...d,...p],end:/}/};for(const a of U.variants){const e=a.contains.find(e=>"interpol"===e.label);e.keywords=B;const n=[..._,...M,...O,j,U,...J];e.contains=[...n,{begin:/\(/,end:/\)/,contains:["self",...n]}]}return{name:"Swift",keywords:B,contains:[...s,ce,ue,{beginKeywords:"struct protocol class extension enum actor",end:"\\{",excludeEnd:!0,keywords:B,contains:[e.inherit(e.TITLE_MODE,{className:"title.class",begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/}),..._]},oe,re,{beginKeywords:"import",end:/$/,contains:[...s],relevance:0},..._,...M,...O,j,U,...J,...Q,Y,te]}}e.exports=C},"81c8":function(e,n,t){"use strict";t.r(n);var a=t("2a39"),i=t.n(a);n["default"]=function(e){const n=i()(e),t=({beginKeywords:e=""})=>e.split(" ").includes("class"),a=n.contains.findIndex(t);if(a>=0){const{beginKeywords:e,...t}=n.contains[a];n.contains[a]={...t,begin:/\b(struct\b|protocol\b|extension\b|enum\b|actor\b|class\b(?!.*\bfunc\b))/}}return n.contains.push({className:"function",match:/\b[a-zA-Z_]\w*(?=\()/}),n}}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/highlight-js-diff.62d66733.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-diff.62d66733.js deleted file mode 100644 index 64337fa8..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/highlight-js-diff.62d66733.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-diff"],{"48b8":function(e,n){function a(e){const n=e.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:n.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:n.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}e.exports=a}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/highlight-js-http.163e45b6.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-http.163e45b6.js deleted file mode 100644 index 14f39a9f..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/highlight-js-http.163e45b6.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-http"],{c01d:function(e,n){function a(e){const n=e.regex,a="HTTP/(2|1\\.[01])",s=/[A-Za-z][A-Za-z0-9-]*/,t={className:"attribute",begin:n.concat("^",s,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},i=[t,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})",end:/$/,contains:[{className:"meta",begin:a},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:i}},{begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:i}},e.inherit(t,{relevance:0})]}}e.exports=a}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/highlight-js-java.8326d9d8.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-java.8326d9d8.js deleted file mode 100644 index f11ca2a2..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/highlight-js-java.8326d9d8.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-java"],{"332f":function(e,a){var n="[0-9](_*[0-9])*",s=`\\.(${n})`,i="[0-9a-fA-F](_*[0-9a-fA-F])*",t={className:"number",variants:[{begin:`(\\b(${n})((${s})|\\.)?|(${s}))[eE][+-]?(${n})[fFdD]?\\b`},{begin:`\\b(${n})((${s})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${s})[fFdD]?\\b`},{begin:`\\b(${n})[fFdD]\\b`},{begin:`\\b0[xX]((${i})\\.?|(${i})?\\.(${i}))[pP][+-]?(${n})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${i})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function r(e,a,n){return-1===n?"":e.replace(a,s=>r(e,a,n-1))}function c(e){e.regex;const a="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",n=a+r("(?:<"+a+"~~~(?:\\s*,\\s*"+a+"~~~)*>)?",/~~~/g,2),s=["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do"],i=["super","this"],c=["false","true","null"],l=["char","boolean","long","float","int","byte","short","double"],o={keyword:s,literal:c,type:l,built_in:i},b={className:"meta",begin:"@"+a,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},_={className:"params",begin:/\(/,end:/\)/,keywords:o,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:o,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[e.BACKSLASH_ESCAPE]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,a],className:{1:"keyword",3:"title.class"}},{begin:[a,/\s+/,a,/\s+/,/=/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,a],className:{1:"keyword",3:"title.class"},contains:[_,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+n+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:o,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:o,relevance:0,contains:[b,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,t,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},t,b]}}e.exports=c}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/highlight-js-javascript.acb8a8eb.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-javascript.acb8a8eb.js deleted file mode 100644 index ac843fc0..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/highlight-js-javascript.acb8a8eb.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-javascript"],{"4dd1":function(e,n){const a="[A-Za-z$_][0-9A-Za-z$_]*",t=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],s=["true","false","null","undefined","NaN","Infinity"],c=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],r=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],i=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],o=["arguments","this","super","console","window","document","localStorage","module","global"],l=[].concat(i,c,r);function b(e){const n=e.regex,b=(e,{after:n})=>{const a="",end:""},u=/<[A-Za-z0-9\\._:-]+\s*\/>/,m={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,t=e.input[a];if("<"===t||","===t)return void n.ignoreMatch();let s;">"===t&&(b(e,{after:a})||n.ignoreMatch());const c=e.input.substr(a);(s=c.match(/^\s+extends\s+/))&&0===s.index&&n.ignoreMatch()}},E={$pattern:a,keyword:t,literal:s,built_in:l,"variable.language":o},A="[0-9](_?[0-9])*",y=`\\.(${A})`,N="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",f={className:"number",variants:[{begin:`(\\b(${N})((${y})|\\.)?|(${y}))[eE][+-]?(${A})\\b`},{begin:`\\b(${N})\\b((${y})\\b|\\.)?|(${y})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},h={className:"subst",begin:"\\$\\{",end:"\\}",keywords:E,contains:[]},_={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,h],subLanguage:"xml"}},p={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,h],subLanguage:"css"}},v={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,h]},w=e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:d+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),S={className:"comment",variants:[w,e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},R=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,_,p,v,f];h.contains=R.concat({begin:/\{/,end:/\}/,keywords:E,contains:["self"].concat(R)});const k=[].concat(S,h.contains),O=k.concat([{begin:/\(/,end:/\)/,keywords:E,contains:["self"].concat(k)}]),I={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:E,contains:O},x={variants:[{match:[/class/,/\s+/,d,/\s+/,/extends/,/\s+/,n.concat(d,"(",n.concat(/\./,d),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,d],scope:{1:"keyword",3:"title.class"}}]},T={relevance:0,match:n.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]+|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+/),className:"title.class",keywords:{_:[...c,...r]}},C={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},M={variants:[{match:[/function/,/\s+/,d,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[I],illegal:/%/},B={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function $(e){return n.concat("(?!",e.join("|"),")")}const D={match:n.concat(/\b/,$([...i,"super"]),d,n.lookahead(/\(/)),className:"title.function",relevance:0},U={begin:n.concat(/\./,n.lookahead(n.concat(d,/(?![0-9A-Za-z$_(])/))),end:d,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Z={match:[/get|set/,/\s+/,d,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},I]},z="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",F={match:[/const|var|let/,/\s+/,d,/\s*/,/=\s*/,n.lookahead(z)],className:{1:"keyword",3:"title.function"},contains:[I]};return{name:"Javascript",aliases:["js","jsx","mjs","cjs"],keywords:E,exports:{PARAMS_CONTAINS:O,CLASS_REFERENCE:T},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),C,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,_,p,v,S,f,T,{className:"attr",begin:d+n.lookahead(":"),relevance:0},F,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[S,e.REGEXP_MODE,{className:"function",begin:z,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:E,contains:O}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:g.begin,end:g.end},{match:u},{begin:m.begin,"on:begin":m.isTrulyOpeningTag,end:m.end}],subLanguage:"xml",contains:[{begin:m.begin,end:m.end,skip:!0,contains:["self"]}]}]},M,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[I,e.inherit(e.TITLE_MODE,{begin:d,className:"title.function"})]},{match:/\.\.\./,relevance:0},U,{match:"\\$"+d,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[I]},D,B,x,Z,{match:/\$[(.]/}]}}e.exports=b}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/highlight-js-json.471128d2.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-json.471128d2.js deleted file mode 100644 index c87d3c3b..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/highlight-js-json.471128d2.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-json"],{"5ad2":function(n,e){function a(n){const e={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},a={match:/[{}[\],:]/,className:"punctuation",relevance:0},s={beginKeywords:["true","false","null"].join(" ")};return{name:"JSON",contains:[e,a,n.QUOTE_STRING_MODE,s,n.C_NUMBER_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}n.exports=a}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/highlight-js-llvm.6100b125.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-llvm.6100b125.js deleted file mode 100644 index 0beb806e..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/highlight-js-llvm.6100b125.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-llvm"],{"7c30":function(e,n){function a(e){const n=e.regex,a=/([-a-zA-Z$._][\w$.-]*)/,t={className:"type",begin:/\bi\d+(?=\s|\b)/},i={className:"operator",relevance:0,begin:/=/},c={className:"punctuation",relevance:0,begin:/,/},l={className:"number",variants:[{begin:/0[xX][a-fA-F0-9]+/},{begin:/-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?/}],relevance:0},r={className:"symbol",variants:[{begin:/^\s*[a-z]+:/}],relevance:0},s={className:"variable",variants:[{begin:n.concat(/%/,a)},{begin:/%\d+/},{begin:/#\d+/}]},o={className:"title",variants:[{begin:n.concat(/@/,a)},{begin:/@\d+/},{begin:n.concat(/!/,a)},{begin:n.concat(/!\d+/,a)},{begin:/!\d+/}]};return{name:"LLVM IR",keywords:"begin end true false declare define global constant private linker_private internal available_externally linkonce linkonce_odr weak weak_odr appending dllimport dllexport common default hidden protected extern_weak external thread_local zeroinitializer undef null to tail target triple datalayout volatile nuw nsw nnan ninf nsz arcp fast exact inbounds align addrspace section alias module asm sideeffect gc dbg linker_private_weak attributes blockaddress initialexec localdynamic localexec prefix unnamed_addr ccc fastcc coldcc x86_stdcallcc x86_fastcallcc arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ptx_kernel intel_ocl_bicc msp430_intrcc spir_func spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc cc c signext zeroext inreg sret nounwind noreturn noalias nocapture byval nest readnone readonly inlinehint noinline alwaysinline optsize ssp sspreq noredzone noimplicitfloat naked builtin cold nobuiltin noduplicate nonlazybind optnone returns_twice sanitize_address sanitize_memory sanitize_thread sspstrong uwtable returned type opaque eq ne slt sgt sle sge ult ugt ule uge oeq one olt ogt ole oge ord uno ueq une x acq_rel acquire alignstack atomic catch cleanup filter inteldialect max min monotonic nand personality release seq_cst singlethread umax umin unordered xchg add fadd sub fsub mul fmul udiv sdiv fdiv urem srem frem shl lshr ashr and or xor icmp fcmp phi call trunc zext sext fptrunc fpext uitofp sitofp fptoui fptosi inttoptr ptrtoint bitcast addrspacecast select va_arg ret br switch invoke unwind unreachable indirectbr landingpad resume malloc alloca free load store getelementptr extractelement insertelement shufflevector getresult extractvalue insertvalue atomicrmw cmpxchg fence argmemonly double",contains:[t,e.COMMENT(/;\s*$/,null,{relevance:0}),e.COMMENT(/;/,/$/),e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:/"/,end:/[^\\]"/}]},o,c,i,s,r,l]}}e.exports=a}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/highlight-js-markdown.90077643.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-markdown.90077643.js deleted file mode 100644 index dc8d097c..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/highlight-js-markdown.90077643.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-markdown"],{"04b0":function(n,e){function a(n){const e=n.regex,a={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},i={begin:"^[-\\*]{3,}",end:"$"},s={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},c={className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},t={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},g=/[A-Za-z][A-Za-z0-9+.-]*/,d={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:e.concat(/\[.+?\]\(/,g,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},l={className:"strong",contains:[],variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},o={className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{begin:/_(?!_)/,end:/_/,relevance:0}]};l.contains.push(o),o.contains.push(l);let b=[a,d];l.contains=l.contains.concat(b),o.contains=o.contains.concat(b),b=b.concat(l,o);const r={className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:b},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:b}]}]},m={className:"quote",begin:"^>\\s+",contains:b,end:"$"};return{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[r,a,c,l,o,m,s,i,d,t]}}n.exports=a}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/highlight-js-objectivec.bcdf5156.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-objectivec.bcdf5156.js deleted file mode 100644 index 2456ffc8..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/highlight-js-objectivec.bcdf5156.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-objectivec"],{"9bf2":function(e,n){function _(e){const n={className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},_=/[a-zA-Z@][a-zA-Z0-9_]*/,i=["int","float","while","char","export","sizeof","typedef","const","struct","for","union","unsigned","long","volatile","static","bool","mutable","if","do","return","goto","void","enum","else","break","extern","asm","case","short","default","double","register","explicit","signed","typename","this","switch","continue","wchar_t","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","super","unichar","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],t=["false","true","FALSE","TRUE","nil","YES","NO","NULL"],a=["BOOL","dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"],o={$pattern:_,keyword:i,literal:t,built_in:a},s={$pattern:_,keyword:["@interface","@class","@protocol","@implementation"]};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:o,illegal:"/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+s.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:s,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}}e.exports=_}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/highlight-js-perl.757d7b6f.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-perl.757d7b6f.js deleted file mode 100644 index a4c74d11..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/highlight-js-perl.757d7b6f.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-perl"],{"6a51":function(e,n){function t(e){const n=e.regex,t=["abs","accept","alarm","and","atan2","bind","binmode","bless","break","caller","chdir","chmod","chomp","chop","chown","chr","chroot","close","closedir","connect","continue","cos","crypt","dbmclose","dbmopen","defined","delete","die","do","dump","each","else","elsif","endgrent","endhostent","endnetent","endprotoent","endpwent","endservent","eof","eval","exec","exists","exit","exp","fcntl","fileno","flock","for","foreach","fork","format","formline","getc","getgrent","getgrgid","getgrnam","gethostbyaddr","gethostbyname","gethostent","getlogin","getnetbyaddr","getnetbyname","getnetent","getpeername","getpgrp","getpriority","getprotobyname","getprotobynumber","getprotoent","getpwent","getpwnam","getpwuid","getservbyname","getservbyport","getservent","getsockname","getsockopt","given","glob","gmtime","goto","grep","gt","hex","if","index","int","ioctl","join","keys","kill","last","lc","lcfirst","length","link","listen","local","localtime","log","lstat","lt","ma","map","mkdir","msgctl","msgget","msgrcv","msgsnd","my","ne","next","no","not","oct","open","opendir","or","ord","our","pack","package","pipe","pop","pos","print","printf","prototype","push","q|0","qq","quotemeta","qw","qx","rand","read","readdir","readline","readlink","readpipe","recv","redo","ref","rename","require","reset","return","reverse","rewinddir","rindex","rmdir","say","scalar","seek","seekdir","select","semctl","semget","semop","send","setgrent","sethostent","setnetent","setpgrp","setpriority","setprotoent","setpwent","setservent","setsockopt","shift","shmctl","shmget","shmread","shmwrite","shutdown","sin","sleep","socket","socketpair","sort","splice","split","sprintf","sqrt","srand","stat","state","study","sub","substr","symlink","syscall","sysopen","sysread","sysseek","system","syswrite","tell","telldir","tie","tied","time","times","tr","truncate","uc","ucfirst","umask","undef","unless","unlink","unpack","unshift","untie","until","use","utime","values","vec","wait","waitpid","wantarray","warn","when","while","write","x|0","xor","y|0"],s=/[dualxmsipngr]{0,12}/,r={$pattern:/[\w.]+/,keyword:t.join(" ")},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:r},a={begin:/->\{/,end:/\}/},o={variants:[{begin:/\$\d/},{begin:n.concat(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])")},{begin:/[$%@][^\s\w{]/,relevance:0}]},c=[e.BACKSLASH_ESCAPE,i,o],g=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],l=(e,t,r="\\1")=>{const i="\\1"===r?r:n.concat(r,t);return n.concat(n.concat("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,r,s)},d=(e,t,r)=>n.concat(n.concat("(?:",e,")"),t,/(?:\\.|[^\\\/])*?/,r,s),p=[o,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{endsWithParent:!0}),a,{className:"string",contains:c,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{begin:"-?\\w+\\s*=>",relevance:0}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[e.HASH_COMMENT_MODE,{className:"regexp",variants:[{begin:l("s|tr|y",n.either(...g,{capture:!0}))},{begin:l("s|tr|y","\\(","\\)")},{begin:l("s|tr|y","\\[","\\]")},{begin:l("s|tr|y","\\{","\\}")}],relevance:2},{className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",n.either(...g,{capture:!0}),/\1/)},{begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{begin:d("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return i.contains=p,a.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:r,contains:p}}e.exports=t}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/highlight-js-php.cc8d6c27.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-php.cc8d6c27.js deleted file mode 100644 index 3d12a9c9..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/highlight-js-php.cc8d6c27.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-php"],{2907:function(e,r){function t(e){const r={className:"variable",begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*(?![A-Za-z0-9])(?![$])"},t={className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/,contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string",contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'"}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},c={className:"number",variants:[{begin:"\\b0b[01]+(?:_[01]+)*\\b"},{begin:"\\b0o[0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0x[\\da-f]+(?:_[\\da-f]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:e[+-]?\\d+)?"}],relevance:0},s={keyword:"__CLASS__ __DIR__ __FILE__ __FUNCTION__ __LINE__ __METHOD__ __NAMESPACE__ __TRAIT__ die echo exit include include_once print require require_once array abstract and as binary bool boolean break callable case catch class clone const continue declare default do double else elseif empty enddeclare endfor endforeach endif endswitch endwhile enum eval extends final finally float for foreach from global goto if implements instanceof insteadof int integer interface isset iterable list match|0 mixed new object or private protected public real return string switch throw trait try unset use var void while xor yield",literal:"false null true",built_in:"Error|0 AppendIterator ArgumentCountError ArithmeticError ArrayIterator ArrayObject AssertionError BadFunctionCallException BadMethodCallException CachingIterator CallbackFilterIterator CompileError Countable DirectoryIterator DivisionByZeroError DomainException EmptyIterator ErrorException Exception FilesystemIterator FilterIterator GlobIterator InfiniteIterator InvalidArgumentException IteratorIterator LengthException LimitIterator LogicException MultipleIterator NoRewindIterator OutOfBoundsException OutOfRangeException OuterIterator OverflowException ParentIterator ParseError RangeException RecursiveArrayIterator RecursiveCachingIterator RecursiveCallbackFilterIterator RecursiveDirectoryIterator RecursiveFilterIterator RecursiveIterator RecursiveIteratorIterator RecursiveRegexIterator RecursiveTreeIterator RegexIterator RuntimeException SeekableIterator SplDoublyLinkedList SplFileInfo SplFileObject SplFixedArray SplHeap SplMaxHeap SplMinHeap SplObjectStorage SplObserver SplObserver SplPriorityQueue SplQueue SplStack SplSubject SplSubject SplTempFileObject TypeError UnderflowException UnexpectedValueException UnhandledMatchError ArrayAccess Closure Generator Iterator IteratorAggregate Serializable Stringable Throwable Traversable WeakReference WeakMap Directory __PHP_Incomplete_Class parent php_user_filter self static stdClass"};return{case_insensitive:!0,keywords:s,contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[t]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler"}),t,{className:"keyword",begin:/\$this\b/},r,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:s,contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,c]}]},{className:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",relevance:0,end:";",contains:[e.UNDERSCORE_TITLE_MODE]},l,c]}}e.exports=t}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/highlight-js-python.c214ed92.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-python.c214ed92.js deleted file mode 100644 index c8d2ed8d..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/highlight-js-python.c214ed92.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-python"],{9510:function(e,n){function a(e){const n=e.regex,a=/[\p{XID_Start}_]\p{XID_Continue}*/u,i=["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],s=["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],t=["__debug__","Ellipsis","False","None","NotImplemented","True"],r=["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"],l={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:i,built_in:s,literal:t,type:r},o={className:"meta",begin:/^(>>>|\.\.\.) /},b={className:"subst",begin:/\{/,end:/\}/,keywords:l,illegal:/#/},c={begin:/\{\{/,relevance:0},d={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,o],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,o],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,o,c,b]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,o,c,b]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,c,b]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,c,b]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},p="[0-9](_?[0-9])*",g=`(\\b(${p}))?\\.(${p})|\\b(${p})\\.`,m={className:"number",relevance:0,variants:[{begin:`(\\b(${p})|(${g}))[eE][+-]?(${p})[jJ]?\\b`},{begin:`(${g})[jJ]?`},{begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${p})[jJ]\\b`}]},_={className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:l,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},u={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:["self",o,m,d,e.HASH_COMMENT_MODE]}]};return b.contains=[d,m,o],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:l,illegal:/(<\/|->|\?)|=>/,contains:[o,m,{begin:/\bself\b/},{beginKeywords:"if",relevance:0},d,_,e.HASH_COMMENT_MODE,{match:[/def/,/\s+/,a],scope:{1:"keyword",3:"title.function"},contains:[u]},{variants:[{match:[/class/,/\s+/,a,/\s*/,/\(\s*/,a,/\s*\)/]},{match:[/class/,/\s+/,a]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[m,u,d]}]}}e.exports=a}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/highlight-js-ruby.f889d392.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-ruby.f889d392.js deleted file mode 100644 index a8355da1..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/highlight-js-ruby.f889d392.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-ruby"],{"82cb":function(e,n){function a(e){const n=e.regex,a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor __FILE__",built_in:"proc lambda",literal:"true false nil"},s={className:"doctag",begin:"@[A-Za-z]+"},b={begin:"#<",end:">"},c=[e.COMMENT("#","$",{contains:[s]}),e.COMMENT("^=begin","^=end",{contains:[s],relevance:10}),e.COMMENT("^__END__","\\n$")],r={className:"subst",begin:/#\{/,end:/\}/,keywords:i},d={className:"string",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:n.concat(/<<[-~]?'?/,n.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,r]})]}]},t="[1-9](_?[0-9])*|0",o="[0-9](_?[0-9])*",g={className:"number",relevance:0,variants:[{begin:`\\b(${t})(\\.(${o}))?([eE][+-]?(${o})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:i},_=[d,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE,relevance:0}]}].concat(c)},{className:"function",begin:n.concat(/def\s+/,n.lookahead(a+"\\s*(\\(|;|$)")),relevance:0,keywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:a}),l].concat(c)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[d,{begin:a}],relevance:0},g,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,r],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(b,c),relevance:0}].concat(b,c);r.contains=_,l.contains=_;const w="[>?]>",E="[\\w#]+\\(\\w+\\):\\d+:\\d+>",u="(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>",N=[{begin:/^\s*=>/,starts:{end:"$",contains:_}},{className:"meta",begin:"^("+w+"|"+E+"|"+u+")(?=[ ])",starts:{end:"$",contains:_}}];return c.unshift(b),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/,contains:[e.SHEBANG({binary:"ruby"})].concat(N).concat(c).concat(_)}}e.exports=a}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/highlight-js-scss.62ee18da.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-scss.62ee18da.js deleted file mode 100644 index 8f46244f..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/highlight-js-scss.62ee18da.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-scss"],{6113:function(e,t){const i=e=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/}}),o=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],r=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],a=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],n=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],l=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-height","max-width","min-height","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse();function s(e){const t=i(e),s=n,d=a,c="@[a-z-]+",p="and or not only",g="[a-zA-Z-][a-zA-Z0-9_-]*",m={className:"variable",begin:"(\\$"+g+")\\b"};return{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,t.CSS_NUMBER_MODE,{className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},t.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag",begin:"\\b("+o.join("|")+")\\b",relevance:0},{className:"selector-pseudo",begin:":("+d.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+s.join("|")+")"},m,{begin:/\(/,end:/\)/,contains:[t.CSS_NUMBER_MODE]},t.CSS_VARIABLE,{className:"attribute",begin:"\\b("+l.join("|")+")\\b"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:/:/,end:/[;}{]/,contains:[t.BLOCK_COMMENT,m,t.HEXCOLOR,t.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,t.IMPORTANT]},{begin:"@(page|font-face)",keywords:{$pattern:c,keyword:"@page @font-face"}},{begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,keyword:p,attribute:r.join(" ")},contains:[{begin:c,className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute"},m,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,t.HEXCOLOR,t.CSS_NUMBER_MODE]},t.FUNCTION_DISPATCH]}}e.exports=s}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/highlight-js-shell.dd7f411f.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-shell.dd7f411f.js deleted file mode 100644 index 999f4527..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/highlight-js-shell.dd7f411f.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-shell"],{b65b:function(s,n){function e(s){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}s.exports=e}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/highlight-js-swift.84f3e88c.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-swift.84f3e88c.js deleted file mode 100644 index 89d1daf1..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/highlight-js-swift.84f3e88c.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-swift"],{"2a39":function(e,n){function a(e){return e?"string"===typeof e?e:e.source:null}function t(e){return i("(?=",e,")")}function i(...e){const n=e.map(e=>a(e)).join("");return n}function s(e){const n=e[e.length-1];return"object"===typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{}}function u(...e){const n=s(e),t="("+(n.capture?"":"?:")+e.map(e=>a(e)).join("|")+")";return t}const c=e=>i(/\b/,e,/\w$/.test(e)?/\b/:/\B/),o=["Protocol","Type"].map(c),r=["init","self"].map(c),l=["Any","Self"],m=["actor","associatedtype","async","await",/as\?/,/as!/,"as","break","case","catch","class","continue","convenience","default","defer","deinit","didSet","do","dynamic","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],p=["false","nil","true"],d=["assignment","associativity","higherThan","left","lowerThan","none","right"],F=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warn_unqualified_access","#warning"],b=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],h=u(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),f=u(h,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),w=i(h,f,"*"),y=u(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),g=u(y,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),E=i(y,g,"*"),v=i(/[A-Z]/,g,"*"),A=["autoclosure",i(/convention\(/,u("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",i(/objc\(/,E,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","testable","UIApplicationMain","unknown","usableFromInline"],N=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function C(e){const n={match:/\s+/,relevance:0},a=e.COMMENT("/\\*","\\*/",{contains:["self"]}),s=[e.C_LINE_COMMENT_MODE,a],h={match:[/\./,u(...o,...r)],className:{2:"keyword"}},y={match:i(/\./,u(...m)),relevance:0},C=m.filter(e=>"string"===typeof e).concat(["_|0"]),k=m.filter(e=>"string"!==typeof e).concat(l).map(c),D={variants:[{className:"keyword",match:u(...k,...r)}]},B={$pattern:u(/\b\w+/,/#\w+/),keyword:C.concat(F),literal:p},_=[h,y,D],S={match:i(/\./,u(...b)),relevance:0},M={className:"built_in",match:i(/\b/,u(...b),/(?=\()/)},x=[S,M],$={match:/->/,relevance:0},I={className:"operator",relevance:0,variants:[{match:w},{match:`\\.(\\.|${f})+`}]},O=[$,I],L="([0-9]_*)+",T="([0-9a-fA-F]_*)+",j={className:"number",relevance:0,variants:[{match:`\\b(${L})(\\.(${L}))?([eE][+-]?(${L}))?\\b`},{match:`\\b0x(${T})(\\.(${T}))?([pP][+-]?(${L}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},P=(e="")=>({className:"subst",variants:[{match:i(/\\/,e,/[0\\tnr"']/)},{match:i(/\\/,e,/u\{[0-9a-fA-F]{1,8}\}/)}]}),K=(e="")=>({className:"subst",match:i(/\\/,e,/[\t ]*(?:[\r\n]|\r\n)/)}),z=(e="")=>({className:"subst",label:"interpol",begin:i(/\\/,e,/\(/),end:/\)/}),q=(e="")=>({begin:i(e,/"""/),end:i(/"""/,e),contains:[P(e),K(e),z(e)]}),U=(e="")=>({begin:i(e,/"/),end:i(/"/,e),contains:[P(e),z(e)]}),Z={className:"string",variants:[q(),q("#"),q("##"),q("###"),U(),U("#"),U("##"),U("###")]},V={match:i(/`/,E,/`/)},W={className:"variable",match:/\$\d+/},G={className:"variable",match:`\\$${g}+`},J=[V,W,G],R={match:/(@|#)available/,className:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:N,contains:[...O,j,Z]}]}},X={className:"keyword",match:i(/@/,u(...A))},H={className:"meta",match:i(/@/,E)},Q=[R,X,H],Y={match:t(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:i(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,g,"+")},{className:"type",match:v,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:i(/\s+&\s+/,t(v)),relevance:0}]},ee={begin://,keywords:B,contains:[...s,..._,...Q,$,Y]};Y.contains.push(ee);const ne={match:i(E,/\s*:/),keywords:"_|0",relevance:0},ae={begin:/\(/,end:/\)/,relevance:0,keywords:B,contains:["self",ne,...s,..._,...x,...O,j,Z,...J,...Q,Y]},te={begin://,contains:[...s,Y]},ie={begin:u(t(i(E,/\s*:/)),t(i(E,/\s+/,E,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:E}]},se={begin:/\(/,end:/\)/,keywords:B,contains:[ie,...s,..._,...O,j,Z,...Q,Y,ae],endsParent:!0,illegal:/["']/},ue={match:[/func/,/\s+/,u(V.match,E,w)],className:{1:"keyword",3:"title.function"},contains:[te,se,n],illegal:[/\[/,/%/]},ce={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[te,se,n],illegal:/\[|%/},oe={match:[/operator/,/\s+/,w],className:{1:"keyword",3:"title"}},re={begin:[/precedencegroup/,/\s+/,v],className:{1:"keyword",3:"title"},contains:[Y],keywords:[...d,...p],end:/}/};for(const t of Z.variants){const e=t.contains.find(e=>"interpol"===e.label);e.keywords=B;const n=[..._,...x,...O,j,Z,...J];e.contains=[...n,{begin:/\(/,end:/\)/,contains:["self",...n]}]}return{name:"Swift",keywords:B,contains:[...s,ue,ce,{beginKeywords:"struct protocol class extension enum actor",end:"\\{",excludeEnd:!0,keywords:B,contains:[e.inherit(e.TITLE_MODE,{className:"title.class",begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/}),..._]},oe,re,{beginKeywords:"import",end:/$/,contains:[...s],relevance:0},..._,...x,...O,j,Z,...J,...Q,Y,ae]}}e.exports=C}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/highlight-js-xml.9c3688c7.js b/Sources/Mockingbird.docc/Renderer/js/highlight-js-xml.9c3688c7.js deleted file mode 100644 index 55cc1e27..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/highlight-js-xml.9c3688c7.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-xml"],{"8dcb":function(e,n){function a(e){const n=e.regex,a=n.concat(/[A-Z_]/,n.optional(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),s=/[A-Za-z0-9._:-]+/,t={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},i={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},c=e.inherit(i,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{className:"string"}),r=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),g={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin://,relevance:10,contains:[i,r,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[i,c,r,l]}]}]},e.COMMENT(//,{relevance:10}),{begin://,relevance:10},t,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[g],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[g],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:n.concat(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:a,relevance:0,starts:g}]},{className:"tag",begin:n.concat(/<\//,n.lookahead(n.concat(a,/>/))),contains:[{className:"name",begin:a,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}e.exports=a}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/index.04a13994.js b/Sources/Mockingbird.docc/Renderer/js/index.04a13994.js deleted file mode 100644 index 68457d2c..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/index.04a13994.js +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */(function(e){function t(t){for(var i,n,h=t[0],a=t[1],c=t[2],l=0,u=[];l])/g,n=/^-+/,r=/["'&<>]/g;function s(e){return e.trim().replace(i,"-").replace(n,"").toLowerCase()}function h(e){const t=e=>({'"':""","'":"'","&":"&","<":"<",">":">"}[e]||e);return e.replace(r,t)}const a={zero:"zero",one:"one",two:"two",few:"few",many:"many",other:"other"},c={cardinal:"cardinal",ordinal:"ordinal"};function l(e,t){const{cardinal:o}=c,{one:i,other:n}=a,r="en",s=1===t?i:n;if(!e[r]||!e[r][s])throw new Error("No default choices provided to pluralize using default locale "+r);let h=r,l=s;if("Intl"in window&&"PluralRules"in window.Intl){const i=navigator.languages?navigator.languages:[navigator.language],n=new Intl.PluralRules(i,{type:o}),r=n.select(t),s=n.resolvedOptions().locale;e[s]&&e[s][r]&&(h=s,l=r)}return e[h][l]}function u(e){const t=/#(\d)(.*)/.exec(e);if(null===t)return e;const[o,i]=t.slice(1),n=`\\3${o} `;return`#${n}${i}`}},"1b02":function(e,t,o){"use strict";o("a6ff")},"2be1":function(e,t,o){"use strict";o("9b4f")},3908:function(e,t,o){"use strict";function i(e){let t=null,o=e-1;const i=new Promise(e=>{t=e});return requestAnimationFrame((function e(){o-=1,o<=0?t():requestAnimationFrame(e)})),i}o.d(t,"a",(function(){return i}))},"5c0b":function(e,t,o){"use strict";o("9c0c")},"63b8":function(e,t,o){"use strict";o.d(t,"b",(function(){return i})),o.d(t,"c",(function(){return n})),o.d(t,"a",(function(){return r})),o.d(t,"d",(function(){return h}));const i={large:"large",medium:"medium",small:"small"},n={default:"default",nav:"nav"},r={[n.default]:{[i.large]:{minWidth:1069,contentWidth:980},[i.medium]:{minWidth:736,maxWidth:1068,contentWidth:692},[i.small]:{minWidth:320,maxWidth:735,contentWidth:280}},[n.nav]:{[i.large]:{minWidth:1024},[i.medium]:{minWidth:768,maxWidth:1023},[i.small]:{minWidth:320,maxWidth:767}}},s={[i.small]:0,[i.medium]:1,[i.large]:2};function h(e,t){return s[e]>s[t]}},6842:function(e,t,o){"use strict";function i(e,t,o){let i,n=e,r=t;for("string"===typeof r&&(r=[r]),i=0;ie.json()).catch(()=>({}))}const h=(e,t)=>i(n,e,t)},7138:function(e,t,o){"use strict";o("813c")},"813c":function(e,t,o){},"821b":function(e,t,o){"use strict";t["a"]={auto:{label:"Auto",value:"auto"},dark:{label:"Dark",value:"dark"},light:{label:"Light",value:"light"}}},"942d":function(e,t,o){"use strict";o.d(t,"a",(function(){return i})),o.d(t,"b",(function(){return n})),o.d(t,"c",(function(){return r}));const i=52,n=48,r="nav-sticky-anchor"},9895:function(e,t,o){"use strict";o.d(t,"b",(function(){return i})),o.d(t,"a",(function(){return n}));const i="not-found",n="documentation-topic"},"9b4f":function(e,t,o){},"9c0c":function(e,t,o){},a6aa:function(e,t,o){"use strict";o("d964")},a6ff:function(e,t,o){},d26a:function(e,t,o){"use strict";o.d(t,"c",(function(){return n})),o.d(t,"b",(function(){return r})),o.d(t,"a",(function(){return s}));var i={input:"input",tags:"tags"};function n(e={}){return Object.entries(e).reduce((e,[t,o])=>o?e.concat(`${encodeURIComponent(t)}=${encodeURIComponent(o)}`):e,[]).join("&")}function r(e,{changes:t,language:o,context:i}={}){const[r,s]=e.split("#"),h=r.match(/\?.*/),a=n({changes:t,language:o,context:i}),c=h?"&":"?",l=(s?r:e).replace(/^\/documentation\/mockingbird$/,"/").replace(/^\/documentation\/mockingbird/,""),u=a?`${c}${a}`:"",d=s?"#"+s:"";return`${l}${u}${d}`}function s(e,t){const{query:{changes:o,[i.input]:n,[i.tags]:r,...s}={}}=e,{query:{changes:h,[i.input]:a,[i.tags]:c,...l}={}}=t;return e.name===t.name&&JSON.stringify({path:e.path,query:s})===JSON.stringify({path:t.path,query:l})}},d369:function(e,t,o){"use strict";const i={getItem:e=>{try{return localStorage.getItem(e)}catch(t){return null}},setItem:(e,t)=>{try{localStorage.setItem(e,t)}catch(o){}}},n={preferredColorScheme:"developer.setting.preferredColorScheme",preferredLanguage:"docs.setting.preferredLanguage"},r={preferredColorScheme:"docs.setting.preferredColorScheme"};t["a"]=Object.defineProperties({},Object.keys(n).reduce((e,t)=>({...e,[t]:{get:()=>{const e=r[t],o=i.getItem(n[t]);return e?o||i.getItem(e):o},set:e=>i.setItem(n[t],e)}}),{}))},d964:function(e,t,o){},e425:function(e,t,o){"use strict";var i=o("821b"),n=o("d369");const r="undefined"!==typeof window.matchMedia&&[i["a"].light.value,i["a"].dark.value,"no-preference"].some(e=>window.matchMedia(`(prefers-color-scheme: ${e})`).matches),s=r?i["a"].auto:i["a"].light;t["a"]={state:{preferredColorScheme:n["a"].preferredColorScheme||s.value,supportsAutoColorScheme:r,systemColorScheme:i["a"].light.value},setPreferredColorScheme(e){this.state.preferredColorScheme=e,n["a"].preferredColorScheme=e},setSystemColorScheme(e){this.state.systemColorScheme=e},syncPreferredColorScheme(){n["a"].preferredColorScheme&&n["a"].preferredColorScheme!==this.state.preferredColorScheme&&(this.state.preferredColorScheme=n["a"].preferredColorScheme)}}},e4ca:function(e,t,o){},e51f:function(e,t,o){"use strict";o("e4ca")},ed96:function(e,t,o){o.p=window.baseUrl},f161:function(e,t,o){"use strict";o.r(t);o("ed96");var i=o("2b0e"),n=o("8c4f"),r=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{class:{fromkeyboard:e.fromKeyboard,hascustomheader:e.hasCustomHeader},attrs:{id:"app"}},[o("a",{attrs:{href:"#main",id:"skip-nav"}},[e._v("Skip Navigation")]),o("InitialLoadingPlaceholder"),e._t("header",(function(){return[e.hasCustomHeader?o("custom-header",{attrs:{"data-color-scheme":e.preferredColorScheme}}):e._e()]}),{isTargetIDE:e.isTargetIDE}),o("div",{attrs:{id:e.baseNavStickyAnchorId}}),e._t("default",(function(){return[o("router-view"),e.hasCustomFooter?o("custom-footer",{attrs:{"data-color-scheme":e.preferredColorScheme}}):o("Footer")]}),{isTargetIDE:e.isTargetIDE}),e._t("footer",null,{isTargetIDE:e.isTargetIDE})],2)},s=[],h=o("e425"),a=o("821b"),c=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("footer",{staticClass:"footer"},[o("div",{staticClass:"row"},[o("ColorSchemeToggle")],1)])},l=[],u=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{staticClass:"color-scheme-toggle",attrs:{"aria-label":"Select a color scheme preference",role:"radiogroup",tabindex:"0"}},e._l(e.options,(function(t){return o("label",{key:t.value},[o("input",{attrs:{type:"radio"},domProps:{checked:t.value==e.preferredColorScheme,value:t.value},on:{input:e.setPreferredColorScheme}}),o("div",{staticClass:"text"},[e._v(e._s(t.label))])])})),0)},d=[],g={name:"ColorSchemeToggle",data:()=>({appState:h["a"].state}),computed:{options:({supportsAutoColorScheme:e})=>[a["a"].light,a["a"].dark,...e?[a["a"].auto]:[]],preferredColorScheme:({appState:e})=>e.preferredColorScheme,supportsAutoColorScheme:({appState:e})=>e.supportsAutoColorScheme},methods:{setPreferredColorScheme:e=>{h["a"].setPreferredColorScheme(e.target.value)}},watch:{preferredColorScheme:{immediate:!0,handler(e){document.body.dataset.colorScheme=e}}}},f=g,m=(o("2be1"),o("2877")),p=Object(m["a"])(f,u,d,!1,null,"4472ec1e",null),j=p.exports,v={name:"Footer",components:{ColorSchemeToggle:j}},w=v,b=(o("1b02"),Object(m["a"])(w,c,l,!1,null,"67c823d8",null)),y=b.exports,S=function(){var e=this,t=e.$createElement,o=e._self._c||t;return e.loaded?e._e():o("div",{staticClass:"InitialLoadingPlaceholder",attrs:{id:"loading-placeholder"}})},E=[],C={name:"InitialLoadingPlaceholder",data(){return{loaded:!1}},created(){this.$router.onReady(()=>{this.loaded=!0})}},_=C,P=(o("e51f"),Object(m["a"])(_,S,E,!1,null,"47e4ace8",null)),T=P.exports,k=o("942d"),A=o("6842");function O(e,t){return e&&"object"===typeof e&&Object.prototype.hasOwnProperty.call(e,t)&&"string"===typeof e[t]}function x(e,t,o,i){if(!t||"object"!==typeof t||i&&(O(t,"light")||O(t,"dark"))){let n=t;if(O(t,i)&&(n=t[i]),"object"===typeof n)return;o[e]=n}else Object.entries(t).forEach(([t,n])=>{const r=[e,t].join("-");x(r,n,o,i)})}function L(e,t="light"){const o={},i=e||{};return x("-",i,o,t),o}var D={name:"CoreApp",components:{Footer:y,InitialLoadingPlaceholder:T},provide(){return{isTargetIDE:this.isTargetIDE,performanceMetricsEnabled:"true"===Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_PERFORMANCE_ENABLED}},data(){return{appState:h["a"].state,fromKeyboard:!1,isTargetIDE:"ide"===Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET,themeSettings:A["d"],baseNavStickyAnchorId:k["c"]}},computed:{currentColorScheme:({appState:e})=>e.systemColorScheme,preferredColorScheme:({appState:e})=>e.preferredColorScheme,CSSCustomProperties:({themeSettings:e,currentColorScheme:t})=>L(e.theme,t),hasCustomHeader:()=>!!window.customElements.get("custom-header"),hasCustomFooter:()=>!!window.customElements.get("custom-footer")},props:{enableThemeSettings:{type:Boolean,default:!0}},watch:{CSSCustomProperties:{immediate:!0,handler(e){this.detachStylesFromRoot(e),this.attachStylesToRoot(e)}}},async created(){window.addEventListener("keydown",this.onKeyDown),this.$bridge.on("navigation",this.handleNavigationRequest),this.enableThemeSettings&&Object.assign(this.themeSettings,await Object(A["b"])()),window.addEventListener("pageshow",this.syncPreferredColorScheme),this.$once("hook:beforeDestroy",()=>{window.removeEventListener("pageshow",this.syncPreferredColorScheme)})},mounted(){(document.querySelector(".footer-current-year")||{}).innerText=(new Date).getFullYear(),this.attachColorSchemeListeners()},beforeDestroy(){this.fromKeyboard?window.removeEventListener("mousedown",this.onMouseDown):window.removeEventListener("keydown",this.onKeyDown),this.$bridge.off("navigation",this.handleNavigationRequest),this.detachStylesFromRoot(this.CSSCustomProperties)},methods:{onKeyDown(){this.fromKeyboard=!0,window.addEventListener("mousedown",this.onMouseDown),window.removeEventListener("keydown",this.onKeyDown)},onMouseDown(){this.fromKeyboard=!1,window.addEventListener("keydown",this.onKeyDown),window.removeEventListener("mousedown",this.onMouseDown)},handleNavigationRequest(e){this.$router.push(e)},attachColorSchemeListeners(){if(!window.matchMedia)return;const e=window.matchMedia("(prefers-color-scheme: dark)");e.addListener(this.onColorSchemePreferenceChange),this.$once("hook:beforeDestroy",()=>{e.removeListener(this.onColorSchemePreferenceChange)}),this.onColorSchemePreferenceChange(e)},onColorSchemePreferenceChange({matches:e}){const t=e?a["a"].dark:a["a"].light;h["a"].setSystemColorScheme(t.value)},attachStylesToRoot(e){const t=document.documentElement;Object.entries(e).filter(([,e])=>Boolean(e)).forEach(([e,o])=>{t.style.setProperty(e,o)})},detachStylesFromRoot(e){const t=document.documentElement;Object.entries(e).forEach(([e])=>{t.style.removeProperty(e)})},syncPreferredColorScheme(){h["a"].syncPreferredColorScheme()}}},I=D,$=(o("5c0b"),o("a6aa"),Object(m["a"])(I,r,s,!1,null,"bf0cd418",null)),N=$.exports;class R{constructor(){this.$send=()=>{}}send(e){this.$send(e)}}class U{constructor(){const{webkit:{messageHandlers:{bridge:e={}}={}}={}}=window;this.bridge=e;const{postMessage:t=(()=>{})}=e;this.$send=t.bind(e)}send(e){this.$send(e)}}class M{constructor(e=new R){this.backend=e,this.listeners={}}send(e){this.backend.send(e)}receive(e){this.emit(e.type,e.data)}emit(e,t){this.listeners[e]&&this.listeners[e].forEach(e=>e(t))}on(e,t){this.listeners[e]||(this.listeners[e]=new Set),this.listeners[e].add(t)}off(e,t){this.listeners[e]&&this.listeners[e].delete(t)}}var B={install(e,t){let o;o=t.performanceMetricsEnabled||"ide"===t.appTarget?new U:new R,e.prototype.$bridge=new M(o)}};function W(e){return"custom-"+e}function V(e){return class extends HTMLElement{constructor(){super();const t=this.attachShadow({mode:"open"}),o=e.content.cloneNode(!0);t.appendChild(o)}}}function q(e){const t=W(e),o=document.getElementById(t);o&&window.customElements.define(t,V(o))}function F(e,t={names:["header","footer"]}){const{names:o}=t;e.config.ignoredElements=/^custom-/,o.forEach(q)}function H(e,t){const{value:o=!1}=t;e.style.display=o?"none":""}var K={hide:H};function G(e,{performanceMetrics:t=!1}={}){e.config.productionTip=!1,e.use(F),e.directive("hide",K.hide),e.use(B,{appTarget:Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET,performanceMetricsEnabled:t}),window.bridge=e.prototype.$bridge,e.config.performance=t}var J=o("9895"),z=o("63b8"),Y=o("3908"),X=o("002d"),Q=o("d26a");function Z(){const{location:e}=window;return e.pathname+e.search+e.hash}function ee(){const e=Math.max(document.documentElement.clientWidth||0,window.innerWidth||0);return ePromise.all([o.e("documentation-topic~topic~tutorials-overview"),o.e("tutorials-overview")]).then(o.bind(null,"f025"))},{path:"/tutorials/:id/*",name:"topic",component:()=>Promise.all([o.e("documentation-topic~topic~tutorials-overview"),o.e("topic")]).then(o.bind(null,"3213"))},{path:"*",name:J["a"],component:()=>Promise.all([o.e("documentation-topic~topic~tutorials-overview"),o.e("documentation-topic")]).then(o.bind(null,"f8ac"))},{path:"*",name:J["b"],component:ye},{path:"*",name:"server-error",component:me}];function Ee(e={}){const t=new n["a"]({mode:"history",base:A["a"],scrollBehavior:te,...e,routes:e.routes||Se});return t.onReady(()=>{"scrollRestoration"in window.history&&(window.history.scrollRestoration="manual"),oe()}),"ide"!==Object({NODE_ENV:"production",VUE_APP_TITLE:"Documentation",BASE_URL:"{{BASE_PATH}}/"}).VUE_APP_TARGET&&t.onError(e=>{const{route:o={path:"/"}}=e;t.replace({name:"server-error",params:[o.path]})}),window.addEventListener("unload",ie),t}i["default"].use(G),i["default"].use(n["a"]),new i["default"]({router:Ee(),render:e=>e(N)}).$mount("#app")}}); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/js/topic.c4c8f983.js b/Sources/Mockingbird.docc/Renderer/js/topic.c4c8f983.js deleted file mode 100644 index af534639..00000000 --- a/Sources/Mockingbird.docc/Renderer/js/topic.c4c8f983.js +++ /dev/null @@ -1,20 +0,0 @@ -/*! - * This source file is part of the Swift.org open source project - * - * Copyright (c) 2021 Apple Inc. and the Swift project authors - * Licensed under Apache License v2.0 with Runtime Library Exception - * - * See https://swift.org/LICENSE.txt for license information - * See https://swift.org/CONTRIBUTORS.txt for Swift project authors - */ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["topic"],{"00f4":function(e,t,n){"use strict";n("282f")},"0466":function(e,t,n){},"0530":function(e,t,n){"use strict";n("dbeb")},"0b61":function(e,t,n){},1006:function(e,t,n){"use strict";n("a95e")},"14b7":function(e,t,n){},"1aae":function(e,t,n){},"1d42":function(e,t,n){},"1dd5":function(e,t,n){"use strict";n("7b17")},"282f":function(e,t,n){},"2b88":function(e,t,n){"use strict"; -/*! - * portal-vue © Thorsten Lünborg, 2019 - * - * Version: 2.1.7 - * - * LICENCE: MIT - * - * https://github.com/linusborg/portal-vue - * - */function s(e){return e&&"object"===typeof e&&"default"in e?e["default"]:e}Object.defineProperty(t,"__esModule",{value:!0});var i=s(n("2b0e"));function r(e){return r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}function o(e){return a(e)||l(e)||c()}function a(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t1&&void 0!==arguments[1]?arguments[1]:{};return e.reduce((function(e,n){var s=n.passengers[0],i="function"===typeof s?s(t):n.passengers;return e.concat(i)}),[])}function h(e,t){return e.map((function(e,t){return[t,e]})).sort((function(e,n){return t(e[1],n[1])||e[0]-n[0]})).map((function(e){return e[1]}))}function m(e,t){return t.reduce((function(t,n){return e.hasOwnProperty(n)&&(t[n]=e[n]),t}),{})}var f={},v={},g={},y=i.extend({data:function(){return{transports:f,targets:v,sources:g,trackInstances:u}},methods:{open:function(e){if(u){var t=e.to,n=e.from,s=e.passengers,r=e.order,o=void 0===r?1/0:r;if(t&&n&&s){var a={to:t,from:n,passengers:d(s),order:o},l=Object.keys(this.transports);-1===l.indexOf(t)&&i.set(this.transports,t,[]);var c=this.$_getTransportIndex(a),p=this.transports[t].slice(0);-1===c?p.push(a):p[c]=a,this.transports[t]=h(p,(function(e,t){return e.order-t.order}))}}},close:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e.to,s=e.from;if(n&&(s||!1!==t)&&this.transports[n])if(t)this.transports[n]=[];else{var i=this.$_getTransportIndex(e);if(i>=0){var r=this.transports[n].slice(0);r.splice(i,1),this.transports[n]=r}}},registerTarget:function(e,t,n){u&&(this.trackInstances&&!n&&this.targets[e]&&console.warn("[portal-vue]: Target ".concat(e," already exists")),this.$set(this.targets,e,Object.freeze([t])))},unregisterTarget:function(e){this.$delete(this.targets,e)},registerSource:function(e,t,n){u&&(this.trackInstances&&!n&&this.sources[e]&&console.warn("[portal-vue]: source ".concat(e," already exists")),this.$set(this.sources,e,Object.freeze([t])))},unregisterSource:function(e){this.$delete(this.sources,e)},hasTarget:function(e){return!(!this.targets[e]||!this.targets[e][0])},hasSource:function(e){return!(!this.sources[e]||!this.sources[e][0])},hasContentFor:function(e){return!!this.transports[e]&&!!this.transports[e].length},$_getTransportIndex:function(e){var t=e.to,n=e.from;for(var s in this.transports[t])if(this.transports[t][s].from===n)return+s;return-1}}}),b=new y(f),C=1,w=i.extend({name:"portal",props:{disabled:{type:Boolean},name:{type:String,default:function(){return String(C++)}},order:{type:Number,default:0},slim:{type:Boolean},slotProps:{type:Object,default:function(){return{}}},tag:{type:String,default:"DIV"},to:{type:String,default:function(){return String(Math.round(1e7*Math.random()))}}},created:function(){var e=this;this.$nextTick((function(){b.registerSource(e.name,e)}))},mounted:function(){this.disabled||this.sendUpdate()},updated:function(){this.disabled?this.clear():this.sendUpdate()},beforeDestroy:function(){b.unregisterSource(this.name),this.clear()},watch:{to:function(e,t){t&&t!==e&&this.clear(t),this.sendUpdate()}},methods:{clear:function(e){var t={from:this.name,to:e||this.to};b.close(t)},normalizeSlots:function(){return this.$scopedSlots.default?[this.$scopedSlots.default]:this.$slots.default},normalizeOwnChildren:function(e){return"function"===typeof e?e(this.slotProps):e},sendUpdate:function(){var e=this.normalizeSlots();if(e){var t={from:this.name,to:this.to,passengers:o(e),order:this.order};b.open(t)}else this.clear()}},render:function(e){var t=this.$slots.default||this.$scopedSlots.default||[],n=this.tag;return t&&this.disabled?t.length<=1&&this.slim?this.normalizeOwnChildren(t)[0]:e(n,[this.normalizeOwnChildren(t)]):this.slim?e():e(n,{class:{"v-portal":!0},style:{display:"none"},key:"v-portal-placeholder"})}}),_=i.extend({name:"portalTarget",props:{multiple:{type:Boolean,default:!1},name:{type:String,required:!0},slim:{type:Boolean,default:!1},slotProps:{type:Object,default:function(){return{}}},tag:{type:String,default:"div"},transition:{type:[String,Object,Function]}},data:function(){return{transports:b.transports,firstRender:!0}},created:function(){var e=this;this.$nextTick((function(){b.registerTarget(e.name,e)}))},watch:{ownTransports:function(){this.$emit("change",this.children().length>0)},name:function(e,t){b.unregisterTarget(t),b.registerTarget(e,this)}},mounted:function(){var e=this;this.transition&&this.$nextTick((function(){e.firstRender=!1}))},beforeDestroy:function(){b.unregisterTarget(this.name)},computed:{ownTransports:function(){var e=this.transports[this.name]||[];return this.multiple?e:0===e.length?[]:[e[e.length-1]]},passengers:function(){return p(this.ownTransports,this.slotProps)}},methods:{children:function(){return 0!==this.passengers.length?this.passengers:this.$scopedSlots.default?this.$scopedSlots.default(this.slotProps):this.$slots.default||[]},noWrapper:function(){var e=this.slim&&!this.transition;return e&&this.children().length>1&&console.warn("[portal-vue]: PortalTarget with `slim` option received more than one child element."),e}},render:function(e){var t=this.noWrapper(),n=this.children(),s=this.transition||this.tag;return t?n[0]:this.slim&&!s?e():e(s,{props:{tag:this.transition&&this.tag?this.tag:void 0},class:{"vue-portal-target":!0}},n)}}),S=0,k=["disabled","name","order","slim","slotProps","tag","to"],x=["multiple","transition"],T=i.extend({name:"MountingPortal",inheritAttrs:!1,props:{append:{type:[Boolean,String]},bail:{type:Boolean},mountTo:{type:String,required:!0},disabled:{type:Boolean},name:{type:String,default:function(){return"mounted_"+String(S++)}},order:{type:Number,default:0},slim:{type:Boolean},slotProps:{type:Object,default:function(){return{}}},tag:{type:String,default:"DIV"},to:{type:String,default:function(){return String(Math.round(1e7*Math.random()))}},multiple:{type:Boolean,default:!1},targetSlim:{type:Boolean},targetSlotProps:{type:Object,default:function(){return{}}},targetTag:{type:String,default:"div"},transition:{type:[String,Object,Function]}},created:function(){if("undefined"!==typeof document){var e=document.querySelector(this.mountTo);if(e){var t=this.$props;if(b.targets[t.name])t.bail?console.warn("[portal-vue]: Target ".concat(t.name," is already mounted.\n Aborting because 'bail: true' is set")):this.portalTarget=b.targets[t.name];else{var n=t.append;if(n){var s="string"===typeof n?n:"DIV",i=document.createElement(s);e.appendChild(i),e=i}var r=m(this.$props,x);r.slim=this.targetSlim,r.tag=this.targetTag,r.slotProps=this.targetSlotProps,r.name=this.to,this.portalTarget=new _({el:e,parent:this.$parent||this,propsData:r})}}else console.error("[portal-vue]: Mount Point '".concat(this.mountTo,"' not found in document"))}},beforeDestroy:function(){var e=this.portalTarget;if(this.append){var t=e.$el;t.parentNode.removeChild(t)}e.$destroy()},render:function(e){if(!this.portalTarget)return console.warn("[portal-vue] Target wasn't mounted"),e();if(!this.$scopedSlots.manual){var t=m(this.$props,k);return e(w,{props:t,attrs:this.$attrs,on:this.$listeners,scopedSlots:this.$scopedSlots},this.$slots.default)}var n=this.$scopedSlots.manual({to:this.to});return Array.isArray(n)&&(n=n[0]),n||e()}});function A(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.component(t.portalName||"Portal",w),e.component(t.portalTargetName||"PortalTarget",_),e.component(t.MountingPortalName||"MountingPortal",T)}var $={install:A};t.default=$,t.Portal=w,t.PortalTarget=_,t.MountingPortal=T,t.Wormhole=b},"2f9d":function(e,t,n){"use strict";n("525c")},"2fac":function(e,t,n){"use strict";n("1d42")},3012:function(e,t,n){"use strict";n("a60e")},"311b":function(e,t,n){},3213:function(e,t,n){"use strict";n.r(t);var s=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[e.topicData?n(e.componentFor(e.topicData),e._b({key:e.topicKey,tag:"component",attrs:{hierarchy:e.hierarchy}},"component",e.propsFor(e.topicData),!1)):e._e()],1)},i=[],r=n("25a9"),o=n("a97e");const{BreakpointName:a}=o["a"].constants;var l,c,u={state:{linkableSections:[],breakpoint:a.large},addLinkableSection(e){const t={...e,visibility:0};t.sectionNumber=this.state.linkableSections.length,this.state.linkableSections.push(t)},reset(){this.state.linkableSections=[],this.state.breakpoint=a.large},updateLinkableSection(e){this.state.linkableSections=this.state.linkableSections.map(t=>e.anchor===t.anchor?{...t,visibility:e.visibility}:t)},updateBreakpoint(e){this.state.breakpoint=e}},d=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"article"},[e.isTargetIDE?e._e():n("NavigationBar",{attrs:{chapters:e.hierarchy.modules,technology:e.metadata.category,topic:e.heroTitle||"",rootReference:e.hierarchy.reference}}),n("main",{attrs:{id:"main",role:"main",tabindex:"0"}},[e._t("above-hero"),e._l(e.sections,(function(t,s){return n(e.componentFor(t),e._b({key:s,tag:"component"},"component",e.propsFor(t),!1))}))],2),n("PortalTarget",{attrs:{name:"modal-destination",multiple:""}})],1)},p=[],h=n("2b88"),m=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("NavBase",{attrs:{id:"nav","aria-label":e.technology,hasSolidBackground:""}},[n("template",{slot:"default"},[n("ReferenceUrlProvider",{attrs:{reference:e.rootReference},scopedSlots:e._u([{key:"default",fn:function(t){var s=t.urlWithParams;return n("NavTitleContainer",{attrs:{to:s}},[n("template",{slot:"default"},[e._v(e._s(e.technology))]),n("template",{slot:"subhead"},[e._v("Tutorials")])],2)}}])})],1),n("template",{slot:"after-title"},[n("div",{staticClass:"separator"})]),n("template",{slot:"tray"},[n("div",{staticClass:"mobile-dropdown-container"},[n("MobileDropdown",{attrs:{options:e.chapters,sections:e.optionsForSections,currentOption:e.currentSection?e.currentSection.title:""},on:{"select-section":e.onSelectSection}})],1),n("div",{staticClass:"dropdown-container"},[n("PrimaryDropdown",{staticClass:"primary-dropdown",attrs:{options:e.chapters,currentOption:e.topic}}),n("ChevronIcon",{staticClass:"icon-inline"}),e.currentSection?n("SecondaryDropdown",{staticClass:"secondary-dropdown",attrs:{options:e.optionsForSections,currentOption:e.currentSection.title,sectionTracker:e.sectionIndicatorText},on:{"select-section":e.onSelectSection}}):e._e()],1)])],2)},f=[],v=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"chevron-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M3.22 1.184l0.325-0.38 7.235 6.201-7.235 6.19-0.325-0.38 6.792-5.811-6.792-5.82z"}})])},g=[],y=n("be08"),b={name:"ChevronIcon",components:{SVGIcon:y["a"]}},C=b,w=n("2877"),_=Object(w["a"])(C,v,g,!1,null,null,null),S=_.exports,k=n("d26a"),x={name:"ReferenceUrlProvider",inject:{references:{default:()=>({})}},props:{reference:{type:String,required:!0}},computed:{resolvedReference:({references:e,reference:t})=>e[t]||{},url:({resolvedReference:e})=>e.url,title:({resolvedReference:e})=>e.title},render(){return this.$scopedSlots.default({url:this.url,urlWithParams:Object(k["b"])(this.url,this.$route.query),title:this.title,reference:this.resolvedReference})}},T=x,A=Object(w["a"])(T,l,c,!1,null,null,null),$=A.exports,I=n("8a61"),O=n("cbcf"),P=n("653a"),N=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("NavMenuItems",{staticClass:"mobile-dropdown"},e._l(e.options,(function(t){return n("ReferenceUrlProvider",{key:t.reference,attrs:{reference:t.reference},scopedSlots:e._u([{key:"default",fn:function(s){var i=s.title;return n("NavMenuItemBase",{staticClass:"chapter-list",attrs:{role:"group"}},[n("p",{staticClass:"chapter-name"},[e._v(e._s(i))]),n("ul",{staticClass:"tutorial-list"},e._l(t.projects,(function(t){return n("ReferenceUrlProvider",{key:t.reference,attrs:{reference:t.reference},scopedSlots:e._u([{key:"default",fn:function(t){var s=t.url,i=t.urlWithParams,r=t.title;return n("li",{staticClass:"tutorial-list-item"},[n("router-link",{staticClass:"option tutorial",attrs:{to:i,value:r}},[e._v(" "+e._s(r)+" ")]),s===e.$route.path?n("ul",{staticClass:"section-list",attrs:{role:"listbox"}},e._l(e.sections,(function(t){return n("li",{key:t.title},[n("router-link",{class:e.classesFor(t),attrs:{to:{path:t.path,query:e.$route.query},value:t.title},nativeOn:{click:function(n){return e.onClick(t)}}},[e._v(" "+e._s(t.title)+" ")])],1)})),0):e._e()],1)}}],null,!0)})})),1)])}}],null,!0)})})),1)},j=[],B=n("863d"),D=n("9b30"),M={name:"MobileDropdown",components:{NavMenuItems:D["a"],NavMenuItemBase:B["a"],ReferenceUrlProvider:$},props:{options:{type:Array,required:!0},currentOption:{type:String,required:!0},sections:{type:Array,required:!1,default:()=>[]}},methods:{classesFor(e){return["option","section",{active:this.currentOption===e.title},this.depthClass(e)]},depthClass(e){const{depth:t=0}=e;return"depth"+t},onClick(e){this.$emit("select-section",e.path)}}},q=M,E=(n("2fac"),Object(w["a"])(q,N,j,!1,null,"3d58f504",null)),R=E.exports,V=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("DropdownCustom",{staticClass:"tutorial-dropdown",attrs:{value:e.currentOption,"aria-label":"Current section",isSmall:""},scopedSlots:e._u([{key:"default",fn:function(t){var s=t.closeAndFocusToggler,i=t.contentClasses,r=t.navigateOverOptions,o=t.OptionClass,a=t.ActiveOptionClass;return[n("ul",{staticClass:"options",class:i,attrs:{role:"listbox",tabindex:"0"}},e._l(e.options,(function(t){return n("router-link",{key:t.title,attrs:{to:{path:t.path,query:e.$route.query},custom:""},scopedSlots:e._u([{key:"default",fn:function(i){var l,c=i.navigate;return[n("li",{class:[o,(l={},l[a]=e.currentOption===t.title,l)],attrs:{role:"option",value:t.title,"aria-selected":e.currentOption===t.title,"aria-current":e.ariaCurrent(t.title),tabindex:-1},on:{click:function(n){return e.setActive(t,c,s,n)},keydown:[function(n){return!n.type.indexOf("key")&&e._k(n.keyCode,"enter",13,n.key,"Enter")?null:e.setActive(t,c,s,n)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:s.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"tab",9,t.key,"Tab")?null:s.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.preventDefault(),r(t,1))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.preventDefault(),r(t,-1))}]}},[e._v(" "+e._s(t.title)+" ")])]}}],null,!0)})})),1)]}}])},[n("template",{slot:"toggle-post-content"},[n("span",{staticClass:"section-tracker"},[e._v(e._s(e.sectionTracker))])])],2)},L=[],F=function(){var e,t=this,n=t.$createElement,s=t._self._c||n;return s("BaseDropdown",{staticClass:"dropdown-custom",class:(e={},e[t.OpenedClass]=t.isOpen,e["dropdown-small"]=t.isSmall,e),attrs:{value:t.value},scopedSlots:t._u([{key:"dropdown",fn:function(e){var n=e.dropdownClasses;return[s("span",{staticClass:"visuallyhidden",attrs:{id:"DropdownLabel_"+t._uid}},[t._v(t._s(t.ariaLabel))]),s("button",{ref:"dropdownToggle",staticClass:"form-dropdown-toggle",class:n,attrs:{role:"button",id:"DropdownToggle_"+t._uid,"aria-labelledby":"DropdownLabel_"+t._uid+" DropdownToggle_"+t._uid,"aria-expanded":t.isOpen?"true":"false","aria-haspopup":"true"},on:{click:t.toggleDropdown,keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:(e.preventDefault(),t.openDropdown.apply(null,arguments))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"esc",27,e.key,["Esc","Escape"])?null:t.closeAndFocusToggler.apply(null,arguments)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"down",40,e.key,["Down","ArrowDown"])?null:(e.preventDefault(),t.openDropdown.apply(null,arguments))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"up",38,e.key,["Up","ArrowUp"])?null:(e.preventDefault(),t.openDropdown.apply(null,arguments))}]}},[s("span",{staticClass:"form-dropdown-title"},[t._v(t._s(t.value))]),t._t("toggle-post-content")],2)]}}],null,!0)},[s("template",{slot:"eyebrow"},[t._t("eyebrow")],2),s("template",{slot:"after"},[t._t("default",null,null,{value:t.value,isOpen:t.isOpen,contentClasses:["form-dropdown-content",{"is-open":t.isOpen}],closeDropdown:t.closeDropdown,onChangeAction:t.onChangeAction,closeAndFocusToggler:t.closeAndFocusToggler,navigateOverOptions:t.navigateOverOptions,OptionClass:t.OptionClass,ActiveOptionClass:t.ActiveOptionClass})],2)],2)},z=[],H=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"form-element"},[e._t("dropdown",(function(){return[n("select",e._b({directives:[{name:"model",rawName:"v-model",value:e.modelValue,expression:"modelValue"}],class:e.dropdownClasses,on:{change:function(t){var n=Array.prototype.filter.call(t.target.options,(function(e){return e.selected})).map((function(e){var t="_value"in e?e._value:e.value;return t}));e.modelValue=t.target.multiple?n:n[0]}}},"select",e.$attrs,!1),[e._t("default")],2)]}),{dropdownClasses:e.dropdownClasses,value:e.value}),n("InlineChevronDownIcon",{staticClass:"form-icon",attrs:{"aria-hidden":"true"}}),e.$slots.eyebrow?n("span",{staticClass:"form-label",attrs:{"aria-hidden":"true"}},[e._t("eyebrow")],2):e._e(),e._t("after")],2)},G=[],U=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"inline-chevron-down-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M12.634 2.964l0.76 0.649-6.343 7.426-6.445-7.423 0.755-0.655 5.683 6.545 5.59-6.542z"}})])},W=[],Q={name:"InlineChevronDownIcon",components:{SVGIcon:y["a"]}},K=Q,X=Object(w["a"])(K,U,W,!1,null,null,null),J=X.exports,Y={name:"BaseDropdown",inheritAttrs:!1,props:{value:{type:String,default:""}},components:{InlineChevronDownIcon:J},computed:{modelValue:{get:({value:e})=>e,set(e){this.$emit("input",e)}},dropdownClasses({value:e}){return["form-dropdown",{"form-dropdown-selectnone":""===e,"no-eyebrow":!this.$slots.eyebrow}]}}},Z=Y,ee=(n("ed71"),Object(w["a"])(Z,H,G,!1,null,"998803d8",null)),te=ee.exports;const ne="is-open",se="option",ie="option-active";var re={name:"DropdownCustom",components:{BaseDropdown:te},constants:{OpenedClass:ne,OptionClass:se,ActiveOptionClass:ie},props:{value:{type:String,default:""},ariaLabel:{type:String,default:""},isSmall:{type:Boolean,default:!1}},data(){return{isOpen:!1,OpenedClass:ne,OptionClass:se,ActiveOptionClass:ie}},mounted(){document.addEventListener("click",this.closeOnLoseFocus)},beforeDestroy(){document.removeEventListener("click",this.closeOnLoseFocus)},methods:{onChangeAction(e){this.$emit("input",e)},toggleDropdown(){this.isOpen?this.closeDropdown():this.openDropdown()},async closeAndFocusToggler(){this.closeDropdown(),await this.$nextTick(),this.$refs.dropdownToggle.focus({preventScroll:!0})},closeDropdown(){this.isOpen=!1,this.$emit("close")},openDropdown(){this.isOpen=!0,this.$emit("open"),this.focusActiveLink()},closeOnLoseFocus(e){!this.$el.contains(e.target)&&this.isOpen&&this.closeDropdown()},navigateOverOptions({target:e},t){const n=this.$el.querySelectorAll("."+se),s=Array.from(n),i=s.indexOf(e),r=s[i+t];r&&r.focus({preventScroll:!0})},async focusActiveLink(){const e=this.$el.querySelector("."+ie);e&&(await this.$nextTick(),e.focus({preventScroll:!0}))}}},oe=re,ae=(n("e84c"),Object(w["a"])(oe,F,z,!1,null,"12dd746a",null)),le=ae.exports,ce={name:"SecondaryDropdown",components:{DropdownCustom:le},props:{options:{type:Array,required:!0},currentOption:{type:String,required:!0},sectionTracker:{type:String,required:!1}},methods:{ariaCurrent(e){return this.currentOption===e&&"section"},setActive(e,t,n,s){t(s),this.$emit("select-section",e.path),n()}}},ue=ce,de=(n("5952"),Object(w["a"])(ue,V,L,!1,null,"4a151342",null)),pe=de.exports,he=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("DropdownCustom",{staticClass:"tutorial-dropdown",attrs:{value:e.currentOption,"aria-label":"Current tutorial",isSmall:""},scopedSlots:e._u([{key:"default",fn:function(t){var s=t.closeAndFocusToggler,i=t.contentClasses,r=t.closeDropdown,o=t.navigateOverOptions,a=t.OptionClass,l=t.ActiveOptionClass;return[n("ul",{staticClass:"options",class:i,attrs:{tabindex:"0"}},e._l(e.options,(function(t){return n("ReferenceUrlProvider",{key:t.reference,attrs:{reference:t.reference},scopedSlots:e._u([{key:"default",fn:function(i){var c=i.title;return n("li",{staticClass:"chapter-list",attrs:{role:"group"}},[n("p",{staticClass:"chapter-name"},[e._v(e._s(c))]),n("ul",{attrs:{role:"listbox"}},e._l(t.projects,(function(t){return n("ReferenceUrlProvider",{key:t.reference,attrs:{reference:t.reference},scopedSlots:e._u([{key:"default",fn:function(t){var i=t.urlWithParams,c=t.title;return[n("router-link",{attrs:{to:i,custom:""},scopedSlots:e._u([{key:"default",fn:function(t){var i,u=t.navigate,d=t.isActive;return[n("li",{class:(i={},i[a]=!0,i[l]=d,i),attrs:{role:"option",value:c,"aria-selected":d,"aria-current":!!d&&"tutorial",tabindex:-1},on:{click:function(t){return e.setActive(u,r,t)},keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.setActive(u,r,t)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:s.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"tab",9,t.key,"Tab")?null:s.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.preventDefault(),o(t,1))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.preventDefault(),o(t,-1))}]}},[e._v(" "+e._s(c)+" ")])]}}],null,!0)})]}}],null,!0)})})),1)])}}],null,!0)})})),1)]}}])})},me=[],fe={name:"PrimaryDropdown",components:{DropdownCustom:le,ReferenceUrlProvider:$},props:{options:{type:Array,required:!0},currentOption:{type:String,required:!0}},methods:{setActive(e,t,n){e(n),t()}}},ve=fe,ge=(n("e4e4"),Object(w["a"])(ve,he,me,!1,null,"78dc103f",null)),ye=ge.exports,be={name:"NavigationBar",components:{NavTitleContainer:P["a"],NavBase:O["a"],ReferenceUrlProvider:$,PrimaryDropdown:ye,SecondaryDropdown:pe,MobileDropdown:R,ChevronIcon:S},mixins:[I["a"]],inject:["store"],props:{chapters:{type:Array,required:!0},technology:{type:String,required:!0},topic:{type:String,required:!0},rootReference:{type:String,required:!0}},data(){return{currentSection:{sectionNumber:0,title:"Introduction"},tutorialState:this.store.state}},watch:{pageSectionWithHighestVisibility(e){e&&(this.currentSection=e)}},computed:{pageSections(){const e=this.$route.path.replace(/#$/,"");return this.tutorialState.linkableSections.map(t=>({...t,path:`${e}#${t.anchor}`}))},optionsForSections(){return this.pageSections.map(({depth:e,path:t,title:n})=>({depth:e,path:t,title:n}))},pageSectionWithHighestVisibility(){return[...this.pageSections].sort((e,t)=>t.visibility-e.visibility).find(e=>e.visibility>0)},sectionIndicatorText(){const e=this.tutorialState.linkableSections.length-1,{sectionNumber:t}=this.currentSection||{};if(0!==t)return`(${t} of ${e})`}},methods:{onSelectSection(e){const t="#"+e.split("#")[1];this.scrollToElement(t)}}},Ce=be,we=(n("6cd7"),Object(w["a"])(Ce,m,f,!1,null,"7138b5bf",null)),_e=we.exports,Se=n("d8ce"),ke=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"body"},[n("BodyContent",{attrs:{content:e.content}})],1)},xe=[],Te=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("article",{staticClass:"body-content"},e._l(e.content,(function(t,s){return n(e.componentFor(t),e._b({key:s,tag:"component",staticClass:"layout"},"component",e.propsFor(t),!1))})),1)},Ae=[],$e=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"columns",class:e.classes},[e._l(e.columns,(function(t,s){return[n("Asset",{key:t.media,attrs:{identifier:t.media,videoAutoplays:!1}}),t.content?n("ContentNode",{key:s,attrs:{content:t.content}}):e._e()]}))],2)},Ie=[],Oe=n("80e4"),Pe=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("BaseContentNode",{attrs:{content:e.articleContent}})},Ne=[],je=n("5677"),Be={name:"ContentNode",components:{BaseContentNode:je["a"]},props:je["a"].props,computed:{articleContent(){return this.map(e=>{switch(e.type){case je["a"].BlockType.codeListing:return{...e,showLineNumbers:!0};case je["a"].BlockType.heading:{const{anchor:t,...n}=e;return n}default:return e}})}},methods:je["a"].methods,BlockType:je["a"].BlockType,InlineType:je["a"].InlineType},De=Be,Me=(n("cb8d"),Object(w["a"])(De,Pe,Ne,!1,null,"3cfe1c35",null)),qe=Me.exports,Ee={name:"Columns",components:{Asset:Oe["a"],ContentNode:qe},props:{columns:{type:Array,required:!0}},computed:{classes(){return{"cols-2":2===this.columns.length,"cols-3":3===this.columns.length}}}},Re=Ee,Ve=(n("e9b0"),Object(w["a"])(Re,$e,Ie,!1,null,"30edf911",null)),Le=Ve.exports,Fe=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"content-and-media",class:e.classes},[n("ContentNode",{attrs:{content:e.content}}),n("Asset",{attrs:{identifier:e.media}})],1)},ze=[];const He={leading:"leading",trailing:"trailing"};var Ge={name:"ContentAndMedia",components:{Asset:Oe["a"],ContentNode:qe},props:{content:qe.props.content,media:Oe["a"].props.identifier,mediaPosition:{type:String,default:()=>He.trailing,validator:e=>Object.prototype.hasOwnProperty.call(He,e)}},computed:{classes(){return{"media-leading":this.mediaPosition===He.leading,"media-trailing":this.mediaPosition===He.trailing}}},MediaPosition:He},Ue=Ge,We=(n("1006"),Object(w["a"])(Ue,Fe,ze,!1,null,"3fa44f9e",null)),Qe=We.exports,Ke=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"full-width"},e._l(e.groups,(function(t,s){return n(e.componentFor(t),e._b({key:s,tag:"component",staticClass:"group"},"component",e.propsFor(t),!1),[n("ContentNode",{attrs:{content:t.content}})],1)})),1)},Xe=[],Je=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n(e.tag,{tag:"component",attrs:{id:e.anchor}},[e._t("default")],2)},Ye=[],Ze=n("72e7"),et={name:"LinkableElement",mixins:[Ze["a"]],inject:{navigationBarHeight:{default(){}},store:{default(){return{addLinkableSection(){},updateLinkableSection(){}}}}},props:{anchor:{type:String,required:!0},depth:{type:Number,default:()=>0},tag:{type:String,default:()=>"div"},title:{type:String,required:!0}},computed:{intersectionRootMargin(){const e=this.navigationBarHeight?`-${this.navigationBarHeight}px`:"0%";return e+" 0% -50% 0%"}},created(){this.store.addLinkableSection({anchor:this.anchor,depth:this.depth,title:this.title,visibility:0})},methods:{onIntersect(e){const t=Math.min(1,e.intersectionRatio);this.store.updateLinkableSection({anchor:this.anchor,depth:this.depth,title:this.title,visibility:t})}}},tt=et,nt=Object(w["a"])(tt,Je,Ye,!1,null,null,null),st=nt.exports;const{BlockType:it}=qe;var rt={name:"FullWidth",components:{ContentNode:qe,LinkableElement:st},props:qe.props,computed:{groups:({content:e})=>e.reduce((e,t)=>0===e.length||t.type===it.heading?[...e,{heading:t.type===it.heading?t:null,content:[t]}]:[...e.slice(0,e.length-1),{heading:e[e.length-1].heading,content:e[e.length-1].content.concat(t)}],[])},methods:{componentFor(e){return e.heading?st:"div"},depthFor(e){switch(e.level){case 1:case 2:return 0;default:return 1}},propsFor(e){return e.heading?{anchor:e.heading.anchor,depth:this.depthFor(e.heading),title:e.heading.text}:{}}}},ot=rt,at=(n("aece"),Object(w["a"])(ot,Ke,Xe,!1,null,"1f2be54b",null)),lt=at.exports;const ct={columns:"columns",contentAndMedia:"contentAndMedia",fullWidth:"fullWidth"};var ut={name:"BodyContent",props:{content:{type:Array,required:!0,validator:e=>e.every(({kind:e})=>Object.prototype.hasOwnProperty.call(ct,e))}},methods:{componentFor(e){return{[ct.columns]:Le,[ct.contentAndMedia]:Qe,[ct.fullWidth]:lt}[e.kind]},propsFor(e){const{content:t,kind:n,media:s,mediaPosition:i}=e;return{[ct.columns]:{columns:t},[ct.contentAndMedia]:{content:t,media:s,mediaPosition:i},[ct.fullWidth]:{content:t}}[n]}},LayoutKind:ct},dt=ut,pt=(n("1dd5"),Object(w["a"])(dt,Te,Ae,!1,null,"4d5a806e",null)),ht=pt.exports,mt={name:"Body",components:{BodyContent:ht},props:ht.props},ft=mt,vt=(n("5237"),Object(w["a"])(ft,ke,xe,!1,null,"6499e2f2",null)),gt=vt.exports,yt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("TutorialCTA",e._b({},"TutorialCTA",e.$props,!1))},bt=[],Ct=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("BaseCTA",e._b({attrs:{label:"Next"}},"BaseCTA",e.baseProps,!1))},wt=[],_t=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"call-to-action"},[n("Row",[n("LeftColumn",[n("span",{staticClass:"label"},[e._v(e._s(e.label))]),n("h2",[e._v(" "+e._s(e.title)+" ")]),e.abstract?n("ContentNode",{staticClass:"description",attrs:{content:[e.abstractParagraph]}}):e._e(),e.action?n("Button",{attrs:{action:e.action}}):e._e()],1),n("RightColumn",{staticClass:"right-column"},[e.media?n("Asset",{staticClass:"media",attrs:{identifier:e.media}}):e._e()],1)],1)],1)},St=[],kt=n("0f00"),xt=n("620a"),Tt=n("c081"),At={name:"CallToAction",components:{Asset:Oe["a"],Button:Tt["a"],ContentNode:je["a"],LeftColumn:{render(e){return e(xt["a"],{props:{span:{large:5,small:12}}},this.$slots.default)}},RightColumn:{render(e){return e(xt["a"],{props:{span:{large:6,small:12}}},this.$slots.default)}},Row:kt["a"]},props:{title:{type:String,required:!0},label:{type:String,required:!0},abstract:{type:Array,required:!1},action:{type:Object,required:!1},media:{type:String,required:!1}},computed:{abstractParagraph(){return{type:"paragraph",inlineContent:this.abstract}}}},$t=At,It=(n("80f7"),Object(w["a"])($t,_t,St,!1,null,"2016b288",null)),Ot=It.exports,Pt={name:"CallToAction",components:{BaseCTA:Ot},computed:{baseProps(){return{title:this.title,abstract:this.abstract,action:this.action,media:this.media}}},props:{title:{type:String,required:!0},abstract:{type:Array,required:!1},action:{type:Object,required:!1},media:{type:String,required:!1}}},Nt=Pt,jt=Object(w["a"])(Nt,Ct,wt,!1,null,null,null),Bt=jt.exports,Dt={name:"CallToAction",components:{TutorialCTA:Bt},props:Bt.props},Mt=Dt,qt=(n("3e1b"),Object(w["a"])(Mt,yt,bt,!1,null,"426a965c",null)),Et=qt.exports,Rt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("TutorialHero",e._b({},"TutorialHero",e.$props,!1))},Vt=[],Lt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("LinkableSection",{staticClass:"tutorial-hero",attrs:{anchor:"introduction",title:e.sectionTitle}},[n("div",{staticClass:"hero dark"},[e.backgroundImageUrl?n("div",{staticClass:"bg",style:e.bgStyle}):e._e(),e._t("above-title"),n("Row",[n("Column",[n("Headline",{attrs:{level:1}},[e.chapter?n("template",{slot:"eyebrow"},[e._v(e._s(e.chapter))]):e._e(),e._v(" "+e._s(e.title)+" ")],2),e.content||e.video?n("div",{staticClass:"intro"},[e.content?n("ContentNode",{attrs:{content:e.content}}):e._e(),e.video?[n("p",[n("a",{staticClass:"call-to-action",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.toggleCallToActionModal.apply(null,arguments)}}},[e._v(" Watch intro video "),n("PlayIcon",{staticClass:"cta-icon icon-inline"})],1)]),n("GenericModal",{attrs:{visible:e.callToActionModalVisible,isFullscreen:"",theme:"dark"},on:{"update:visible":function(t){e.callToActionModalVisible=t}}},[n("Asset",{directives:[{name:"show",rawName:"v-show",value:e.callToActionModalVisible,expression:"callToActionModalVisible"}],ref:"asset",staticClass:"video-asset",attrs:{identifier:e.video},on:{videoEnded:e.handleVideoEnd}})],1)]:e._e()],2):e._e(),n("Metadata",{staticClass:"metadata",attrs:{projectFilesUrl:e.projectFilesUrl,estimatedTimeInMinutes:e.estimatedTimeInMinutes,xcodeRequirement:e.xcodeRequirementData}})],1)],1)],2)])},Ft=[],zt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"headline"},[e.$slots.eyebrow?n("span",{staticClass:"eyebrow"},[e._t("eyebrow")],2):e._e(),n("Heading",{staticClass:"heading",attrs:{level:e.level}},[e._t("default")],2)],1)},Ht=[];const Gt=1,Ut=6,Wt={type:Number,required:!0,validator:e=>e>=Gt&&e<=Ut},Qt={name:"Heading",render:function(e){return e("h"+this.level,this.$slots.default)},props:{level:Wt}};var Kt={name:"Headline",components:{Heading:Qt},props:{level:Wt}},Xt=Kt,Jt=(n("323a"),Object(w["a"])(Xt,zt,Ht,!1,null,"1898f592",null)),Yt=Jt.exports,Zt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("PortalSource",{attrs:{to:"modal-destination",disabled:!e.isVisible}},[n("div",{directives:[{name:"show",rawName:"v-show",value:e.isVisible,expression:"isVisible"}],staticClass:"generic-modal",class:[e.stateClasses,e.themeClass],style:e.modalColors,attrs:{role:"dialog"}},[n("div",{staticClass:"backdrop",on:{click:e.onClickOutside}}),n("div",{ref:"container",staticClass:"container",style:{width:e.width}},[e.showClose?n("button",{ref:"close",staticClass:"close",attrs:{"aria-label":"Close"},on:{click:function(t){return t.preventDefault(),e.closeModal.apply(null,arguments)}}},[n("CloseIcon")],1):e._e(),n("div",{staticClass:"modal-content"},[e._t("default")],2)])])])},en=[],tn=n("f2af"),nn=n("c8e2"),sn=n("95da"),rn=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"close-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"m10.3772239 3.1109127.7266116.7266116-3.27800002 3.2763884 3.27072752 3.2703884-.7266116.7266116-3.27011592-3.271-3.26211596 3.2637276-.7266116-.7266116 3.26272756-3.263116-3.27-3.26911596.72661159-.72661159 3.26938841 3.26972755z","fill-rule":"evenodd"}})])},on=[],an={name:"CloseIcon",components:{SVGIcon:y["a"]}},ln=an,cn=Object(w["a"])(ln,rn,on,!1,null,null,null),un=cn.exports;const dn={light:"light",dark:"dark",dynamic:"dynamic",code:"code"};var pn={name:"GenericModal",model:{prop:"visible",event:"update:visible"},components:{CloseIcon:un,PortalSource:h["Portal"]},props:{visible:{type:Boolean,default:!1},isFullscreen:{type:Boolean,default:!1},theme:{type:String,validator:e=>Object.keys(dn).includes(e),default:dn.light},codeBackgroundColorOverride:{type:String,default:""},width:{type:String,default:null},showClose:{type:Boolean,default:!0}},data(){return{lastFocusItem:null,prefersDarkStyle:!1,focusTrapInstance:null}},computed:{isVisible:{get:({visible:e})=>e,set(e){this.$emit("update:visible",e)}},modalColors(){return{"--background":this.codeBackgroundColorOverride}},themeClass({theme:e,prefersDarkStyle:t,isThemeDynamic:n}){let s={};return n&&(s={"theme-light":!t,"theme-dark":t}),["theme-"+e,s]},stateClasses:({isFullscreen:e,isVisible:t,showClose:n})=>({"modal-fullscreen":e,"modal-standard":!e,"modal-open":t,"modal-with-close":n}),isThemeDynamic:({theme:e})=>e===dn.dynamic||e===dn.code},watch:{isVisible(e){e?this.onShow():this.onHide()}},mounted(){if(this.focusTrapInstance=new nn["a"],document.addEventListener("keydown",this.onEscapeClick),this.isThemeDynamic){const e=window.matchMedia("(prefers-color-scheme: dark)");e.addListener(this.onColorSchemePreferenceChange),this.$once("hook:beforeDestroy",()=>{e.removeListener(this.onColorSchemePreferenceChange)}),this.onColorSchemePreferenceChange(e)}},beforeDestroy(){this.isVisible&&tn["a"].unlockScroll(this.$refs.container),document.removeEventListener("keydown",this.onEscapeClick),this.focusTrapInstance.destroy()},methods:{async onShow(){await this.$nextTick(),tn["a"].lockScroll(this.$refs.container),await this.focusCloseButton(),this.focusTrapInstance.updateFocusContainer(this.$refs.container),this.focusTrapInstance.start(),sn["a"].hide(this.$refs.container)},onHide(){tn["a"].unlockScroll(this.$refs.container),this.focusTrapInstance.stop(),this.lastFocusItem&&(this.lastFocusItem.focus({preventScroll:!0}),this.lastFocusItem=null),this.$emit("close"),sn["a"].show(this.$refs.container)},closeModal(){this.isVisible=!1},onClickOutside(){this.closeModal()},onEscapeClick({key:e}){this.isVisible&&"Escape"===e&&this.closeModal()},onColorSchemePreferenceChange({matches:e}){this.prefersDarkStyle=e},async focusCloseButton(){this.lastFocusItem=document.activeElement,await this.$nextTick(),this.$refs.close&&this.$refs.close.focus(),this.$emit("open")}}},hn=pn,mn=(n("bd7a"),Object(w["a"])(hn,Zt,en,!1,null,"0e383dfa",null)),fn=mn.exports,vn=n("c4dd"),gn=n("748c"),yn=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"metadata"},[e.estimatedTimeInMinutes?n("div",{staticClass:"item",attrs:{"aria-label":e.estimatedTimeInMinutes+" minutes estimated time"}},[n("div",{staticClass:"content",attrs:{"aria-hidden":"true"}},[n("div",{staticClass:"duration"},[e._v(" "+e._s(e.estimatedTimeInMinutes)+" "),n("div",{staticClass:"minutes"},[e._v("min")])])]),n("div",{staticClass:"bottom",attrs:{"aria-hidden":"true"}},[e._v("Estimated Time")])]):e._e(),e.projectFilesUrl?n("div",{staticClass:"item"},[n("DownloadIcon",{staticClass:"item-large-icon icon-inline"}),n("div",{staticClass:"content bottom"},[n("a",{staticClass:"content-link project-download",attrs:{href:e.projectFilesUrl}},[e._v(" Project files "),n("InlineDownloadIcon",{staticClass:"small-icon icon-inline"})],1)])],1):e._e(),e.xcodeRequirement?n("div",{staticClass:"item"},[n("XcodeIcon",{staticClass:"item-large-icon icon-inline"}),n("div",{staticClass:"content bottom"},[e.isTargetIDE?n("span",[e._v(e._s(e.xcodeRequirement.title))]):n("a",{staticClass:"content-link",attrs:{href:e.xcodeRequirement.url}},[e._v(" "+e._s(e.xcodeRequirement.title)+" "),n("InlineChevronRightIcon",{staticClass:"icon-inline small-icon xcode-icon"})],1)])],1):e._e()])},bn=[],Cn=n("de60"),wn=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"xcode-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M2.668 4.452l-1.338-2.229 0.891-0.891 2.229 1.338 1.338 2.228 3.667 3.666 0.194-0.194 2.933 2.933c0.13 0.155 0.209 0.356 0.209 0.576 0 0.497-0.403 0.9-0.9 0.9-0.22 0-0.421-0.079-0.577-0.209l0.001 0.001-2.934-2.933 0.181-0.181-3.666-3.666z"}}),n("path",{attrs:{d:"M11.824 1.277l-0.908 0.908c-0.091 0.091-0.147 0.216-0.147 0.354 0 0.106 0.033 0.205 0.090 0.286l-0.001-0.002 0.058 0.069 0.185 0.185c0.090 0.090 0.215 0.146 0.353 0.146 0.107 0 0.205-0.033 0.286-0.090l-0.002 0.001 0.069-0.057 0.909-0.908c0.118 0.24 0.187 0.522 0.187 0.82 0 1.045-0.848 1.893-1.893 1.893-0.296 0-0.577-0.068-0.826-0.189l0.011 0.005-5.5 5.5c0.116 0.238 0.184 0.518 0.184 0.813 0 1.045-0.848 1.893-1.893 1.893-0.296 0-0.576-0.068-0.826-0.189l0.011 0.005 0.908-0.909c0.090-0.090 0.146-0.215 0.146-0.353 0-0.107-0.033-0.205-0.090-0.286l0.001 0.002-0.057-0.069-0.185-0.185c-0.091-0.091-0.216-0.147-0.354-0.147-0.106 0-0.205 0.033-0.286 0.090l0.002-0.001-0.069 0.058-0.908 0.908c-0.116-0.238-0.184-0.518-0.184-0.813 0-1.045 0.847-1.892 1.892-1.892 0.293 0 0.571 0.067 0.819 0.186l-0.011-0.005 5.5-5.5c-0.116-0.238-0.184-0.519-0.184-0.815 0-1.045 0.847-1.892 1.892-1.892 0.296 0 0.577 0.068 0.827 0.19l-0.011-0.005z"}})])},_n=[],Sn={name:"XcodeIcon",components:{SVGIcon:y["a"]}},kn=Sn,xn=Object(w["a"])(kn,wn,_n,!1,null,null,null),Tn=xn.exports,An=n("34b0"),$n=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"inline-download-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5s2.91-6.5 6.5-6.5zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5s-2.462-5.5-5.5-5.5z"}}),n("path",{attrs:{d:"M7.51 2.964l-0.001 5.431 1.308-2.041 0.842 0.539-2.664 4.162-2.633-4.164 0.845-0.534 1.303 2.059 0.001-5.452z"}})])},In=[],On={name:"InlineDownloadIcon",components:{SVGIcon:y["a"]}},Pn=On,Nn=Object(w["a"])(Pn,$n,In,!1,null,null,null),jn=Nn.exports,Bn={name:"HeroMetadata",components:{InlineDownloadIcon:jn,InlineChevronRightIcon:An["a"],DownloadIcon:Cn["a"],XcodeIcon:Tn},inject:["isTargetIDE"],props:{projectFilesUrl:{type:String},estimatedTimeInMinutes:{type:Number},xcodeRequirement:{type:Object,required:!1}}},Dn=Bn,Mn=(n("5356"),Object(w["a"])(Dn,yn,bn,!1,null,"2fa6f125",null)),qn=Mn.exports,En={name:"Hero",components:{PlayIcon:vn["a"],GenericModal:fn,Column:{render(e){return e(xt["a"],{props:{span:{large:7,medium:9,small:12}}},this.$slots.default)}},ContentNode:je["a"],Headline:Yt,Metadata:qn,Row:kt["a"],Asset:Oe["a"],LinkableSection:st},inject:["references"],props:{title:{type:String,required:!0},chapter:{type:String},content:{type:Array},projectFiles:{type:String},estimatedTimeInMinutes:{type:Number},xcodeRequirement:{type:String,required:!1},video:{type:String},backgroundImage:{type:String}},computed:{backgroundImageUrl(){const e=this.references[this.backgroundImage]||{},{variants:t=[]}=e,n=t.find(e=>e.traits.includes("light"));return n?Object(gn["b"])(n.url):""},projectFilesUrl(){return this.projectFiles?Object(gn["b"])(this.references[this.projectFiles].url):null},bgStyle(){return{backgroundImage:`url('${this.backgroundImageUrl}')`}},xcodeRequirementData(){return this.references[this.xcodeRequirement]},sectionTitle(){return"Introduction"}},data(){return{callToActionModalVisible:!1}},methods:{async toggleCallToActionModal(){this.callToActionModalVisible=!0,await this.$nextTick();const e=this.$refs.asset.$el.querySelector("video");if(e)try{await e.play(),e.muted=!1}catch(t){}},handleVideoEnd(){this.callToActionModalVisible=!1}}},Rn=En,Vn=(n("3c4b"),Object(w["a"])(Rn,Lt,Ft,!1,null,"cb87b2d0",null)),Ln=Vn.exports,Fn={name:"Hero",components:{TutorialHero:Ln},props:Ln.props},zn=Fn,Hn=(n("2f9d"),Object(w["a"])(zn,Rt,Vt,!1,null,"35a9482f",null)),Gn=Hn.exports,Un=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("TutorialAssessments",e._b({},"TutorialAssessments",e.$props,!1),[n("p",{attrs:{slot:"success"},slot:"success"},[e._v("Great job, you've answered all the questions for this article.")])])},Wn=[],Qn=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("LinkableSection",{staticClass:"assessments-wrapper",attrs:{anchor:e.anchor,title:e.title}},[n("Row",{ref:"assessments",staticClass:"assessments"},[n("MainColumn",[n("Row",{staticClass:"banner"},[n("HeaderColumn",[n("h2",{staticClass:"title"},[e._v(e._s(e.title))])])],1),e.completed?n("div",{staticClass:"success"},[e._t("success",(function(){return[n("p",[e._v(e._s(e.SuccessMessage))])]}))],2):n("div",[n("Progress",e._b({ref:"progress"},"Progress",e.progress,!1)),n("Quiz",{key:e.activeIndex,attrs:{choices:e.activeAssessment.choices,content:e.activeAssessment.content,isLast:e.isLast,title:e.activeAssessment.title},on:{submit:e.onSubmit,advance:e.onAdvance,"see-results":e.onSeeResults}})],1),n("div",{staticClass:"visuallyhidden",attrs:{"aria-live":"assertive"}},[e.completed?e._t("success",(function(){return[e._v(" "+e._s(e.SuccessMessage)+" ")]})):e._e()],2)],1)],1)],1)},Kn=[],Xn=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("Row",[n("p",{staticClass:"title"},[e._v("Question "+e._s(e.index)+" of "+e._s(e.total))])])},Jn=[],Yn={name:"AssessmentsProgress",components:{Row:kt["a"]},props:{index:{type:Number,required:!0},total:{type:Number,required:!0}}},Zn=Yn,es=(n("0530"),Object(w["a"])(Zn,Xn,Jn,!1,null,"8ec95972",null)),ts=es.exports,ns=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"quiz"},[n("ContentNode",{staticClass:"title",attrs:{content:e.title}}),e.content?n("ContentNode",{staticClass:"question-content",attrs:{content:e.content}}):e._e(),n("div",{staticClass:"choices"},[e._l(e.choices,(function(t,s){return n("label",{key:s,class:e.choiceClasses[s]},[n(e.getIconComponent(s),{tag:"component",staticClass:"choice-icon"}),n("input",{directives:[{name:"model",rawName:"v-model",value:e.selectedIndex,expression:"selectedIndex"}],attrs:{type:"radio",name:"assessment"},domProps:{value:s,checked:e._q(e.selectedIndex,s)},on:{change:function(t){e.selectedIndex=s}}}),n("ContentNode",{staticClass:"question",attrs:{content:t.content}}),e.userChoices[s].checked?[n("ContentNode",{staticClass:"answer",attrs:{content:t.justification}}),t.reaction?n("p",{staticClass:"answer"},[e._v(e._s(t.reaction))]):e._e()]:e._e()],2)})),n("div",{staticClass:"visuallyhidden",attrs:{"aria-live":"assertive"}},[e._v(" "+e._s(e.ariaLiveText)+" ")])],2),n("div",{staticClass:"controls"},[n("ButtonLink",{staticClass:"check",attrs:{disabled:null===e.selectedIndex||e.showNextQuestion},nativeOn:{click:function(t){return e.submit.apply(null,arguments)}}},[e._v(" Submit ")]),e.isLast?n("ButtonLink",{staticClass:"results",attrs:{disabled:!e.showNextQuestion},nativeOn:{click:function(t){return e.seeResults.apply(null,arguments)}}},[e._v(" Next ")]):n("ButtonLink",{staticClass:"next",attrs:{disabled:!e.showNextQuestion},nativeOn:{click:function(t){return e.advance.apply(null,arguments)}}},[e._v(" Next Question ")])],1)],1)},ss=[],is=n("76ab"),rs=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"reset-circle-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5v0c0-3.59 2.91-6.5 6.5-6.5v0zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5v0c0-3.038-2.462-5.5-5.5-5.5v0z"}}),n("path",{attrs:{d:"M3.828 4.539l0.707-0.707 5.657 5.657-0.707 0.707-5.657-5.657z"}}),n("path",{attrs:{d:"M3.828 9.489l5.657-5.657 0.707 0.707-5.657 5.657-0.707-0.707z"}})])},os=[],as={name:"ResetCircleIcon",components:{SVGIcon:y["a"]}},ls=as,cs=Object(w["a"])(ls,rs,os,!1,null,null,null),us=cs.exports,ds=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"check-circle-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5v0c0-3.59 2.91-6.5 6.5-6.5v0zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5v0c0-3.038-2.462-5.5-5.5-5.5v0z"}}),n("path",{attrs:{d:"M9.626 3.719l0.866 0.5-3.5 6.062-3.464-2 0.5-0.866 2.6 1.5z"}})])},ps=[],hs={name:"CheckCircleIcon",components:{SVGIcon:y["a"]}},ms=hs,fs=Object(w["a"])(ms,ds,ps,!1,null,null,null),vs=fs.exports,gs={name:"Quiz",components:{CheckCircleIcon:vs,ResetCircleIcon:us,ContentNode:je["a"],ButtonLink:is["a"]},props:{content:{type:Array,required:!1},choices:{type:Array,required:!0},isLast:{type:Boolean,default:!1},title:{type:Array,required:!0}},data(){return{userChoices:this.choices.map(()=>({checked:!1})),selectedIndex:null,checkedIndex:null}},computed:{correctChoices(){return this.choices.reduce((e,t,n)=>t.isCorrect?e.add(n):e,new Set)},choiceClasses(){return this.userChoices.map((e,t)=>({choice:!0,active:this.selectedIndex===t,disabled:e.checked||this.showNextQuestion,correct:e.checked&&this.choices[t].isCorrect,incorrect:e.checked&&!this.choices[t].isCorrect}))},showNextQuestion(){return Array.from(this.correctChoices).every(e=>this.userChoices[e].checked)},ariaLiveText:({checkedIndex:e,choices:t})=>{if(null===e)return"";const{isCorrect:n}=t[e];return`Answer number ${e+1} is ${n?"correct":"incorrect"}`}},methods:{getIconComponent(e){const t=this.userChoices[e];if(t&&t.checked)return this.choices[e].isCorrect?vs:us},submit(){this.$set(this.userChoices,this.selectedIndex,{checked:!0}),this.checkedIndex=this.selectedIndex,this.$emit("submit")},advance(){this.$emit("advance")},seeResults(){this.$emit("see-results")}}},ys=gs,bs=(n("76be"),Object(w["a"])(ys,ns,ss,!1,null,"4d37a428",null)),Cs=bs.exports;const ws=12,_s="Great job, you've answered all the questions for this tutorial.";var Ss={name:"Assessments",constants:{SuccessMessage:_s},components:{LinkableSection:st,Quiz:Cs,Progress:ts,Row:kt["a"],HeaderColumn:{render(e){return e(xt["a"],{props:{isCentered:{large:!0},span:{large:10}}},this.$slots.default)}},MainColumn:{render(e){return e(xt["a"],{props:{isCentered:{large:!0},span:{large:10,medium:10,small:12}}},this.$slots.default)}}},props:{assessments:{type:Array,required:!0},anchor:{type:String,required:!0}},inject:["navigationBarHeight"],data(){return{activeIndex:0,completed:!1,SuccessMessage:_s}},computed:{activeAssessment(){return this.assessments[this.activeIndex]},isLast(){return this.activeIndex===this.assessments.length-1},progress(){return{index:this.activeIndex+1,total:this.assessments.length}},title(){return"Check Your Understanding"}},methods:{scrollTo(e,t=0){e.scrollIntoView(!0),window.scrollBy(0,-this.navigationBarHeight-t)},onSubmit(){this.$nextTick(()=>{this.scrollTo(this.$refs.progress.$el,ws)})},onAdvance(){this.activeIndex+=1,this.$nextTick(()=>{this.scrollTo(this.$refs.progress.$el,ws)})},onSeeResults(){this.completed=!0,this.$nextTick(()=>{this.scrollTo(this.$refs.assessments.$el,ws)})}}},ks=Ss,xs=(n("53b5"),Object(w["a"])(ks,Qn,Kn,!1,null,"c1de71de",null)),Ts=xs.exports,As={name:"Assessments",components:{TutorialAssessments:Ts},props:Ts.props},$s=As,Is=(n("f264"),Object(w["a"])($s,Un,Wn,!1,null,"3c94366b",null)),Os=Is.exports;const Ps={articleBody:"articleBody",callToAction:"callToAction",hero:"hero",assessments:"assessments"};var Ns={name:"Article",components:{NavigationBar:_e,PortalTarget:h["PortalTarget"]},mixins:[Se["a"]],inject:{isTargetIDE:{default:!1},store:{default(){return{reset(){}}}}},props:{hierarchy:{type:Object,required:!0},metadata:{type:Object,required:!0},references:{type:Object,required:!0},sections:{type:Array,required:!0,validator:e=>e.every(({kind:e})=>Object.prototype.hasOwnProperty.call(Ps,e))}},computed:{heroSection(){return this.sections.find(this.isHero)},heroTitle(){return(this.heroSection||{}).title},pageTitle(){return this.heroTitle?`${this.heroTitle} — ${this.metadata.category} Tutorials`:void 0}},methods:{componentFor(e){const{kind:t}=e;return{[Ps.articleBody]:gt,[Ps.callToAction]:Et,[Ps.hero]:Gn,[Ps.assessments]:Os}[t]},isHero(e){return e.kind===Ps.hero},propsFor(e){const{abstract:t,action:n,anchor:s,assessments:i,backgroundImage:r,chapter:o,content:a,estimatedTimeInMinutes:l,kind:c,media:u,projectFiles:d,title:p,video:h,xcodeRequirement:m}=e;return{[Ps.articleBody]:{content:a},[Ps.callToAction]:{abstract:t,action:n,media:u,title:p},[Ps.hero]:{backgroundImage:r,chapter:o,content:a,estimatedTimeInMinutes:l,projectFiles:d,title:p,video:h,xcodeRequirement:m},[Ps.assessments]:{anchor:s,assessments:i}}[c]}},provide(){return{references:this.references}},created(){this.store.reset()},SectionKind:Ps},js=Ns,Bs=(n("ee73"),Object(w["a"])(js,d,p,!1,null,"5f5888a5",null)),Ds=Bs.exports,Ms=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"tutorial"},[e.isTargetIDE?e._e():n("NavigationBar",{attrs:{technology:e.metadata.category,chapters:e.hierarchy.modules,topic:e.tutorialTitle||"",rootReference:e.hierarchy.reference}}),n("main",{attrs:{id:"main",role:"main",tabindex:"0"}},[e._l(e.sections,(function(e,t){return n("Section",{key:t,attrs:{section:e}})})),n("BreakpointEmitter",{on:{change:e.handleBreakpointChange}})],2),n("PortalTarget",{attrs:{name:"modal-destination",multiple:""}})],1)},qs=[],Es=n("66c9"),Rs={computed:{isClientMobile(){let e=!1;return e="maxTouchPoints"in navigator||"msMaxTouchPoints"in navigator?Boolean(navigator.maxTouchPoints||navigator.msMaxTouchPoints):window.matchMedia?window.matchMedia("(pointer:coarse)").matches:"orientation"in window,e}}},Vs=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"sections"},e._l(e.tasks,(function(t,s){return n("Section",e._b({key:s,attrs:{id:t.anchor,sectionNumber:s+1,isRuntimePreviewVisible:e.isRuntimePreviewVisible},on:{"runtime-preview-toggle":e.onRuntimePreviewToggle}},"Section",t,!1))})),1)},Ls=[],Fs=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("LinkableSection",{staticClass:"section",attrs:{anchor:e.anchor,title:e.introProps.title}},[n("Intro",e._b({},"Intro",e.introProps,!1)),e.stepsSection.length>0?n("Steps",{attrs:{content:e.stepsSection,isRuntimePreviewVisible:e.isRuntimePreviewVisible,sectionNumber:e.sectionNumber},on:{"runtime-preview-toggle":e.onRuntimePreviewToggle}}):e._e()],1)},zs=[],Hs=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"intro-container"},[n("Row",{class:["intro","intro-"+e.sectionNumber,{ide:e.isTargetIDE}]},[n("Column",{staticClass:"left"},[n("Headline",{attrs:{level:2}},[n("router-link",{attrs:{slot:"eyebrow",to:e.sectionLink},slot:"eyebrow"},[e._v(" Section "+e._s(e.sectionNumber)+" ")]),e._v(" "+e._s(e.title)+" ")],1),n("ContentNode",{attrs:{content:e.content}})],1),n("Column",{staticClass:"right"},[n("div",{staticClass:"media"},[e.media?n("Asset",{attrs:{identifier:e.media,showsReplayButton:!e.isClientMobile,showsVideoControls:e.isClientMobile,videoAutoplays:!e.isClientMobile}}):e._e()],1)])],1),e.expandedSections.length>0?n("ExpandedIntro",{staticClass:"expanded-intro",attrs:{content:e.expandedSections}}):e._e()],1)},Gs=[],Us={name:"SectionIntro",inject:{isClientMobile:{default:()=>!1},isTargetIDE:{default:()=>!1}},components:{Asset:Oe["a"],ContentNode:je["a"],ExpandedIntro:ht,Headline:Yt,Row:kt["a"],Column:{render(e){return e(xt["a"],{props:{span:{large:6,small:12}}},this.$slots.default)}}},props:{sectionAnchor:{type:String,required:!0},content:{type:Array,required:!0},media:{type:String,required:!0},title:{type:String,required:!0},sectionNumber:{type:Number,required:!0},expandedSections:{type:Array,default:()=>[]}},methods:{focus(){this.$emit("focus",this.media)}},computed:{sectionLink(){return{path:this.$route.path,hash:this.sectionAnchor,query:this.$route.query}}}},Ws=Us,Qs=(n("4896"),Object(w["a"])(Ws,Hs,Gs,!1,null,"54daa228",null)),Ks=Qs.exports,Xs=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"steps"},[n("div",{staticClass:"content-container"},e._l(e.contentNodes,(function(t,s){return n(t.component,e._b({key:s,ref:"contentNodes",refInFor:!0,tag:"component",class:e.contentClass(s),attrs:{currentIndex:e.activeStep}},"component",t.props,!1))})),1),e.isBreakpointSmall?e._e():n("BackgroundTheme",{staticClass:"asset-container",class:e.assetContainerClasses},[n("transition",{attrs:{name:"fade"}},[e.visibleAsset.media?n("div",{key:e.visibleAsset.media,class:["asset-wrapper",{ide:e.isTargetIDE}]},[n("Asset",{ref:"asset",staticClass:"step-asset",attrs:{identifier:e.visibleAsset.media,showsReplayButton:"",showsVideoControls:!1}})],1):e._e(),e.visibleAsset.code?n("CodePreview",{attrs:{code:e.visibleAsset.code,preview:e.visibleAsset.runtimePreview,isRuntimePreviewVisible:e.isRuntimePreviewVisible},on:{"runtime-preview-toggle":e.onRuntimePreviewToggle}},[e.visibleAsset.runtimePreview?n("transition",{attrs:{name:"fade"}},[n("Asset",{key:e.visibleAsset.runtimePreview,attrs:{identifier:e.visibleAsset.runtimePreview}})],1):e._e()],1):e._e()],1)],1)],1)},Js=[],Ys=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{class:["code-preview",{ide:e.isTargetIDE}]},[n("CodeTheme",[e.code?n("CodeListing",e._b({attrs:{showLineNumbers:""}},"CodeListing",e.codeProps,!1)):e._e()],1),n("div",{staticClass:"runtime-preview",class:e.runtimePreviewClasses,style:e.previewStyles},[n("button",{staticClass:"header",attrs:{disabled:!e.hasRuntimePreview,title:e.runtimePreviewTitle},on:{click:e.togglePreview}},[n("span",{staticClass:"runtime-preview-label",attrs:{"aria-label":e.textAriaLabel}},[e._v(e._s(e.togglePreviewText))]),n("DiagonalArrowIcon",{staticClass:"icon-inline preview-icon",class:[e.shouldDisplayHideLabel?"preview-hide":"preview-show"]})],1),n("transition",{on:{leave:e.handleLeave}},[n("div",{directives:[{name:"show",rawName:"v-show",value:e.shouldDisplayHideLabel,expression:"shouldDisplayHideLabel"}],staticClass:"runtime-preview-asset"},[e._t("default")],2)])],1)],1)},Zs=[],ei=n("7b69"),ti=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"diagonal-arrow",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M0.010 12.881l10.429-10.477-3.764 0.824-0.339-1.549 7.653-1.679-1.717 7.622-1.546-0.349 0.847-3.759-10.442 10.487z"}})])},ni=[],si={name:"DiagonalArrowIcon",components:{SVGIcon:y["a"]}},ii=si,ri=Object(w["a"])(ii,ti,ni,!1,null,null,null),oi=ri.exports,ai=n("8590");const{BreakpointName:li}=o["a"].constants;function ci({width:e,height:t},n=1){const s=400,i=e<=s?1.75:3;return{width:e/(i/n),height:t/(i/n)}}var ui={name:"CodePreview",inject:["references","isTargetIDE","store"],components:{DiagonalArrowIcon:oi,CodeListing:ei["a"],CodeTheme:ai["a"]},props:{code:{type:String,required:!0},preview:{type:String,required:!1},isRuntimePreviewVisible:{type:Boolean,required:!0}},data(){return{tutorialState:this.store.state}},computed:{currentBreakpoint(){return this.tutorialState.breakpoint},hasRuntimePreview(){return!!this.preview},previewAssetSize(){const e=this.hasRuntimePreview?this.references[this.preview]:{},t=(e.variants||[{}])[0]||{},n={width:900};let s=t.size||{};s.width||s.height||(s=n);const i=this.currentBreakpoint===li.medium?.8:1;return ci(s,i)},previewSize(){const e={width:102,height:32};return this.shouldDisplayHideLabel&&this.previewAssetSize?{width:this.previewAssetSize.width,height:this.previewAssetSize.height+e.height}:e},previewStyles(){const{width:e,height:t}=this.previewSize;return{width:e+"px",height:t+"px"}},codeProps(){return this.references[this.code]},runtimePreviewClasses(){return{collapsed:!this.shouldDisplayHideLabel,disabled:!this.hasRuntimePreview,"runtime-preview-ide":this.isTargetIDE}},shouldDisplayHideLabel(){return this.hasRuntimePreview&&this.isRuntimePreviewVisible},runtimePreviewTitle(){return this.hasRuntimePreview?null:"No preview available for this step."},togglePreviewText(){return this.hasRuntimePreview?"Preview":"No Preview"},textAriaLabel:({shouldDisplayHideLabel:e,togglePreviewText:t})=>`${t}, ${e?"Hide":"Show"}`},methods:{handleLeave(e,t){setTimeout(t,200)},togglePreview(){this.hasRuntimePreview&&this.$emit("runtime-preview-toggle",!this.isRuntimePreviewVisible)}}},di=ui,pi=(n("7bc6"),Object(w["a"])(di,Ys,Zs,!1,null,"1890a2ba",null)),hi=pi.exports,mi=n("3908"),fi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{style:e.backgroundStyle},[e._t("default")],2)},vi=[],gi={name:"BackgroundTheme",data(){return{codeThemeState:Es["a"].state}},computed:{backgroundStyle(){const{codeColors:e}=this.codeThemeState;return e?{"--background":e.background}:null}}},yi=gi,bi=Object(w["a"])(yi,fi,vi,!1,null,null,null),Ci=bi.exports,wi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{class:["step-container","step-"+e.stepNumber]},[n("div",{ref:"step",staticClass:"step",class:{focused:e.isActive},attrs:{"data-index":e.index}},[n("p",{staticClass:"step-label"},[e._v("Step "+e._s(e.stepNumber))]),n("ContentNode",{attrs:{content:e.content}}),e.caption&&e.caption.length>0?n("ContentNode",{staticClass:"caption",attrs:{content:e.caption}}):e._e()],1),e.isBreakpointSmall||!e.isTargetIDE?n("div",{staticClass:"media-container"},[e.media?n("Asset",{attrs:{identifier:e.media,showsReplayButton:!e.isClientMobile,showsVideoControls:e.isClientMobile,videoAutoplays:!e.isClientMobile}}):e._e(),e.code?n("MobileCodePreview",{attrs:{code:e.code}},[e.runtimePreview?n("Asset",{staticClass:"preview",attrs:{identifier:e.runtimePreview}}):e._e()],1):e._e()],1):e._e()])},_i=[],Si=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("BackgroundTheme",{staticClass:"mobile-code-preview"},[e.code?n("GenericModal",{staticClass:"full-code-listing-modal",attrs:{theme:e.isTargetIDE?"code":"light",codeBackgroundColorOverride:e.modalBackgroundColor,isFullscreen:"",visible:e.fullCodeIsVisible},on:{"update:visible":function(t){e.fullCodeIsVisible=t}}},[n("div",{staticClass:"full-code-listing-modal-content"},[n("CodeTheme",[n("CodeListing",e._b({staticClass:"full-code-listing",attrs:{showLineNumbers:""}},"CodeListing",e.codeProps,!1))],1)],1)]):e._e(),n("CodeTheme",[e.code?n("MobileCodeListing",e._b({attrs:{showLineNumbers:""},on:{"file-name-click":e.toggleFullCode}},"MobileCodeListing",e.codeProps,!1)):e._e()],1),n("CodeTheme",{staticClass:"preview-toggle-container"},[n("PreviewToggle",{attrs:{isActionable:!!e.$slots.default},on:{click:e.togglePreview}})],1),e.$slots.default?n("GenericModal",{staticClass:"runtime-preview-modal",attrs:{theme:e.isTargetIDE?"dynamic":"light",isFullscreen:"",visible:e.previewIsVisible},on:{"update:visible":function(t){e.previewIsVisible=t}}},[n("div",{staticClass:"runtime-preview-modal-content"},[n("span",{staticClass:"runtime-preview-label"},[e._v("Preview")]),e._t("default")],2)]):e._e()],1)},ki=[],xi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"code-listing-preview",attrs:{"data-syntax":e.syntax}},[n("CodeListing",{attrs:{fileName:e.fileName,syntax:e.syntax,fileType:e.fileType,content:e.previewedLines,startLineNumber:e.displayedRange.start,highlights:e.highlights,showLineNumbers:"",isFileNameActionable:""},on:{"file-name-click":function(t){return e.$emit("file-name-click")}}})],1)},Ti=[],Ai={name:"MobileCodeListing",components:{CodeListing:ei["a"]},props:{fileName:String,syntax:String,fileType:String,content:{type:Array,required:!0},highlights:{type:Array,default:()=>[]}},computed:{highlightedLineNumbers(){return new Set(this.highlights.map(({line:e})=>e))},firstHighlightRange(){if(0===this.highlightedLineNumbers.size)return{start:1,end:this.content.length};const e=Math.min(...this.highlightedLineNumbers.values());let t=e;while(this.highlightedLineNumbers.has(t+1))t+=1;return{start:e,end:t}},displayedRange(){const e=this.firstHighlightRange,t=e.start-2<1?1:e.start-2,n=e.end+3>=this.content.length+1?this.content.length+1:e.end+3;return{start:t,end:n}},previewedLines(){return this.content.slice(this.displayedRange.start-1,this.displayedRange.end-1)}}},$i=Ai,Ii=(n("fae5"),Object(w["a"])($i,xi,Ti,!1,null,"5ad4e037",null)),Oi=Ii.exports,Pi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("span",{staticClass:"toggle-preview"},[e.isActionable?n("a",{staticClass:"toggle-text",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.$emit("click")}}},[e._v(" Preview "),n("InlinePlusCircleIcon",{staticClass:"toggle-icon icon-inline"})],1):n("span",{staticClass:"toggle-text"},[e._v(" No preview ")])])},Ni=[],ji=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"inline-plus-circle-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5v0c0-3.59 2.91-6.5 6.5-6.5v0zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5v0c0-3.038-2.462-5.5-5.5-5.5v0z"}}),n("path",{attrs:{d:"M4 6.52h6v1h-6v-1z"}}),n("path",{attrs:{d:"M6.5 4.010h1v6h-1v-6z"}})])},Bi=[],Di={name:"InlinePlusCircleIcon",components:{SVGIcon:y["a"]}},Mi=Di,qi=Object(w["a"])(Mi,ji,Bi,!1,null,null,null),Ei=qi.exports,Ri={name:"MobileCodePreviewToggle",components:{InlinePlusCircleIcon:Ei},props:{isActionable:{type:Boolean,required:!0}}},Vi=Ri,Li=(n("e97b"),Object(w["a"])(Vi,Pi,Ni,!1,null,"d0709828",null)),Fi=Li.exports,zi={name:"MobileCodePreview",inject:["references","isTargetIDE","store"],components:{GenericModal:fn,CodeListing:ei["a"],MobileCodeListing:Oi,PreviewToggle:Fi,CodeTheme:ai["a"],BackgroundTheme:Ci},props:{code:{type:String,required:!0}},computed:{codeProps(){return this.references[this.code]},modalBackgroundColor(){const{codeColors:e}=this.store.state;return e?e.background:null}},data(){return{previewIsVisible:!1,fullCodeIsVisible:!1}},methods:{togglePreview(){this.previewIsVisible=!this.previewIsVisible},toggleFullCode(){this.fullCodeIsVisible=!this.fullCodeIsVisible}}},Hi=zi,Gi=(n("3012"),Object(w["a"])(Hi,Si,ki,!1,null,"b130569c",null)),Ui=Gi.exports;const{BreakpointName:Wi}=o["a"].constants;var Qi={name:"Step",components:{Asset:Oe["a"],MobileCodePreview:Ui,ContentNode:je["a"]},inject:["isTargetIDE","isClientMobile","store"],props:{code:{type:String,required:!1},content:{type:Array,required:!0},caption:{type:Array,required:!1},media:{type:String,required:!1},runtimePreview:{type:String,required:!1},sectionNumber:{type:Number,required:!0},stepNumber:{type:Number,required:!0},numberOfSteps:{type:Number,required:!0},index:{type:Number,required:!0},currentIndex:{type:Number,required:!0}},data(){return{tutorialState:this.store.state}},computed:{isBreakpointSmall(){return this.tutorialState.breakpoint===Wi.small},isActive:({index:e,currentIndex:t})=>e===t}},Ki=Qi,Xi=(n("bc03"),Object(w["a"])(Ki,wi,_i,!1,null,"4abdd121",null)),Ji=Xi.exports;const{BreakpointName:Yi}=o["a"].constants,{IntersectionDirections:Zi}=Ze["a"].constants,er="-35% 0% -65% 0%";var tr={name:"SectionSteps",components:{ContentNode:je["a"],Step:Ji,Asset:Oe["a"],CodePreview:hi,BackgroundTheme:Ci},mixins:[Ze["a"]],constants:{IntersectionMargins:er},inject:["isTargetIDE","store"],data(){const e=this.content.findIndex(this.isStepNode),{code:t,media:n,runtimePreview:s}=this.content[e]||{};return{tutorialState:this.store.state,visibleAsset:{media:n,code:t,runtimePreview:s},activeStep:e}},computed:{assetContainerClasses(){return{"for-step-code":!!this.visibleAsset.code,ide:this.isTargetIDE}},numberOfSteps(){return this.content.filter(this.isStepNode).length},contentNodes(){return this.content.reduce(({stepCounter:e,nodes:t},n,s)=>{const{type:i,...r}=n,o=this.isStepNode(n),a=o?e+1:e;return o?{stepCounter:e+1,nodes:t.concat({component:Ji,type:i,props:{...r,stepNumber:a,index:s,numberOfSteps:this.numberOfSteps,sectionNumber:this.sectionNumber}})}:{stepCounter:e,nodes:t.concat({component:je["a"],type:i,props:{content:[n]}})}},{stepCounter:0,nodes:[]}).nodes},isBreakpointSmall(){return this.tutorialState.breakpoint===Yi.small},stepNodes:({contentNodes:e,isStepNode:t})=>e.filter(t),intersectionRootMargin:()=>er},async mounted(){await Object(mi["a"])(8),this.findClosestStepNode()},methods:{isStepNode({type:e}){return"step"===e},contentClass(e){return{["interstitial interstitial-"+(e+1)]:!this.isStepNode(this.content[e])}},onReverseIntoLastStep(){const{asset:e}=this.$refs;if(e){const t=e.$el.querySelector("video");t&&(t.currentTime=0,t.play().catch(()=>{}))}},onFocus(e){const{code:t,media:n,runtimePreview:s}=this.content[e];this.activeStep=e,this.visibleAsset={code:t,media:n,runtimePreview:s}},onRuntimePreviewToggle(e){this.$emit("runtime-preview-toggle",e)},findClosestStepNode(){const e=.333*window.innerHeight;let t=null,n=0;this.stepNodes.forEach(s=>{const{index:i}=s.props,r=this.$refs.contentNodes[i].$refs.step;if(!r)return;const{top:o,bottom:a}=r.getBoundingClientRect(),l=o-e,c=a-e,u=Math.abs(l+c);(0===n||u<=n)&&(n=u,t=i)}),null!==t&&this.onFocus(t)},getIntersectionTargets(){const{stepNodes:e,$refs:t}=this;return e.map(({props:{index:e}})=>t.contentNodes[e].$refs.step)},onIntersect(e){const{target:t,isIntersecting:n}=e;if(!n)return;const s=parseFloat(t.getAttribute("data-index"));this.intersectionScrollDirection===Zi.down&&s===this.stepNodes[this.stepNodes.length-1].props.index&&this.onReverseIntoLastStep(),this.onFocus(s)}},props:{content:{type:Array,required:!0},isRuntimePreviewVisible:{type:Boolean,require:!0},sectionNumber:{type:Number,required:!0}}},nr=tr,sr=(n("00f4"),Object(w["a"])(nr,Xs,Js,!1,null,"25d30c2c",null)),ir=sr.exports,rr={name:"Section",components:{Intro:Ks,LinkableSection:st,Steps:ir},computed:{introProps(){const[{content:e,media:t},...n]=this.contentSection;return{content:e,expandedSections:n,media:t,sectionAnchor:this.anchor,sectionNumber:this.sectionNumber,title:this.title}}},props:{anchor:{type:String,required:!0},title:{type:String,required:!0},contentSection:{type:Array,required:!0},stepsSection:{type:Array,required:!0},sectionNumber:{type:Number,required:!0},isRuntimePreviewVisible:{type:Boolean,required:!0}},methods:{onRuntimePreviewToggle(e){this.$emit("runtime-preview-toggle",e)}}},or=rr,ar=(n("9dc4"),Object(w["a"])(or,Fs,zs,!1,null,"6b3a0b3a",null)),lr=ar.exports,cr={name:"SectionList",components:{Section:lr},data(){return{isRuntimePreviewVisible:!0}},props:{tasks:{type:Array,required:!0}},methods:{onRuntimePreviewToggle(e){this.isRuntimePreviewVisible=e}}},ur=cr,dr=(n("4d07"),Object(w["a"])(ur,Vs,Ls,!1,null,"79a75e9e",null)),pr=dr.exports;const hr={assessments:Ts,hero:Ln,tasks:pr,callToAction:Bt},mr=new Set(Object.keys(hr)),fr={name:"TutorialSection",render:function(e){const{kind:t,...n}=this.section,s=hr[t];return s?e(s,{props:n}):null},props:{section:{type:Object,required:!0,validator:e=>mr.has(e.kind)}}};var vr={name:"Tutorial",mixins:[Se["a"],Rs],components:{NavigationBar:_e,Section:fr,PortalTarget:h["PortalTarget"],BreakpointEmitter:o["a"]},inject:["isTargetIDE","store"],computed:{heroSection(){return this.sections.find(({kind:e})=>"hero"===e)},tutorialTitle(){return(this.heroSection||{}).title},pageTitle(){return this.tutorialTitle?`${this.tutorialTitle} — ${this.metadata.category} Tutorials`:void 0}},props:{sections:{type:Array,required:!0},references:{type:Object,required:!0},hierarchy:{type:Object,required:!0},metadata:{type:Object,required:!0}},methods:{handleBreakpointChange(e){this.store.updateBreakpoint(e)},handleCodeColorsChange(e){Es["a"].updateCodeColors(e)}},created(){this.store.reset()},mounted(){this.$bridge.on("codeColors",this.handleCodeColorsChange),this.$bridge.send({type:"requestCodeColors"})},provide(){return{references:this.references,isClientMobile:this.isClientMobile}},beforeDestroy(){this.$bridge.off("codeColors",this.handleCodeColorsChange)}},gr=vr,yr=(n("3d7d"),Object(w["a"])(gr,Ms,qs,!1,null,"6e17d3d0",null)),br=yr.exports,Cr=n("bb52"),wr=n("146e");const _r={article:"article",tutorial:"project"};var Sr={name:"Topic",inject:{isTargetIDE:{default:!1}},mixins:[Cr["a"],wr["a"]],data(){return{topicData:null}},computed:{navigationBarHeight(){return this.isTargetIDE?0:52},store(){return u},hierarchy(){const{hierarchy:e={}}=this.topicData,{technologyNavigation:t=["overview","tutorials","resources"]}=e||{};return{...e,technologyNavigation:t}},topicKey:({$route:e,topicData:t})=>[e.path,t.identifier.interfaceLanguage].join()},beforeRouteEnter(e,t,n){Object(r["b"])(e,t,n).then(e=>n(t=>{t.topicData=e})).catch(n)},beforeRouteUpdate(e,t,n){Object(r["c"])(e,t)?Object(r["b"])(e,t,n).then(e=>{this.topicData=e,n()}).catch(n):n()},created(){this.store.reset()},mounted(){this.$bridge.on("contentUpdate",e=>{this.topicData=e})},methods:{componentFor(e){const{kind:t}=e;return{[_r.article]:Ds,[_r.tutorial]:br}[t]},propsFor(e){const{hierarchy:t,kind:n,metadata:s,references:i,sections:r}=e;return{[_r.article]:{hierarchy:t,metadata:s,references:i,sections:r},[_r.tutorial]:{hierarchy:t,metadata:s,references:i,sections:r}}[n]}},provide(){return{navigationBarHeight:this.navigationBarHeight,store:this.store}},watch:{topicData(){this.$nextTick(()=>{this.newContentMounted()})}}},kr=Sr,xr=Object(w["a"])(kr,s,i,!1,null,null,null);t["default"]=xr.exports},"323a":function(e,t,n){"use strict";n("0b61")},"32b1":function(e,t,n){},"385e":function(e,t,n){},"39d2":function(e,t,n){},"3c4b":function(e,t,n){"use strict";n("1aae")},"3d7d":function(e,t,n){"use strict";n("311b")},"3e1b":function(e,t,n){"use strict";n("c5c1")},"3f84":function(e,t,n){"use strict";n("bc48")},4896:function(e,t,n){"use strict";n("fa9c")},"4b4a":function(e,t,n){},"4d07":function(e,t,n){"use strict";n("b52e")},"4eea":function(e,t,n){},5237:function(e,t,n){"use strict";n("4b4a")},"525c":function(e,t,n){},5356:function(e,t,n){"use strict";n("7e3c")},"53b5":function(e,t,n){"use strict";n("a662")},5952:function(e,t,n){"use strict";n("14b7")},"5da4":function(e,t,n){},"63a8":function(e,t,n){},"64fc":function(e,t,n){},"653a":function(e,t,n){"use strict";var s=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("router-link",{staticClass:"nav-title-content",attrs:{to:e.to}},[n("span",{staticClass:"title"},[e._t("default")],2),n("span",{staticClass:"subhead"},[e._v(" "),e._t("subhead")],2)])},i=[],r={name:"NavTitleContainer",props:{to:{type:[String,Object],required:!0}}},o=r,a=(n("a497"),n("2877")),l=Object(a["a"])(o,s,i,!1,null,"60ea3af8",null);t["a"]=l.exports},"66c9":function(e,t,n){"use strict";t["a"]={state:{codeColors:null},reset(){this.state.codeColors=null},updateCodeColors(e){const t=e=>e?`rgba(${e.red}, ${e.green}, ${e.blue}, ${e.alpha})`:null;this.state.codeColors=Object.entries(e).reduce((e,[n,s])=>({...e,[n]:t(s)}),{})}}},"6cd7":function(e,t,n){"use strict";n("a59d")},7096:function(e,t,n){},"76be":function(e,t,n){"use strict";n("cf62")},7839:function(e,t,n){"use strict";n("385e")},"78b2":function(e,t,n){},"7b17":function(e,t,n){},"7bc6":function(e,t,n){"use strict";n("b5e5")},"7e3c":function(e,t,n){},"80e4":function(e,t,n){"use strict";var s=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"asset"},[n(e.assetComponent,e._g(e._b({tag:"component"},"component",e.assetProps,!1),e.assetListeners))],1)},i=[],r=n("8bd9"),o=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("video",{attrs:{controls:e.showsControls,autoplay:e.autoplays,poster:e.normalizeAssetUrl(e.defaultPosterAttributes.url),muted:"",playsinline:""},domProps:{muted:!0},on:{playing:function(t){return e.$emit("playing")},ended:function(t){return e.$emit("ended")}}},[n("source",{attrs:{src:e.normalizeAssetUrl(e.videoAttributes.url)}})])},a=[],l=n("748c"),c=n("e425"),u=n("821b"),d={name:"VideoAsset",props:{variants:{type:Array,required:!0},showsControls:{type:Boolean,default:()=>!0},autoplays:{type:Boolean,default:()=>!0},posterVariants:{type:Array,required:!1,default:()=>[]}},data:()=>({appState:c["a"].state}),computed:{preferredColorScheme:({appState:e})=>e.preferredColorScheme,systemColorScheme:({appState:e})=>e.systemColorScheme,userPrefersDark:({preferredColorScheme:e,systemColorScheme:t})=>e===u["a"].dark.value||e===u["a"].auto.value&&t===u["a"].dark.value,shouldShowDarkVariant:({darkVideoVariantAttributes:e,userPrefersDark:t})=>e&&t,defaultVideoAttributes(){return this.videoVariantsGroupedByAppearance.light[0]||this.darkVideoVariantAttributes||{}},darkVideoVariantAttributes(){return this.videoVariantsGroupedByAppearance.dark[0]},videoVariantsGroupedByAppearance(){return Object(l["d"])(this.variants)},posterVariantsGroupedByAppearance(){return Object(l["d"])(this.posterVariants)},defaultPosterAttributes:({posterVariantsGroupedByAppearance:e,userPrefersDark:t})=>t&&e.dark.length?e.dark[0]:e.light[0]||{},videoAttributes:({darkVideoVariantAttributes:e,defaultVideoAttributes:t,shouldShowDarkVariant:n})=>n?e:t},methods:{normalizeAssetUrl:l["b"]}},p=d,h=n("2877"),m=Object(h["a"])(p,o,a,!1,null,null,null),f=m.exports,v=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"video-replay-container"},[n("VideoAsset",{ref:"asset",attrs:{variants:e.variants,showsControls:e.showsControls,autoplays:e.autoplays},on:{ended:e.onVideoEnd}}),n("a",{staticClass:"replay-button",class:{visible:this.showsReplayButton},attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),e.replay.apply(null,arguments)}}},[e._v(" Replay "),n("InlineReplayIcon",{staticClass:"replay-icon icon-inline"})],1)],1)},g=[],y=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("SVGIcon",{staticClass:"inline-replay-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M2.254 10.201c-1.633-2.613-0.838-6.056 1.775-7.689 2.551-1.594 5.892-0.875 7.569 1.592l0.12 0.184-0.848 0.53c-1.34-2.145-4.166-2.797-6.311-1.457s-2.797 4.166-1.457 6.311 4.166 2.797 6.311 1.457c1.006-0.629 1.71-1.603 2.003-2.723l0.056-0.242 0.98 0.201c-0.305 1.487-1.197 2.792-2.51 3.612-2.613 1.633-6.056 0.838-7.689-1.775z"}}),n("path",{attrs:{d:"M10.76 1.355l0.984-0.18 0.851 4.651-4.56-1.196 0.254-0.967 3.040 0.796z"}})])},b=[],C=n("be08"),w={name:"InlineReplayIcon",components:{SVGIcon:C["a"]}},_=w,S=Object(h["a"])(_,y,b,!1,null,null,null),k=S.exports,x={name:"ReplayableVideoAsset",components:{InlineReplayIcon:k,VideoAsset:f},props:{variants:{type:Array,required:!0},showsControls:{type:Boolean,default:()=>!0},autoplays:{type:Boolean,default:()=>!0}},data(){return{showsReplayButton:!1}},methods:{async replay(){const e=this.$refs.asset.$el;e&&(this.showsReplayButton=!1,e.currentTime=0,await e.play())},onVideoEnd(){this.showsReplayButton=!0}}},T=x,A=(n("3f84"),Object(h["a"])(T,v,g,!1,null,"7335dbb2",null)),$=A.exports;const I={video:"video",image:"image"};var O={name:"Asset",components:{ImageAsset:r["a"],VideoAsset:f},constants:{AssetTypes:I},inject:["references"],props:{identifier:{type:String,required:!0},showsReplayButton:{type:Boolean,default:()=>!1},showsVideoControls:{type:Boolean,default:()=>!0},videoAutoplays:{type:Boolean,default:()=>!0}},computed:{rawAsset(){return this.references[this.identifier]||{}},isRawAssetVideo:({rawAsset:e})=>e.type===I.video,videoPoster(){return this.isRawAssetVideo&&this.references[this.rawAsset.poster]},asset(){return this.isRawAssetVideo&&this.prefersReducedMotion&&this.videoPoster||this.rawAsset},assetComponent(){switch(this.asset.type){case I.image:return r["a"];case I.video:return this.showsReplayButton?$:f;default:return}},prefersReducedMotion(){return window.matchMedia("(prefers-reduced-motion)").matches},assetProps(){return{[I.image]:this.imageProps,[I.video]:this.videoProps}[this.asset.type]},imageProps(){return{alt:this.asset.alt,variants:this.asset.variants}},videoProps(){return{variants:this.asset.variants,showsControls:this.showsVideoControls,autoplays:!this.prefersReducedMotion&&this.videoAutoplays,posterVariants:this.videoPoster?this.videoPoster.variants:[]}},assetListeners(){return{[I.image]:null,[I.video]:{ended:()=>this.$emit("videoEnded")}}[this.asset.type]}}},P=O,N=(n("7839"),Object(h["a"])(P,s,i,!1,null,"1b5cc854",null));t["a"]=N.exports},"80f7":function(e,t,n){"use strict";n("4eea")},8590:function(e,t,n){"use strict";var s=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{style:e.codeStyle},[e._t("default")],2)},i=[],r=n("66c9");const o=0,a=255;function l(e){const t=e.match(/rgba\((\d+),\s*(\d+),\s*(\d+),\s*(\d+\.?\d*|\.\d+)\s*\)/);if(!t)throw new Error("invalid rgba() input");const n=10;return{r:parseInt(t[1],n),g:parseInt(t[2],n),b:parseInt(t[3],n),a:parseFloat(t[4])}}function c(e){const{r:t,g:n,b:s}=l(e);return.2126*t+.7152*n+.0722*s}function u(e,t){const n=Math.round(a*t),s=l(e),{a:i}=s,[r,c,u]=[s.r,s.g,s.b].map(e=>Math.max(o,Math.min(a,e+n)));return`rgba(${r}, ${c}, ${u}, ${i})`}function d(e,t){return u(e,t)}function p(e,t){return u(e,-1*t)}var h={name:"CodeTheme",data(){return{codeThemeState:r["a"].state}},computed:{codeStyle(){const{codeColors:e}=this.codeThemeState;return e?{"--text":e.text,"--background":e.background,"--line-highlight":e.lineHighlight,"--url":e.commentURL,"--syntax-comment":e.comment,"--syntax-quote":e.comment,"--syntax-keyword":e.keyword,"--syntax-literal":e.keyword,"--syntax-selector-tag":e.keyword,"--syntax-string":e.stringLiteral,"--syntax-bullet":e.stringLiteral,"--syntax-meta":e.keyword,"--syntax-number":e.stringLiteral,"--syntax-symbol":e.stringLiteral,"--syntax-tag":e.stringLiteral,"--syntax-attr":e.typeAnnotation,"--syntax-built_in":e.typeAnnotation,"--syntax-builtin-name":e.typeAnnotation,"--syntax-class":e.typeAnnotation,"--syntax-params":e.typeAnnotation,"--syntax-section":e.typeAnnotation,"--syntax-title":e.typeAnnotation,"--syntax-type":e.typeAnnotation,"--syntax-attribute":e.keyword,"--syntax-identifier":e.text,"--syntax-subst":e.text,"--color-syntax-param-internal-name":this.internalParamNameColor}:null},internalParamNameColor(){const{background:e,text:t}=this.codeThemeState.codeColors;try{const n=c(e),s=n!0},autoplays:{type:Boolean,default:()=>!0},posterVariants:{type:Array,required:!1,default:()=>[]}},data:()=>({appState:l["a"].state}),computed:{preferredColorScheme:({appState:t})=>t.preferredColorScheme,systemColorScheme:({appState:t})=>t.systemColorScheme,userPrefersDark:({preferredColorScheme:t,systemColorScheme:e})=>t===u["a"].dark.value||t===u["a"].auto.value&&e===u["a"].dark.value,shouldShowDarkVariant:({darkVideoVariantAttributes:t,userPrefersDark:e})=>t&&e,defaultVideoAttributes(){return this.videoVariantsGroupedByAppearance.light[0]||this.darkVideoVariantAttributes||{}},darkVideoVariantAttributes(){return this.videoVariantsGroupedByAppearance.dark[0]},videoVariantsGroupedByAppearance(){return Object(c["d"])(this.variants)},posterVariantsGroupedByAppearance(){return Object(c["d"])(this.posterVariants)},defaultPosterAttributes:({posterVariantsGroupedByAppearance:t,userPrefersDark:e})=>e&&t.dark.length?t.dark[0]:t.light[0]||{},videoAttributes:({darkVideoVariantAttributes:t,defaultVideoAttributes:e,shouldShowDarkVariant:n})=>n?t:e},methods:{normalizeAssetUrl:c["b"]}},p=d,m=n("2877"),h=Object(m["a"])(p,o,r,!1,null,null,null),v=h.exports,f=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"video-replay-container"},[n("VideoAsset",{ref:"asset",attrs:{variants:t.variants,showsControls:t.showsControls,autoplays:t.autoplays},on:{ended:t.onVideoEnd}}),n("a",{staticClass:"replay-button",class:{visible:this.showsReplayButton},attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.replay.apply(null,arguments)}}},[t._v(" Replay "),n("InlineReplayIcon",{staticClass:"replay-icon icon-inline"})],1)],1)},y=[],b=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("SVGIcon",{staticClass:"inline-replay-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M2.254 10.201c-1.633-2.613-0.838-6.056 1.775-7.689 2.551-1.594 5.892-0.875 7.569 1.592l0.12 0.184-0.848 0.53c-1.34-2.145-4.166-2.797-6.311-1.457s-2.797 4.166-1.457 6.311 4.166 2.797 6.311 1.457c1.006-0.629 1.71-1.603 2.003-2.723l0.056-0.242 0.98 0.201c-0.305 1.487-1.197 2.792-2.51 3.612-2.613 1.633-6.056 0.838-7.689-1.775z"}}),n("path",{attrs:{d:"M10.76 1.355l0.984-0.18 0.851 4.651-4.56-1.196 0.254-0.967 3.040 0.796z"}})])},C=[],_=n("be08"),g={name:"InlineReplayIcon",components:{SVGIcon:_["a"]}},V=g,S=Object(m["a"])(V,b,C,!1,null,null,null),A=S.exports,T={name:"ReplayableVideoAsset",components:{InlineReplayIcon:A,VideoAsset:v},props:{variants:{type:Array,required:!0},showsControls:{type:Boolean,default:()=>!0},autoplays:{type:Boolean,default:()=>!0}},data(){return{showsReplayButton:!1}},methods:{async replay(){const t=this.$refs.asset.$el;t&&(this.showsReplayButton=!1,t.currentTime=0,await t.play())},onVideoEnd(){this.showsReplayButton=!0}}},w=T,k=(n("3f84"),Object(m["a"])(w,f,y,!1,null,"7335dbb2",null)),I=k.exports;const x={video:"video",image:"image"};var O={name:"Asset",components:{ImageAsset:i["a"],VideoAsset:v},constants:{AssetTypes:x},inject:["references"],props:{identifier:{type:String,required:!0},showsReplayButton:{type:Boolean,default:()=>!1},showsVideoControls:{type:Boolean,default:()=>!0},videoAutoplays:{type:Boolean,default:()=>!0}},computed:{rawAsset(){return this.references[this.identifier]||{}},isRawAssetVideo:({rawAsset:t})=>t.type===x.video,videoPoster(){return this.isRawAssetVideo&&this.references[this.rawAsset.poster]},asset(){return this.isRawAssetVideo&&this.prefersReducedMotion&&this.videoPoster||this.rawAsset},assetComponent(){switch(this.asset.type){case x.image:return i["a"];case x.video:return this.showsReplayButton?I:v;default:return}},prefersReducedMotion(){return window.matchMedia("(prefers-reduced-motion)").matches},assetProps(){return{[x.image]:this.imageProps,[x.video]:this.videoProps}[this.asset.type]},imageProps(){return{alt:this.asset.alt,variants:this.asset.variants}},videoProps(){return{variants:this.asset.variants,showsControls:this.showsVideoControls,autoplays:!this.prefersReducedMotion&&this.videoAutoplays,posterVariants:this.videoPoster?this.videoPoster.variants:[]}},assetListeners(){return{[x.image]:null,[x.video]:{ended:()=>this.$emit("videoEnded")}}[this.asset.type]}}},j=O,N=(n("7839"),Object(m["a"])(j,s,a,!1,null,"1b5cc854",null));e["a"]=N.exports},"82d9":function(t,e,n){},"85fb":function(t,e,n){},"8d2d":function(t,e,n){"use strict";var s=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("SVGIcon",{staticClass:"tutorial-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M0.933 6.067h3.733v1.867h-3.733v-1.867z"}}),n("path",{attrs:{d:"M0.933 1.867h3.733v1.867h-3.733v-1.867z"}}),n("path",{attrs:{d:"M13.067 1.867v10.267h-7.467v-10.267zM12.133 2.8h-5.6v8.4h5.6z"}}),n("path",{attrs:{d:"M0.933 10.267h3.733v1.867h-3.733v-1.867z"}})])},a=[],i=n("be08"),o={name:"TutorialIcon",components:{SVGIcon:i["a"]}},r=o,c=n("2877"),l=Object(c["a"])(r,s,a,!1,null,null,null);e["a"]=l.exports},"8f86":function(t,e,n){},"9b79":function(t,e,n){},"9f56":function(t,e,n){},a497:function(t,e,n){"use strict";n("da75")},a8f9:function(t,e,n){"use strict";n("d4d0")},a9f1:function(t,e,n){"use strict";var s=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("SVGIcon",{staticClass:"article-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M8.033 1l3.967 4.015v7.985h-10v-12zM7.615 2h-4.615v10h8v-6.574z"}}),n("path",{attrs:{d:"M7 1h1v4h-1z"}}),n("path",{attrs:{d:"M7 5h5v1h-5z"}})])},a=[],i=n("be08"),o={name:"ArticleIcon",components:{SVGIcon:i["a"]}},r=o,c=n("2877"),l=Object(c["a"])(r,s,a,!1,null,null,null);e["a"]=l.exports},b185:function(t,e,n){},b9c2:function(t,e,n){},bc48:function(t,e,n){},be3b:function(t,e,n){"use strict";n("fb27")},c4dd:function(t,e,n){"use strict";var s=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("SVGIcon",{staticClass:"play-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5v0c0-3.59 2.91-6.5 6.5-6.5v0zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5v0c0-3.038-2.462-5.5-5.5-5.5v0z"}}),n("path",{attrs:{d:"M10.195 7.010l-5 3v-6l5 3z"}})])},a=[],i=n("be08"),o={name:"PlayIcon",components:{SVGIcon:i["a"]}},r=o,c=n("2877"),l=Object(c["a"])(r,s,a,!1,null,null,null);e["a"]=l.exports},c802:function(t,e,n){"use strict";n("f084")},c8fd:function(t,e,n){"use strict";n("1509")},d4d0:function(t,e,n){},d647:function(t,e,n){"use strict";n("b185")},da75:function(t,e,n){},dcb9:function(t,e,n){},de60:function(t,e,n){"use strict";var s=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("SVGIcon",{staticClass:"download-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5s2.91-6.5 6.5-6.5zM7 1.5c-3.038 0-5.5 2.462-5.5 5.5s2.462 5.5 5.5 5.5c3.038 0 5.5-2.462 5.5-5.5s-2.462-5.5-5.5-5.5z"}}),n("path",{attrs:{d:"M7.51 2.964l-0.001 5.431 1.308-2.041 0.842 0.539-2.664 4.162-2.633-4.164 0.845-0.534 1.303 2.059 0.001-5.452z"}})])},a=[],i=n("be08"),o={name:"DownloadIcon",components:{SVGIcon:i["a"]}},r=o,c=n("2877"),l=Object(c["a"])(r,s,a,!1,null,null,null);e["a"]=l.exports},e929:function(t,e,n){"use strict";n("54b0")},ec73:function(t,e,n){},ee29:function(t,e,n){"use strict";n("b9c2")},f025:function(t,e,n){"use strict";n.r(e);var s=function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.topicData?n("Overview",t._b({key:t.topicKey},"Overview",t.overviewProps,!1)):t._e()},a=[],i=n("25a9"),o=n("bb52"),r=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"tutorials-overview"},[t.isTargetIDE?t._e():n("Nav",{staticClass:"theme-dark",attrs:{sections:t.otherSections}},[t._v(" "+t._s(t.title)+" ")]),n("main",{staticClass:"main",attrs:{id:"main",role:"main",tabindex:"0"}},[n("div",{staticClass:"radial-gradient"},[t._t("above-hero"),t.heroSection?n("Hero",{attrs:{action:t.heroSection.action,content:t.heroSection.content,estimatedTime:t.metadata.estimatedTime,image:t.heroSection.image,title:t.heroSection.title}}):t._e()],2),t.otherSections.length>0?n("LearningPath",{attrs:{sections:t.otherSections}}):t._e()],1)],1)},c=[],l={state:{activeTutorialLink:null,activeVolume:null},reset(){this.state.activeTutorialLink=null,this.state.activeVolume=null},setActiveSidebarLink(t){this.state.activeTutorialLink=t},setActiveVolume(t){this.state.activeVolume=t}},u=n("d8ce"),d=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("section",{staticClass:"hero"},[n("div",{staticClass:"copy-container"},[n("h1",{staticClass:"title"},[t._v(t._s(t.title))]),t.content?n("ContentNode",{attrs:{content:t.content}}):t._e(),t.estimatedTime?n("p",{staticClass:"meta"},[n("TimerIcon"),n("span",{staticClass:"meta-content"},[n("strong",{staticClass:"time"},[t._v(t._s(t.estimatedTime))]),n("span",[t._v(" Estimated Time")])])],1):t._e(),t.action?n("CallToActionButton",{attrs:{action:t.action,"aria-label":t.action.overridingTitle+" with "+t.title,isDark:""}}):t._e()],1),t.image?n("Asset",{attrs:{identifier:t.image}}):t._e()],1)},p=[],m=n("80e4"),h=n("c081"),v=n("5677"),f=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("SVGIcon",{staticClass:"timer-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M7 0.5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5c-3.59 0-6.5-2.91-6.5-6.5v0c0-3.59 2.91-6.5 6.5-6.5v0zM7 2c-2.761 0-5 2.239-5 5s2.239 5 5 5c2.761 0 5-2.239 5-5v0c0-2.761-2.239-5-5-5v0z"}}),n("path",{attrs:{d:"M6.51 3.51h1.5v3.5h-1.5v-3.5z"}}),n("path",{attrs:{d:"M6.51 7.010h4v1.5h-4v-1.5z"}})])},y=[],b=n("be08"),C={name:"TimerIcon",components:{SVGIcon:b["a"]}},_=C,g=n("2877"),V=Object(g["a"])(_,f,y,!1,null,null,null),S=V.exports,A={name:"Hero",components:{Asset:m["a"],CallToActionButton:h["a"],ContentNode:v["a"],TimerIcon:S},props:{action:{type:Object,required:!1},content:{type:Array,required:!1},estimatedTime:{type:String,required:!1},image:{type:String,required:!1},title:{type:String,required:!0}}},T=A,w=(n("f974"),Object(g["a"])(T,d,p,!1,null,"fc7f508c",null)),k=w.exports,I=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"learning-path",class:t.classes},[n("div",{staticClass:"main-container"},[t.isTargetIDE?t._e():n("div",{staticClass:"secondary-content-container"},[n("TutorialsNavigation",{attrs:{sections:t.sections,"aria-label":"On this page"}})],1),n("div",{staticClass:"primary-content-container"},[n("div",{staticClass:"content-sections-container"},[t._l(t.volumes,(function(e,s){return n("Volume",t._b({key:"volume_"+s,staticClass:"content-section"},"Volume",t.propsFor(e),!1))})),t._l(t.otherSections,(function(e,s){return n(t.componentFor(e),t._b({key:"resource_"+s,tag:"component",staticClass:"content-section"},"component",t.propsFor(e),!1))}))],2)])])])},x=[],O=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("section",{staticClass:"resources",attrs:{id:"resources",tabindex:"-1"}},[n("VolumeName",{attrs:{name:"Resources",content:t.content}}),n("TileGroup",{attrs:{tiles:t.tiles}})],1)},j=[],N=n("72e7");const E={topOneThird:"-30% 0% -70% 0%",center:"-50% 0% -50% 0%"};var M={mixins:[N["a"]],computed:{intersectionRoot(){return null},intersectionRootMargin(){return E.center}},methods:{onIntersect(t){if(!t.isIntersecting)return;const e=this.onIntersectViewport;e?e():console.warn("onIntersectViewportCenter not implemented")}}},$=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"volume-name"},[t.image?n("Asset",{staticClass:"image",attrs:{identifier:t.image,"aria-hidden":"true"}}):t._e(),n("h2",{staticClass:"name"},[t._v(" "+t._s(t.name)+" ")]),t.content?n("ContentNode",{attrs:{content:t.content}}):t._e()],1)},q=[],B={name:"VolumeName",components:{ContentNode:v["a"],Asset:m["a"]},props:{image:{type:String,required:!1},content:{type:Array,required:!1},name:{type:String,required:!1}}},R=B,z=(n("c802"),Object(g["a"])(R,$,q,!1,null,"14577284",null)),L=z.exports,D=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"tile-group",class:t.countClass},t._l(t.tiles,(function(e){return n("Tile",t._b({key:e.title},"Tile",t.propsFor(e),!1))})),1)},G=[],P=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"tile"},[t.identifier?n("div",{staticClass:"icon"},[n(t.iconComponent,{tag:"component"})],1):t._e(),n("div",{staticClass:"title"},[t._v(t._s(t.title))]),n("ContentNode",{attrs:{content:t.content}}),t.action?n("DestinationDataProvider",{attrs:{destination:t.action},scopedSlots:t._u([{key:"default",fn:function(e){var s=e.url,a=e.title;return n("Reference",{staticClass:"link",attrs:{url:s}},[t._v(" "+t._s(a)+" "),n("InlineChevronRightIcon",{staticClass:"link-icon icon-inline"})],1)}}],null,!1,3874201962)}):t._e()],1)},F=[],H=n("3b96"),K=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("SVGIcon",{staticClass:"document-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M11.2,5.3,8,2l-.1-.1H2.8V12.1h8.5V6.3l-.1-1ZM8,3.2l2,2.1H8Zm2.4,8H3.6V2.8H7V6.3h3.4Z"}})])},U=[],Z={name:"DocumentIcon",components:{SVGIcon:b["a"]}},J=Z,Q=(n("77e2"),Object(g["a"])(J,K,U,!1,null,"56114692",null)),W=Q.exports,X=n("de60"),Y=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("SVGIcon",{staticClass:"forum-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M13 1v9h-7l-1.5 3-1.5-3h-2v-9zM12 2h-10v7h1.616l0.884 1.763 0.88-1.763h6.62z"}}),n("path",{attrs:{d:"M3 4h8.001v1h-8.001v-1z"}}),n("path",{attrs:{d:"M3 6h8.001v1h-8.001v-1z"}})])},tt=[],et={name:"ForumIcon",components:{SVGIcon:b["a"]}},nt=et,st=Object(g["a"])(nt,Y,tt,!1,null,null,null),at=st.exports,it=n("c4dd"),ot=n("86d8"),rt=n("34b0"),ct=n("c7ea");const lt={documentation:"documentation",downloads:"downloads",featured:"featured",forums:"forums",sampleCode:"sampleCode",videos:"videos"};var ut,dt,pt={name:"Tile",constants:{Identifier:lt},components:{DestinationDataProvider:ct["a"],InlineChevronRightIcon:rt["a"],ContentNode:v["a"],CurlyBracketsIcon:H["a"],DocumentIcon:W,DownloadIcon:X["a"],ForumIcon:at,PlayIcon:it["a"],Reference:ot["a"]},props:{action:{type:Object,required:!1},content:{type:Array,required:!0},identifier:{type:String,required:!1},title:{type:String,require:!0}},computed:{iconComponent:({identifier:t})=>({[lt.documentation]:W,[lt.downloads]:X["a"],[lt.forums]:at,[lt.sampleCode]:H["a"],[lt.videos]:it["a"]}[t])}},mt=pt,ht=(n("0175"),Object(g["a"])(mt,P,F,!1,null,"86db603a",null)),vt=ht.exports,ft={name:"TileGroup",components:{Tile:vt},props:{tiles:{type:Array,required:!0}},computed:{countClass:({tiles:t})=>"count-"+t.length},methods:{propsFor:({action:t,content:e,identifier:n,title:s})=>({action:t,content:e,identifier:n,title:s})}},yt=ft,bt=(n("f0ca"),Object(g["a"])(yt,D,G,!1,null,"015f9f13",null)),Ct=bt.exports,_t={name:"Resources",mixins:[M],inject:{store:{default:()=>({setActiveSidebarLink(){},setActiveVolume(){}})}},components:{VolumeName:L,TileGroup:Ct},computed:{intersectionRootMargin:()=>E.topOneThird},props:{content:{type:Array,required:!1},tiles:{type:Array,required:!0}},methods:{onIntersectViewport(){this.store.setActiveSidebarLink("Resources"),this.store.setActiveVolume(null)}}},gt=_t,Vt=(n("5668"),Object(g["a"])(gt,O,j,!1,null,"49ba6f62",null)),St=Vt.exports,At=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("nav",{staticClass:"tutorials-navigation"},[n("TutorialsNavigationList",t._l(t.sections,(function(e,s){return n("li",{key:e.name+"_"+s,class:t.sectionClasses(e)},[t.isVolume(e)?n(t.componentForVolume(e),t._b({tag:"component",on:{"select-menu":t.onSelectMenu,"deselect-menu":t.onDeselectMenu}},"component",t.propsForVolume(e),!1),t._l(e.chapters,(function(e){return n("li",{key:e.name},[n("TutorialsNavigationLink",[t._v(" "+t._s(e.name)+" ")])],1)})),0):t.isResources(e)?n("TutorialsNavigationLink",[t._v(" Resources ")]):t._e()],1)})),0)],1)},Tt=[],wt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("router-link",{staticClass:"tutorials-navigation-link",class:{active:t.active},attrs:{to:t.fragment},nativeOn:{click:function(e){return t.handleFocus.apply(null,arguments)}}},[t._t("default")],2)},kt=[],It=n("002d"),xt=n("8a61"),Ot={name:"TutorialsNavigationLink",mixins:[xt["a"]],inject:{store:{default:()=>({state:{}})}},data(){return{state:this.store.state}},computed:{active:({state:{activeTutorialLink:t},text:e})=>e===t,fragment:({text:t,$route:e})=>({hash:Object(It["a"])(t),query:e.query}),text:({$slots:{default:[{text:t}]}})=>t.trim()},methods:{async handleFocus(){const{hash:t}=this.fragment,e=document.getElementById(t);e&&(e.focus(),await this.scrollToElement("#"+t))}}},jt=Ot,Nt=(n("6962"),Object(g["a"])(jt,wt,kt,!1,null,"6bb99205",null)),Et=Nt.exports,Mt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ol",{staticClass:"tutorials-navigation-list",attrs:{role:"list"}},[t._t("default")],2)},$t=[],qt={name:"TutorialsNavigationList"},Bt=qt,Rt=(n("202a"),Object(g["a"])(Bt,Mt,$t,!1,null,"6f2800d1",null)),zt=Rt.exports,Lt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"tutorials-navigation-menu",class:{collapsed:t.collapsed}},[n("button",{staticClass:"toggle",attrs:{"aria-expanded":t.collapsed?"false":"true",type:"button"},on:{click:function(e){return e.stopPropagation(),t.onClick.apply(null,arguments)}}},[n("span",{staticClass:"text"},[t._v(t._s(t.title))]),n("InlineCloseIcon",{staticClass:"toggle-icon icon-inline"})],1),n("transition-expand",[t.collapsed?t._e():n("div",{staticClass:"tutorials-navigation-menu-content"},[n("TutorialsNavigationList",{attrs:{"aria-label":"Chapters"}},[t._t("default")],2)],1)])],1)},Dt=[],Gt=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("SVGIcon",{staticClass:"inline-close-icon",attrs:{viewBox:"0 0 14 14"}},[n("path",{attrs:{d:"M11.91 1l1.090 1.090-4.917 4.915 4.906 4.905-1.090 1.090-4.906-4.905-4.892 4.894-1.090-1.090 4.892-4.894-4.903-4.904 1.090-1.090 4.903 4.904z"}})])},Pt=[],Ft={name:"InlineCloseIcon",components:{SVGIcon:b["a"]}},Ht=Ft,Kt=Object(g["a"])(Ht,Gt,Pt,!1,null,null,null),Ut=Kt.exports,Zt={name:"TransitionExpand",functional:!0,render(t,e){const n={props:{name:"expand"},on:{afterEnter(t){t.style.height="auto"},enter(t){const{width:e}=getComputedStyle(t);t.style.width=e,t.style.position="absolute",t.style.visibility="hidden",t.style.height="auto";const{height:n}=getComputedStyle(t);t.style.width=null,t.style.position=null,t.style.visibility=null,t.style.height=0,getComputedStyle(t).height,requestAnimationFrame(()=>{t.style.height=n})},leave(t){const{height:e}=getComputedStyle(t);t.style.height=e,getComputedStyle(t).height,requestAnimationFrame(()=>{t.style.height=0})}}};return t("transition",n,e.children)}},Jt=Zt,Qt=(n("032c"),Object(g["a"])(Jt,ut,dt,!1,null,null,null)),Wt=Qt.exports,Xt={name:"TutorialsNavigationMenu",components:{InlineCloseIcon:Ut,TransitionExpand:Wt,TutorialsNavigationList:zt},props:{collapsed:{type:Boolean,default:!0},title:{type:String,required:!0}},methods:{onClick(){this.collapsed?this.$emit("select-menu",this.title):this.$emit("deselect-menu")}}},Yt=Xt,te=(n("d647"),Object(g["a"])(Yt,Lt,Dt,!1,null,"6513d652",null)),ee=te.exports;const ne={resources:"resources",volume:"volume"};var se={name:"TutorialsNavigation",components:{TutorialsNavigationLink:Et,TutorialsNavigationList:zt,TutorialsNavigationMenu:ee},constants:{SectionKind:ne},inject:{store:{default:()=>({setActiveVolume(){}})}},data(){return{state:this.store.state}},props:{sections:{type:Array,required:!0}},computed:{activeVolume:({state:t})=>t.activeVolume},methods:{sectionClasses(t){return{volume:this.isVolume(t),"volume--named":this.isNamedVolume(t),resource:this.isResources(t)}},componentForVolume:({name:t})=>t?ee:zt,isResources:({kind:t})=>t===ne.resources,isVolume:({kind:t})=>t===ne.volume,activateFirstNamedVolume(){const{isNamedVolume:t,sections:e}=this,n=e.find(t);n&&this.store.setActiveVolume(n.name)},isNamedVolume(t){return this.isVolume(t)&&t.name},onDeselectMenu(){this.store.setActiveVolume(null)},onSelectMenu(t){this.store.setActiveVolume(t)},propsForVolume({name:t}){const{activeVolume:e}=this;return t?{collapsed:t!==e,title:t}:{"aria-label":"Chapters"}}},created(){this.activateFirstNamedVolume()}},ae=se,ie=(n("095b"),Object(g["a"])(ae,At,Tt,!1,null,"0cbd8adb",null)),oe=ie.exports,re=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("section",{staticClass:"volume"},[t.name?n("VolumeName",t._b({},"VolumeName",{name:t.name,image:t.image,content:t.content},!1)):t._e(),t._l(t.chapters,(function(e,s){return n("Chapter",{key:e.name,staticClass:"tile",attrs:{content:e.content,image:e.image,name:e.name,number:s+1,topics:t.lookupTopics(e.tutorials),volumeHasName:!!t.name}})}))],2)},ce=[],le=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("section",{staticClass:"chapter",attrs:{id:t.anchor,tabindex:"-1"}},[n("div",{staticClass:"info"},[n("Asset",{attrs:{identifier:t.image,"aria-hidden":"true"}}),n("div",{staticClass:"intro"},[n(t.volumeHasName?"h3":"h2",{tag:"component",staticClass:"name",attrs:{"aria-label":t.name+" - Chapter "+t.number}},[n("span",{staticClass:"eyebrow",attrs:{"aria-hidden":"true"}},[t._v("Chapter "+t._s(t.number))]),n("span",{staticClass:"name-text",attrs:{"aria-hidden":"true"}},[t._v(t._s(t.name))])]),t.content?n("ContentNode",{attrs:{content:t.content}}):t._e()],1)],1),n("TopicList",{attrs:{topics:t.topics}})],1)},ue=[],de=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ol",{staticClass:"topic-list"},t._l(t.topics,(function(e){return n("li",{key:e.url,staticClass:"topic",class:t.kindClassFor(e)},[n("div",{staticClass:"topic-icon"},[n(t.iconComponent(e),{tag:"component"})],1),n("router-link",{staticClass:"container",attrs:{to:t.buildUrl(e.url,t.$route.query),"aria-label":t.ariaLabelFor(e)}},[n("div",{staticClass:"link"},[t._v(t._s(e.title))]),e.estimatedTime?n("div",{staticClass:"time"},[n("TimerIcon"),n("span",{staticClass:"time-label"},[t._v(t._s(e.estimatedTime))])],1):t._e()])],1)})),0)},pe=[],me=n("a9f1"),he=n("8d2d"),ve=n("d26a");const fe={article:"article",tutorial:"project"},ye={article:"article",tutorial:"tutorial"},be={[fe.article]:"Article",[fe.tutorial]:"Tutorial"};var Ce={name:"ChapterTopicList",components:{TimerIcon:S},constants:{TopicKind:fe,TopicKindClass:ye,TopicKindIconLabel:be},props:{topics:{type:Array,required:!0}},methods:{buildUrl:ve["b"],iconComponent:({kind:t})=>({[fe.article]:me["a"],[fe.tutorial]:he["a"]}[t]),kindClassFor:({kind:t})=>({[fe.article]:ye.article,[fe.tutorial]:ye.tutorial}[t]),formatTime:t=>t.replace("min"," minutes").replace("hrs"," hours"),ariaLabelFor({title:t,estimatedTime:e,kind:n}){const s=[t,be[n]];return e&&s.push(this.formatTime(e)+" Estimated Time"),s.join(" - ")}}},_e=Ce,ge=(n("be3b"),Object(g["a"])(_e,de,pe,!1,null,"9a8371c6",null)),Ve=ge.exports,Se={name:"Chapter",mixins:[M],inject:{store:{default:()=>({setActiveSidebarLink(){},setActiveVolume(){}})}},components:{Asset:m["a"],ContentNode:v["a"],TopicList:Ve},props:{content:{type:Array,required:!1},image:{type:String,required:!0},name:{type:String,required:!0},number:{type:Number,required:!0},topics:{type:Array,required:!0},volumeHasName:{type:Boolean,default:!1}},computed:{anchor:({name:t})=>Object(It["a"])(t),intersectionRootMargin:()=>E.topOneThird},methods:{onIntersectViewport(){this.store.setActiveSidebarLink(this.name),this.volumeHasName||this.store.setActiveVolume(null)}}},Ae=Se,Te=(n("f31c"),Object(g["a"])(Ae,le,ue,!1,null,"1d13969f",null)),we=Te.exports,ke={name:"Volume",mixins:[M],components:{VolumeName:L,Chapter:we},computed:{intersectionRootMargin:()=>E.topOneThird},inject:{references:{default:()=>({})},store:{default:()=>({setActiveVolume(){}})}},props:{chapters:{type:Array,required:!0},content:{type:Array,required:!1},image:{type:String,required:!1},name:{type:String,required:!1}},methods:{lookupTopics(t){return t.reduce((t,e)=>t.concat(this.references[e]||[]),[])},onIntersectViewport(){this.name&&this.store.setActiveVolume(this.name)}}},Ie=ke,xe=(n("ee29"),Object(g["a"])(Ie,re,ce,!1,null,"2129f58c",null)),Oe=xe.exports;const je={resources:"resources",volume:"volume"};var Ne={name:"LearningPath",components:{Resources:St,TutorialsNavigation:oe,Volume:Oe},constants:{SectionKind:je},inject:{isTargetIDE:{default:!1}},props:{sections:{type:Array,required:!0,validator:t=>t.every(t=>Object.prototype.hasOwnProperty.call(je,t.kind))}},computed:{classes:({isTargetIDE:t})=>({ide:t}),partitionedSections:({sections:t})=>t.reduce(([t,e],n)=>n.kind===je.volume?[t.concat(n),e]:[t,e.concat(n)],[[],[]]),volumes:({partitionedSections:t})=>t[0],otherSections:({partitionedSections:t})=>t[1]},methods:{componentFor:({kind:t})=>({[je.resources]:St,[je.volume]:Oe}[t]),propsFor:({chapters:t,content:e,image:n,kind:s,name:a,tiles:i})=>({[je.resources]:{content:e,tiles:i},[je.volume]:{chapters:t,content:e,image:n,name:a}}[s])}},Ee=Ne,Me=(n("e929"),Object(g["a"])(Ee,I,x,!1,null,"48bfa85c",null)),$e=Me.exports,qe=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("NavBase",[n("NavTitleContainer",{attrs:{to:t.buildUrl(t.$route.path,t.$route.query)}},[n("template",{slot:"default"},[t._t("default")],2),n("template",{slot:"subhead"},[t._v("Tutorials")])],2),n("template",{slot:"menu-items"},[n("li",[n("TutorialsNavigation",{attrs:{sections:t.sections}})],1)])],2)},Be=[],Re=n("cbcf"),ze=n("653a");const Le={resources:"resources",volume:"volume"};var De={name:"Nav",constants:{SectionKind:Le},components:{NavTitleContainer:ze["a"],TutorialsNavigation:oe,NavBase:Re["a"]},props:{sections:{type:Array,require:!0}},methods:{buildUrl:ve["b"]}},Ge=De,Pe=(n("a8f9"),Object(g["a"])(Ge,qe,Be,!1,null,"07700f98",null)),Fe=Pe.exports;const He={hero:"hero",resources:"resources",volume:"volume"};var Ke={name:"TutorialsOverview",components:{Hero:k,LearningPath:$e,Nav:Fe},mixins:[u["a"]],constants:{SectionKind:He},inject:{isTargetIDE:{default:!1}},props:{metadata:{type:Object,default:()=>({})},references:{type:Object,default:()=>({})},sections:{type:Array,default:()=>[],validator:t=>t.every(t=>Object.prototype.hasOwnProperty.call(He,t.kind))}},computed:{pageTitle:({title:t})=>[t,"Tutorials"].join(" "),partitionedSections:({sections:t})=>t.reduce(([t,e],n)=>n.kind===He.hero?[t.concat(n),e]:[t,e.concat(n)],[[],[]]),heroSections:({partitionedSections:t})=>t[0],otherSections:({partitionedSections:t})=>t[1],heroSection:({heroSections:t})=>t[0],store:()=>l,title:({metadata:{category:t=""}})=>t},provide(){return{references:this.references,store:this.store}},created(){this.store.reset()}},Ue=Ke,Ze=(n("c8fd"),Object(g["a"])(Ue,r,c,!1,null,"0c0b1eea",null)),Je=Ze.exports,Qe=n("146e"),We={name:"TutorialsOverview",components:{Overview:Je},mixins:[o["a"],Qe["a"]],data(){return{topicData:null}},computed:{overviewProps:({topicData:{metadata:t,references:e,sections:n}})=>({metadata:t,references:e,sections:n}),topicKey:({$route:t,topicData:e})=>[t.path,e.identifier.interfaceLanguage].join()},beforeRouteEnter(t,e,n){Object(i["b"])(t,e,n).then(t=>n(e=>{e.topicData=t})).catch(n)},beforeRouteUpdate(t,e,n){Object(i["c"])(t,e)?Object(i["b"])(t,e,n).then(t=>{this.topicData=t,n()}).catch(n):n()},watch:{topicData(){this.$nextTick(()=>{this.newContentMounted()})}}},Xe=We,Ye=Object(g["a"])(Xe,s,a,!1,null,null,null);e["default"]=Ye.exports},f084:function(t,e,n){},f0ca:function(t,e,n){"use strict";n("8f86")},f31c:function(t,e,n){"use strict";n("9f56")},f974:function(t,e,n){"use strict";n("dcb9")},fb27:function(t,e,n){},fb73:function(t,e,n){}}]); \ No newline at end of file diff --git a/Sources/Mockingbird.docc/Renderer/theme-settings.json b/Sources/Mockingbird.docc/Renderer/theme-settings.json deleted file mode 100644 index c26c16f7..00000000 --- a/Sources/Mockingbird.docc/Renderer/theme-settings.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "meta": {}, - "theme": { - "colors": { - "text": "", - "text-background": "", - "grid": "", - "article-background": "", - "generic-modal-background": "", - "secondary-label": "", - "header-text": "", - "not-found": { - "input-border": "" - }, - "runtime-preview": { - "text": "" - }, - "tabnav-item": { - "border-color": "" - }, - "svg-icon": { - "fill-light": "", - "fill-dark": "" - }, - "loading-placeholder": { - "background": "" - }, - "button": { - "text": "", - "light": { - "background": "", - "backgroundHover": "", - "backgroundActive": "" - }, - "dark": { - "background": "", - "backgroundHover": "", - "backgroundActive": "" - } - }, - "link": null - }, - "style": { - "button": { - "borderRadius": null - } - }, - "typography": { - "html-font": "" - } - }, - "features": { - "docs": { - "summary": { - "hide": false - } - } - } -} From 17701486da6e77a253ce8ef377a5663f9d0e4478 Mon Sep 17 00:00:00 2001 From: Andrew Chang Date: Fri, 7 Jan 2022 01:48:53 -1000 Subject: [PATCH 18/20] Add patches for Swift-DocC-Renderer --- Sources/Documentation/Patches/README.md | 23 + .../swift-docc-render/0001-Styles.patch | 2592 +++++++++++++++++ .../swift-docc-render/0002-Routing.patch | 60 + 3 files changed, 2675 insertions(+) create mode 100644 Sources/Documentation/Patches/README.md create mode 100644 Sources/Documentation/Patches/swift-docc-render/0001-Styles.patch create mode 100644 Sources/Documentation/Patches/swift-docc-render/0002-Routing.patch diff --git a/Sources/Documentation/Patches/README.md b/Sources/Documentation/Patches/README.md new file mode 100644 index 00000000..39aa5e14 --- /dev/null +++ b/Sources/Documentation/Patches/README.md @@ -0,0 +1,23 @@ +# Patches + +These patches are used by release automation to apply Mockingbird-specific changes to the Swift-DocC and Swift-DocC-Render projects. + +## Creating Patches + +A few guidelines: + +- Keep patches small and focused +- Commit short titles and include a list of what changed in the summary + +```console +$ git checkout +$ git format-patch main --output-directory /path/to/patches +``` + +## Applying Patches + +Apply the patches from the corresponding project repo. See the GitHub workflows for more examples. + +```console +$ git apply /path/to/patches/*.patch +``` diff --git a/Sources/Documentation/Patches/swift-docc-render/0001-Styles.patch b/Sources/Documentation/Patches/swift-docc-render/0001-Styles.patch new file mode 100644 index 00000000..73f06be4 --- /dev/null +++ b/Sources/Documentation/Patches/swift-docc-render/0001-Styles.patch @@ -0,0 +1,2592 @@ +From dad3f006133f68d032e2cabc23be13d036e1d523 Mon Sep 17 00:00:00 2001 +From: Andrew Chang +Date: Fri, 7 Jan 2022 01:13:42 -1000 +Subject: [PATCH 1/2] Styles + +- Add Mockingbird favicon +- Improve Swift syntax highlighting (SR-15681) +--- + app/index.html | 1 - + app/public/favicon.ico | Bin 15406 -> 329400 bytes + src/styles/core/_syntax.scss | 1 + + src/utils/custom-highlight-lang/swift.js | 7 ++++++- + 4 files changed, 7 insertions(+), 2 deletions(-) + +diff --git a/app/index.html b/app/index.html +index aa93ce0..420fa09 100644 +--- a/app/index.html ++++ b/app/index.html +@@ -15,7 +15,6 @@ + + + +- + <%= process.env.VUE_APP_TITLE %> + + +diff --git a/app/public/favicon.ico b/app/public/favicon.ico +index 5231da6dc99b41b8c9b720113cc4991529eb215e..58e0ae02b241c3454e3e8ae2ad6caeb396b372a8 100644 +GIT binary patch +literal 329400 +zcmdqK1$-7q*FHRVLfqZm-Q68YNC*;KgG>ft_|xU}6#FAI)Q|ct9=Yift5yJ(c^BFa|k3wq!@VWM_wxg1gz`I0uVS +zjs0C`&2zV%R_JUwxx~q0QmKp8l-r*6dCUA+f+52F2qR;oNbJ}@>tjJS8rg$7*QP1OylBxD+Z$0&a+pG;IE~@SE +z^Dp(hPElsynHxjA_S8ytKbD{BbK+Ekz%%CE(+cahi1_1fhR?->OutJ^ +zSNj{LrP0$#O{L4ERIf8fng$k9v*1E%8+|Lki51Bj;+O`$7egBbT)C4KbhT-p`cH>v +zM?b#UGU$P6y3cPc*mjGWq2}<3+NuM7Y#sXGQiq5lY9H~8vZJ3KOZNCdze&J#hW&bN +z!XBM&8}@kWphguldL)&f=oDS9o#cLuMLF*E$8{|9w_dxidu+wMZn5QrlsZH_zleJ5 +z6yvmCxqCcU?HX5J04(p*jz(rTqVp}&$v7{L6d>=IMAsk6qg@Vc&Q7J19a4$1(}qr+mrt?4Bv?^`wK9m3MIg=NK&f`DF&f~g~qdD^(!|O+n$-(+w_nP2?elqC-+caO)I7c-bQ;$V +z&EwKN?6R($xveVJvswOXhSh>MW#)^Dj~lL~Z?(5nj91@Yy2W^R$tClZWrv+s^GANG +z`E37X+%RY*&K)AJevT9maHepO95r^7d}pz>e39XH{+sT0`7O<@rMI+pzqw%tO?3}&Pp$pjL+OA#UUsnDN#Q^_W0&4N +zw?Kul0!6ehaey82L8D=+ibUX@0`R*YAgesS5a$)5-4g8#nmXnSi1tTX(B^$^=^Rze +z`XrFLh3ol=dzZ5YZdZ)9d?nf49<9yaK@+3>~-H{UKv9r*@csjQ+ +z7*BQv(|)!yoY~pdV0tLvY$srt7h-QXvx9@-tc^~_`OiG9zN28*C8xsNm!p+u%-wv! +zJ0)1_EoE&R>}6?DJ0cPT)?N&?Uq@aRD{i=%E_m!=w&=2##qt5ZR;%3uZ8j<+Wr?mw +znXBo1V1cr`*`hd4v!(letXA-F*R?mJJvY{An6#C7nXP_XMnBd#?f}b--fy2CvFBu% +z;}-5`wc;$=+M~#KGV;8S_LG8aHa$Qav@_Ihdt0=j`mwINnTz2n=4Z85z&OBquFT`$}9opkrmbw#8LWjvw +zPJ2(G{gFpI?I*M)<;h-$_tx?L!7nTJC+2UwpP@V!X1_xZ?e_XumwlAtb7)g3ZTx1a7OxE>8d{tVaA&`2|91=`EIMp`45#~ykT^a_TL4EzeaGroilG~5h>Utk9uJ8YIz4V};84>Q8dY7g)3i^#wz0S@~ +za6O_>*YhOPQTvu@t9+}gtI=fSurB=FjsM*e>!G!D4RS_Jx%)|a$&4O-`K=a^R)IRpl8*L)**tZI+JRavWAfR!;wWnD@*Df~= +zzG2(H;bZ^qbsjxx6>|S_%aD6!fRwkT?nGv1kf)=i(r=1P*8Y*7)#^ETpS)}r{)8li +zJ)w>3uBp=Jx28ciS9OVgLwLrk(Iw_hX`1(${z?j6^q?Qh#<|%MFKTs) +ze6_h#UEo(mOP_>Ixp)M&-Zpq;3|N0y^`II=|np0&iArd_6GOT-mWoa`@6@= +z%K*IBD$z5JUdB2fT83w!-+*LN$nd+saJ~Yt8X%z4ppKN#s~Np+pGwEu*C#E2HT1j8 +zP{(0u-e)i3y-EJo>k6_HOGb3AL-#t@CaOZ0I&?S8@%vRc=2`R5J0p_&kc-bm(&~^# +zyMPM3Bb$EHgIv0FqFc?H(w|M6kz<>5&U(gjqwI+1hs1Rh{Rli0*V5}g%x&J3$^fcD +zvnKMBF9I-+@}RYDg@* +z9(Cy&Ur~W~JBfF0n)j(I^;*4JncA7C3Ta)4(mKj#)eqm-wr$)W%iGo~9TPKj1uX&toragOz{=%80Z>Sh$GFs +z#<|{BPC8rVq_yrPsejK&Z`TWMvfeQ}sv0AB#x?;TU)j3O4pikJYeWy@GDjw@hCSV5d3D`YBCJ|)Pngypc33X=L^wm3c(sP2co-+{w# +zA6qbv5Mv5`9n}G`X#X`feTVzia)Jr^V+})mX3h=r&N~s{IsLw$`?O*|x2bQCKJs^; +zcE-iv6#`OfYW;Xm)B +zzuT;ByUh#-#@v{$ +z%COIt`TmdMUEDnA&*ni6t5;j-k3^YcDlm>E^yA1zf7%=1nvMR{qrf&`D{u(=E(5Q` +zF%HIgakDtrkh_^KJnCt_ +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 +z$;@;H$sji_aCT!(6LvLF+IiWM+Uo5^|`RY +zO6zTs&P?c-_N!z&PJ!(hcCNF?$42B;wU}y+sTJm%Nesa~f$r1|~KFsEOY^*gC36EbSTp1t+0 +zEL7kB1f>U@+!AO1FEwF1u3Es~W3^pRTlHvo@j}zcU#XtwX_R|fjA^WaC~Tz_%y +zep!$78wC&zoh`A}5^S}$`mkRQhaLSg+So+c^==5R +z#77ZugR&EEQM;I%Co;VY4TL@PV~eouH}bzC_#>Sm6L08ug_;Cjf&PCSZs7BWCh7^G`Z00;XsPzo$GB`9WPb&~@YQxP<^bBY3417S6Z()o +zg?8bOs9VZo-ZuPE2OJ9<{*#ZEg}D&HpVEXZhg(862_bjOP(SHnKBIHO6V@&HNxh*h +zo|U$Xcr4j6G0%LUP3R+a;G=n>?I(0_=z&Nz4A +z{o+_>$ROkZ+5?i!{cXA!^E|RC-8dW8L_Q?9#a}!#*c`@S?nRm_ct1licZBz=Cf@HG +zpo5sZxr*@!iT(uS_!b=3L +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 +zP6zb`&Yjq{H +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 +zVYiqv2c_oe7{Gh|*w>nknRsy{fg>K-j +z;~hX|BRkOL;jIy~3H<3Q|B|lB)EVond-A92Al3Uc#ze=(n8OF-swnsX&w{PxwXny* +zJ|x-0Q3pR_>|_HUq7#@u7rr-_k-ik`Uk`eLx#w7G{mDzk^A%{b=_dT2!}r15Pw9U2b5gm&=DX%8N~ +zg!(iCJZJ{rfcLYm-WGi*^fUC(pIm`@;20-L_6^}5F6`roJ0R-d7TQHO#3i2&G=eM} +zP_~fctAX>5N4XtzgT3u{VRIICF5wr1zU*E291g~JLM%HrAz969CFBO00~OUeRqA#J +zdb&Pywp-t-12{{i%fh#W?iKD^Ld{{DFnf +z3a$-oXZxkNtFTj-!fxNBO9OI*e^L_g5TL(<_8GJo^GJcPw>}bnVZvsH@u)P0zQ}-<*LsSN`lU*GKGi2HA&x5Oc5ror9jnLU;Hyu|Dv#=-7sGMu5BA8gbje +zxvoSLIuD-&vzq==Rr-r}qVS=_J2?~aFN;JUON?hkY*8`h#J2|||0!YjMB9gFVf|_i +z)>;w1P2U1l{#aj~wr)b*9SvtU#yk(={O%<9DpCWCQ86bky{pA_6MiX(CHEBik7h@> +zIpRDjLiW|dui_mvrd^Oh_+ClsG)MeIpz)AlRMxgV{Fv|_fUl6`Zv`KjDB&mb{v!OY +z087NgJb~{3AQtFT`25@#erl+LD^eYZc#gvVO5CfcgOky|KbXRIYcujAq+gHbR0NqK +z0vr~PPw?G>{Pw{%g?k_4XAx(yOMJQD%ZoUGufTyGps|gsCijy3drVQ*IiX8alv#~t +zG)2UWYz7}Qu{3IhSc_TY*%#ld=>#8}hOOXNA%OP*Fi;!||ETIJ5bfp+_E@}IhM*3( +z=&OjhrlOxIe1^n$OZeA|IJd&aCv1_3AF(4f^NC$%J39Z?53I@`>}%3r;*)P!g*dO= +z*{%5x)UMu1#LfMkT87=0%FV6|UU_GF9+E?Y!QWPaPlV)u2H6vVmy#}3I<=y5Y_||P +z<2OmC2JPS@l0jOX2GF5z;8T(Te+X>)?rWPm1xTu;+rHV2B-9*IQV_N2Iz~xyC@C!B2WS!u?Fy2V@%tF`5Et4jj=s$mEnEG +z8)H|$F0rK!_`Z|IK`;oVW1tk|6)=YmXRGu`$9E*^!#4)oyAZQfO~ewdxzvT^_d3wipEYPzS;<>n&y{_asG;Kki>quiEfKJtW#myj!GrvcjJj@z5kcY~hC~;tUJ> +zM$@1hc*k9(Mgix##rLN)#PBQw=!-yG)@TIe7(f@}zacB(OY$`fVwN)aVlnvEwTJ9w +zLVoB*4Uu1J590W(Cw^lhE@jOH`mvxkq}hBp?ddv^2<=Br{0W~HKjGV!it})881Atr +zqRkO)Io_j$ewO4@E&ADFtReh3+lD=&*5P-lPovw^Ebwwi_|`Rq?^!t@{765IZ{b4& +z|E?zE;VUlHH)YxzyROxI3jdFN_C-oWBC1H`v&xM5xTy=i1X?ou4!_A +zYS(o-mDNZ2;(bz$el!mFdvT!Vm_=G=VO+DaG%o1^p;E&e@a+g)f-Y5t6 +zJ@k+7LvxZ5P657)HBYNvhd&?->Pe=k_Y-ZW;rie@z)w&DuGcf5p4)U%K)OcUzv8|U +z?TdJq!BSWs2dM@tMTq4AFrcm5N@K2P(fAIi(03V?a +zq~{mU0--(FhW^16^fO9O2U5HPF|HZj1o4L(lwHpbf1MDEXAAy{=J1WY0DnA^03Sl% +z8SrVF&R=1Fk=W;kePQqyYq%1}Oy#-mh<%Gb?dL>h!r#?@j9dnpdIH5lRv~i|+K(1< +zpnEP|hu^68r~E5xW)9y>7A$-lAoMNk)No80<@rSuSMzea89WR7YKr&4x`4Ijn$$-Er8^qm(* +zOz8GCiy!i|=+70yCiBrv7jtM5+EDE9X@*r>v*Z%cl;ad`$g=x#&e$pAHmqQ +zyvQt{hhg6*MHYUkVTjI(XDJ!Jsn^9d5poJNgwI|&@`A7GR>Y^)13sD0$A0j{Gv_p# +z8%59NI~wD91fUKOH=FPcB(g!?PBSaWCFjmY?_rP4@$4N!+akR$MStUM9jrsYOuOdT +zQTQRkw=f0iYxv($z&iNhZsLC$FXWNfcM>46KV=*Ilh^Y<;ale-&iUAaXNjSoE5r3j +zgD>qhFUTe!WK2OlHih3GVtrrqn#g?t;lKN_Y(BY9_%P#HWKNT~XWRmQHhnqrhyN*j +zI)!f{Sx<>2fn!! +z10U0ts8|14{Gsa<-az=rin{uD7Du!_9`HRz8XLEiU#$z-Y;lbY)>M#L?r-EU;W4?) +zB&ps-`yhPM;m==z{>1?H@WVcq!8*usL@xYjC+M!n^@pBL+xT|2f@{L3aWg;y2?wCd +zcK&Ov)!eA2uOr5G&|A*%T>?9_3;7u9z83eRfFlsG2)b{E?%(m}khzOT9#;@`^*>o` +zXUSRP{dj)o@H&Xsem!t2k@oVZWS(=5?DOS>=bBIkdE>srdm8Uc`Kg$`WoFU+%061G +z@DBz;5exjG%U(_vyZA~rUM|D-RDcAc3*Z~Rho4~^xFNQg9oi1j4glJ?|5~HWGXNK5 +zOThag68C2_+)uuX_;b72ybt`{l|+606N@GM;R((~h|!*CzJV^7&AUvFd3VWbA(8Mq +z7SDu;3*bGWf*b~4x?wT%aWAW-WCQhU-TZgz1fgLWJN=B++WIElV&?C^#jbxN_gqILo>|du*`u%EIN=GIjygvc +ziz_Oy?;?EjrvIP!ZV%Bg}m)}8S@*4u&i1+Kf@GX978BHjq~p@_QrcU1iHIr}je +za;QvGYrzvIht+%z{E}Y@A7LZZfw&LM#$F_&IrqtQCE^00{S|=E_AB65U^(ilKac^0 +z=&$2`sD}fxePso@b8dL)t*2OQ{|>)HvO7*>f4I0@d&+MwOqW;i>b#JjF<^o6g5jTB +zZx8PGO}qlX?>1S=16!iK5^)m#(~I_U_+ZcFDjHjOKeZjaO!!9|FNM$dgfnEYvXl_R +z;4i=jT=;@lV=XVm??u?YtFxJkYHfU6qLX*&F1|PXL}NQI7y29F{&)VNl+>r4CBwJ* +zAx;9BqFwhu`w$1cL*UbFDc+H*_)yfpp&{-q5o6)MwFtj)#Lkaa+{a(4?IhA)e6QSX +z(I4Ce>n3P}brI8{CiGB8de~PJx*Lh`okG%_@f+HGx%7Pk;Y+S|1ntRjIjPP$M|vw? +zlIdn5SKQ}8(Ax*^42v!N8Qveub>Z@0w4N*Aee&N@`>%2iq0B=(1So>r +zWU=}I-UUQfyEsQ)_Yi+#ndT;*fH(-M+QKhgIDP(aES37ZLjSw??!;@fT?uOEIjgmW +z+iC6KolST1?Y8^)9mfN_!XDSu5^cQ+>O>#yyAJMMEkG0XQwh10O8fA;!a+PQKjJ;R +z@lUS4=-LzYopeNXJ0GIHjr+p3tE_={BBTF>YhJUSEA=;q{-Vvg23P@%iDz&hu$8MR +z?BpK!W@RgU%W@`s_7A{+|BC5B{s?$&a*&r9qizfV{r$XLZ$B^A*~g!1?&a5N?dPYJ +z3-}w210|0YmS0a-+e2DPhln9gK}`w%ch@WRSBB2pfdhb=r2qR;iMR<{xs2`N8f-WG +z)Aw*+g}po;?M4GUH%;H7A>xxHV}GE+9&W3!j~khFX66UBdZ9+h&6@27MF{%QS1er~{Az(&gds|EWn +z9ayQe5o8OH@1Q(5r_}eNUd`WB07jC0&yQ=5M}{K=f;#EHi9A* +z*p#T`BKty{A}KA>DH6dKa_}u1n?gi>C{e*Lm8m$>rUEe%kdu_6j&-<#4w->?$D56`haWT19dXfIf5a^d +zgPi*U<_0-;O!Y=wGu9q{8hosMx@tof>!=LQ!FesUl?R97TyvbOtf!vC^pOAm9~W@0 +zMEqk7!~?cgROqCuq}VwJ{6q`jv+C-p4afa4km;!oSJzP<=8kVP<6BF^r1n1rYMYDA#G4TTvrFsO +zUQEpzuA=6RR#U@N_<+YQpvb^E54<(INR%JANT$)LlxM$fIuJLJ@~Vj<_RFE%ZkpH`K_TfN~RzG;{S#G>0=Ijmn1c +z9YOyOZGd;nfC!)?Si800ud*I~N{W9q3OAc6 +zx8lRUt7zI_6}8S99SI$j)W +zt~-Y8O(&3#^K=pKgwj)%NoB-^eTOop7FpKhZy(T+G)QONjzaS>ce*2%x%Kjo;Q)RmcPO*A&q7~28g9y=7`HRo01v{lru`38_6R#2b^ +zzB7gI$s-O7nQ9^K22yh!0rBmu{~4q>9&hs%->G-8no5xY^KdPeQ~hLo7u|bK1to!jq|e9n;`ri|Ib{84q=bQH{R=+p +zXtzfa-mmyR<3O~>Jy7psCH}hLu>XBbE5|vn5!dD!@T3M_V7&yt$^U+y_#UJFGzlKo +zvk4PY)F62c1-i}?`E9k +zgdvRwGJsCNNSw0*IEFm#{6F%}13Zi3Yx|p!kPreXB-8)_0wJ^n2t5G;gx-7ay@P-# +zDow#cZ=y(3Q9wZH9chXpSP)S_rHFz`?f#LW;2xZ-u +z56I%@HQ$bT%1^C#fcHY9bsl^uc+GW$x6+d|N|ROxFqgECfLl>{Mdz95zKGX6@z1?L +zeLzX8`fH>@@x}Lwc+Fqp=e?j%VXyg?kBX-j<{vttpyxy*zsF?nqTb`@)h~JAA#2;E +zQKcPH(&ugDJC8nwwjB=zJg0Eq9f@8>n?<~*|HYc04RB=k!S{wga4wp2CUsnxE;Uep +z9!0$usK2V*pdoq92dCj9Qh!eHaN^%7KGf$Eag<3a6k95->oGS!c!lYod*QyK-U}=B +zZE-kRyqW1zfg}=vi_?HJ)bRIy$2TC)TPv%Sc_pGz@Mh*_AHlcBo){li>Q_wLe~~y) +z9##6?91}15=9n;T^S88T=a?+>-bYTMU*IE1hrY)^-gxm|a>gk*fZS +ztTha}K7ch`mftLVD6w8jZApE-*=#D-K9cZ{*y1?kQ3TklkF<>5RBphIviY#~WCZvg +z|6P%f{d~pt`9(PQ5-F8$i8QFXMw-|9Sb_>JI~R~^N!v2{m)ol>{>iO4KEq1pRzGOV +ziUk#TcSq-DTVzQ0JyPE9P1a;hW)0152`l!g^5ft;YlYPgv|cv*Qa^LC?JUOcTmd)DM-cv&?A<@+j~_kE*Op7(vr7Fe;hTZ?TnxZ9^vspyB4aVhrA#KA&v +z0kcMmb)(9$1i!BG`M!4sJK2rjxQDTQ+(rAki?xsB_<8EO6f`ZBZ+TAkb|6FR$J#rC +zyp*@S9%bDJB0-EFy7=MR<=0Bf+W3hp{J{m}(IPBhyZUa+&@yV`L2&;D=KC-wJ{nhb +zX}aAU-gCcHF18vOe*lN^hZ2x`I_-3ZC42m5SzKfA4WFfKwOOy1oBDkezb-?-apF@3aX`K=U^$lmzTFY9S +zCAiSap96h94AW~_Lzp3D(?nV8W|Ygn+NEs%RkPaF-5xQz-)9n9VjVvE)DPZj3qd}* +zE_4FxSU<4*#OYd5eE3~Mj$LXN-K{oKh`Mc$_U-qiy>e1V!Q{NZ!7l1Ifpv#rAP2T! +zml5^VG(i^f7y$l=u3Ox_&G%n}N*kql^)1wQ^-*L~igPkV{^}F2QsGbR@n1N&X|=6) +zo*VQ9T-O^}f4GLcIET%ZDO-ZQ6gH!_Q{JiiOsp!&Uz1awpLBizx;E +z5m#ReF7VMo(tnY>%K@i~g+5M||I4I=MIP!0F%v!zo00yh_;rl^yJ^T){35Cj)_lVH +z>74YrhP&%?NhO`)c>E6yPT +zUO(5qAK44Cr(L{tk}*&?+~5X0=YIGU*uWSmQpZWDgvoWk<0o-BWvmCXYFY7_nBqDn +zc0q-L>x|O*K2(nKF!J~wB`^z9Z3vyY8J8*URnwwm8oM`YiEKK~ly7-avpHU8vz^d#?5>JP3e +z_`&=nAM00_aQ%ZgX~a(NY2nA^xW>Bhl_0EY;f812HV;BR!m5%tDoZ6%5fymK)zLM(xTPz>J +ziTJ;KK)qi<1}^H$l>4X?O(TEo60{7;QOF1Wj&Kfz3~YEr)1e3(yGQD{0DD2jL*-)D!a67 +zHSoWJk4~eC@76j^EARPp{IGAOafLm|XshL;m^#MZn{awACQo;cTiMdz@QnU;exBoZ +zDB$VQ?Ko*&RczN +zh8EuG8CHDPrZK(0mfp?3u-2$2^m)2d>%51&3b2pKkG|gEy#qeG=T*kX`$>HV6eWA> +zohbe#@8MHwDSl-9+%k_*-=n3#hxpmJ7wzjaC3}2 +z`1N#+?b|b^fGG^9EJOUZJ5a|LzypxL|7)#)UD7V>pwuq0>(AT&&}<)HiB(xk$EX<6-{%4RKkr#_#iI4||5 +zTElN&-uh(@9C~RGJ_*9V`#QxBN`o?=OSk$* +zr9;ibdhJ8fn}_dIcaUfqQxd5@X+a=z_%WU=EZNi!*eC639Fhis2X5iRwVD7|_%$fRmb*XYHGd_?Sf-U%my$d8IXi%E5TElOp +zYxvjriumFo*G|FTth4%ZP0OaX$u|!5iQ5mE+)E&r;s>Nj`Ol?I2>vMo4sJsKZXnrN +zQcnB@AIjA@=!?%L4*AI{KR$~e`wWiu9bDq`OW0FQwW)f^uq(bp8q61QK=!?``%AH9 +zuX81kz2#dMA9xS&2e%hriyaN4t82s3M?H{RH~a#9r@n!b4ScCIDsx2oH9Ia{>wKra +zRc_+Lrx)Ld4AM-tJQ6#R_Jn_`&pfF6Mvy=@_#~G0)sNus`HNe10}eG&86{_{hufU%;Ge}z~2kLn!gUm|Lzs#P){zn2A=G1WoX-< +zq(kU2^*?+X|H#3OOMh!LDgAY_%N_qjt+UDr8PsEcCBDyTl~;=jN2F~vZF`4TU^C7j +zeliJut1smG0Y_XK2OeGX(ty*_x5;tqdy4wMiVf`OEC>Qd!;%U8E+~#4X#f%Z~Q_8=wPx6n|^rb0#0YcaGx&82{19 +zM-%+@w6AttMzlXIErY+uztpi0@a5zRVwEc8L9M&WmHoT1Wusx@@PmC+I#$QuchJ$_ +z@!wotW!tE9(z0q2coduX)@Ts$b%icr$1hG9aYkBI_%6y#W5^HcH*7!fd{Ud!ISfro{ovNR +z!jHSB3_CBq>Yh?t5#nQj-Kg!YBtDDUPkL-RKNr|@zYWRiJa}!E%mdeEGWr%p?rz{i +zaE*Zvp=KQjXSTPfNcBXJlwg^`&za?I&qf{>0VhfhTIHjFZ~bcX-oMKLz&+|M}9ZBQB^<@hBhTaqR0p=XJ#Y +zmC-VVzSEP+SK}S*`r=o60KV1xxjNYO%ZALIz(nu}Tw)wlnz@ZW%mJ1j(u2a`naD +zBJlKp(H+l6zS!#mKE_U4eh1a}U@V* +z?+?rGcm>PfxaAWsCBNGRpOazDf0qFbE=arb=f30Gd>~C#QT_n>F?(b(CzhOIWY)IA +z&(f*tFZz2ka?YxFYq^r_OZ>wU9D{RU8{pn(px}MjS9a>?^?ghs5X~0jhpy@uggA7Wp9HlR34xO +zxEn`iw9|ITuuHWw(yqdpGqkm0D(myEZ8+NX=Q&`cFPsMNWU}vbFA>?_(6Q&Z +z29lNa1$)%@VOr6x^4~JF(G~a~t_b11r0b^Z7t*q+Oz_bP@5RNJK#a_y<)?8`@yqaM +z>!9aGZ`8-)i|Ab8uTc|wU6Yr(tG`#}i%0-$<&_ut~lHaGr=OW}w1clAY^9vB#YO@=nSCOxWLJwbXtAX*%$-fJ5IZNP&> +zWM|2fG2EvhJBZ0gIUU*sU9sz4<;vXG2H%ut+g`^mu2?>R)emqqIPV25XLr_Hq-En< +zjNt{Z72gBGn4A8izK7=hv-SQ*c`f4U08e`Y-@=XFtZ#|{HvgAt-1iT=AwwJ7)U?in +z;vg+mvaVG*f(pp%?`WANvPa)n@`ITCdg1T7d!_5ny+g0BojLNhjBI*CdRDnk*&c&+ +zT@gL2Uhk&orghWrV$AU@&3xRil}}pNXDQz_?}K>%In3hKh~ihd4Yy9yPX>qs&%P_w +z4{>@xefjpQaZ3i*y{+k8V$EO>-gRAg2j~h?T|MMu0AFNvDz@z6g)j0uD7G9agVCe% +zEw=%+Zta^h=B^BDa2r3fx8PEVgWLSB2U1-=y^wiWItR<0`G)Wgzh%vf=KBmfc-i7L +z(f6VH4pg~K&;c)Po8^F?qZBea2a?Tg^0af6`($94mEL81ik2tO`n19B$^pZ>@l@4O +zWdl6HArN1F(Z6qUtQLsLLw&yYs&dzBNci2a=Z}3LL+jn8o_B@#*tpE^N_uW;H|F~o +z#d5x-^XU4cgZnxUROjEbPKEEnuUl(P^?R6`^JsK1R5^Ag;BVgOU;W-_fIsqkmLKMH +z-d|?TcsbsIH{-qdM%tpg@*bvUQ`rC)um!}HUF`6Ejx_@@S?Jp7K2;y&9#Q|ni3MXH +z$Fxh|yvos+}djRMU3Im)~;YhJF-i`Kd6%E4~wfbYVp1KvyD +z#3t)ZZ!K9U$2RhfU6%9nMM((7d#s&!@?u*`3>;@9t*z>tQipiVy;U`K)(%FWex{( +zLi#a3u^A3@5ho`Y#C}8zMqKBASQh{YmENYB=49ea(W@Y +zjYrf~U(@knp2z=maS(G|N&5|G*~Jb&P4 +zseOmw^A;Z~@BH%c9{giCY^`tS%>O_KIydbztFFwgwCb(v#dOUJI=IMsyucyNBp2LY +z`>>a~eHuv}!qur7H1ab2gN>ne0^t8{dF( +z4#dK={&2r_h2JZ=8$74#7sZA5fOFw8i_~us%HgDZW?Da;C!_NU!gze9JkR2PYu}^eV&-?!_Z(u5%lFoI +zPJQRi`@hHmwIWW#$ubMRo(AwC6u>{Xi|cyR0Uv^y)Q_P0NY=Kk81;i1Xa?!PGDYb_UmYY*2!|%~99=BUt>-P^G+e&^A=h~!x@D4_w +z$Afvl^fNku1Nm?39k@*gzgXX?nU5hlM~(TJ7O$PoA7&i^I#`bmKGLyimHHt+8kDaY +zxEqIW&Q_+l9CRs&gJWryVH7ra)|#Sy4{M^VHmL29c{{=f~D32+0Sf~3k} +za%=!FI!}x%zqXy=t?MA!I&_mAQ;>ge_=noSzeN0FbSAE|jMa0MyDzDYF}Xg68@yNS +zFsSCE+xqTC-$$wr_K%EGQ8&jsb6k~HOF54S1`9GR^J1EbA40V!1V_Yhw{~Y +zj{HlOg8!r7+xRDDQ+a?O@JAe(#g<0qDU +z2mc5uw7FEPev+?64>-p9!U@G`|#^U!i%&A`3Kc{#^P$R>I_Ge#Wjg+`Xk2(5F@X6;bZ*H2V!Iu +z9iU!@qG=atIq+Gz_tI-g*7Fa}E3fA!wkh|kj?Wk`_8bt-b5kvzk)m{Y +zrsE1r2XH#-d^Vjgro4_icU9+f(-(bLqrm2z@CydRD|i`5x}mp>tsedZYlau+W$pg5 +zs(u@OYZY?f!GIRuGf($t8PV#33~hW_2G@Zjy-s8Vws{^NrZvGn*-$m=7Nzf5(2fM?vt@HAF +zvQ(oneQHzsZ_>B|ssV%k&EQ?QOXWhFN>%s!w0*sRuO=|=dAn2P^DBCVTv +z!p(ljzYOwsOw8_(hXKlh-$86y3A(aCd<63C!`^^jFuvHV-zv{Wy(Dv!e)9hF(|N`j +zM_K#A^VTl`4ie`L5~KrnrO~mSG-7;pQ`;=43SC(lzV{T|4nn9izWJ+)v#=gmOTo8a&f9A7ukvmiyre^#pOs-=@MzqfPJ+%%l1_ +zQ-|Q+9lKS$=Fq*;eY;*EcZ`}w+;gKZR2ir}vws1^kri^3mgrme96Jx!X(_Is;>-Ci`ea6d!u`}U9#AXt~9pYN+xs77!K<^3Y+W`*Ix0EkVxfAty>9G!!PgU;+ +z53TXEO$XPRPr`g7IEI-!!<@h~%uoJV1~E^(Y2bHDD)a3fUdJKI$Cnm_!|T{-61=DA +zfOIDNzb%IHex`MUFVg@%$l_>xIW->&XPWX!+GMzz_U5c@?n#^4MEC$H)chIw;iZLK +zKN_1uhuBPfe1a`z12M^IzexXFm^S(o;{bstTe-fiaWg#Q7AL#DKW1FY_n?OspQ(ON +z*YDGo4&XTM!2G~owa&@Nc4zf|u%PBlG2lNNqa0|d0UUbPb&Ywi-sM%sFQeoJr~{0& +za-7s1Di${`vgrpN#+OkCo)emlwB+^xxoR7Z;nIx}TD*XAsMZ-E_H~BHj3G04&&61@ +z4tm5^;^Rj6aA~GCggqJLZE??{>$dR3-Pik&>VUq;(t&cx_T!x@_h#!o{$m~7wdOR~ +zbnrL#Q03eQes_DRChI(On78t)=TQ1?e5hI<)4 +zTm(QdAsoN`2aJpT+RJPLNw%Uk|9Q#IJUWek*S?C;@(qEf?)0>(W;H +zaPQPTzt3_!5F|T&xS>^+Mzv8=zu9EDHf9NZ5cU^JJEq;n$8q|F63X$5eFhT#L!S{< +z2g+lt#aJ_cjGpGa~%`u{eb5)=2}F*r+B#!bMV?-kxmsZF4sO99?aI@ +zK9H269M`miw^LDWlKCBclKDWgWs%s4)X@kTD_M}mTk+))N?*|ldsS{^4Rd@3I?D7U +ze&i(ccvf6^*YrVu?!#SY!#m6~vA%ms1WSp_!ZS%LxQg#_1(nwe5Sn8%CY`H#H8@ +zKAU0z(X4V +z&I5T0%-F}3vo?4p-|g4YZ_PGMeh*d7=Q7h$E)SJorI#!&Z0);(sN)aO_1Aqg?|P3n +zv9np$??~b&q91$ZQBKVU542I~1#zhOl1%Hg0C~Oh#Qyhu(5vP**p|ShZIwscrs{xk +z*KNkVV|hkz%e#-O`hKu;Yre5HBh7~BARJC<_EUSA@=U`=cl(9hf39!nZ6}>01_!Rf +z3w#*>4{m&vo(*T>d^ne9nwL4}Z0zI8n;SyE)Bh8=Y-gD_IaXWKOYNq7+#omilnvZN +z;@pdnku+wEHF!C8&%Kx9N06Vd%Fus$>g2EGM3zSR38r7wSIn;m(FU4QUwE$*<(ZGR +zy=Wb%U2q?Hz!>2b#=p6F2HeQAxAksHb)erUR0n;L{TRZ}G?YiQgBiT<${IaCDT7;RjWIUcxImwkP&+Z8q7IN#%y(ih+;7Juq^DXnTX#`C&JBH6PZw&sB{-1UYKRG<% +zwmlr>7KgZglYqC`;!W0L*ouxBKjgmc#yGhJ&j`2m8J%_@t$DW^^NfrR_ztV@Dc17t +z+FR!)JyX+WGes8IIL3=CFh>K44ZkaO*VLV4=i1HSieaMx-a@>qi0vZAjf(@e<$EB{wa=fElE +z+!l*Wv&Z}7^IF_{Aw1wxgnoec;+77Sw;3MyV-+TtCAc3uGY0rb$H=q;>m5l8bfE9k +zRR>*LS??*nS(58_4$^^9a1}C5it$`grs?9pJ*O +z3rDKYTjpxtx6RBTI@x6H`Oc^u=g#cMa__$t|NbAyn4lSb+|Z9iDsq3~xAwusRc1wJ +zKb~Wltjv-)30Yb^>!n^b3k1Dk?(K~HTcPV{Zg$OI93-W9dv+lm3Ve1cLa?=i>=7x6dBN36(4pHp=; +zT*1hn@FJhZrWf%CqmSzzerf5tgZ4@r$+Os;oBtitj`#%WClvt)y#ZXQ-%H?D?D}fB +z6gC%z&5c|yQUkl=_uuHM1;-4PS$b~zt)~QIhk)13kn*$5UwTmYdT?Zym`1)p`ySpnr9Iy8)bRe_?O9$37vP}mjI(UO;gUs#QCzQR`AZa!|cx#HM41kXd>^H#<~Z +zVE)~ceziLNfQ~b?-{E_-C7b*U?@RvS`^0bjSqYdWKVuVT^|^_$fG`%e-iJj$BhwBJ +z^RCEOzhN{@;@zzBi^Hw0XaOhm9p&X#G}=LX|Jc0e@xIvvj%Ww4F8Y}6^L&W>_luNT +zXPTbxo5P5EDwlNene-d;BMt8R0oc?U?q`qmo)#ONBju>?U}WFw1M65M$KOIe+0!z< +zN{-I_;Q|ksWjgrHGKW=OWZvxlG5x?I?r+=+bHJnR&HXvg>%U6=5eKE%tcOB9tiFl< +zQ)mYT&bHF5sNcXj_NE@Q +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 +zhk-dkvPFmtH#SLwA4Mn+Y#TX%?jz(;X~=w +zWtH^qx=MO*O~=;nOXIqWrCNo#Qqu2rDUfsW1IlrU{67P8y|TX4fie}Ne9k$tkAZvO +zrDWIXzkXu>8V?M7)PM&q*jK~%mEr6#cmO<*x520^jzcpkPgqi0?(7rcS5TgS>z&TQ~$TTUO +zcdF#~dRg*#Ou`rVM9G<5IdUh&1)Rkiug6JS3V6RPMe@BWrTwN$m9lfCZp}r~rrCSa +zy(2c!X_d5X{+`sTwopp>O%orlm+z9^Pn2t!x9h~tl(i7$cEHzfQq}rD6R&H{22_7& +zhku-BL34b<8uslMs6W*!koCiu-a^0>d8DR=gl3+Hs5)CX+H=kfBT +zl7**7)~orB^y>VP3>&ZkeXo_~4VI&$`Ql&T4e`nGij9NXb&_xmT-1{!S2XZ{tv;}m +zg{W)vdMh2$f?EW;m?9+#O_Pw|1y;V@+OLwX?N&*n+DjzJeG&P5 +zNj#J$t!W{_kZPwaxmcMEHi7+7vgVj0RB*w7pDsNOL=+W$=sREc~rq{&d*pP +z$?G7^~?ME{hF2ElAfJDk`aS8q5Czo@5NH8$V@4aV=DT7 +zSvc3)!^3QGE-3FphCuU*%1`t1&G{;NpDhi-mPpsOtE5Ytl~N~U5e~?vn|a+|`IB;e +zL>*e^bDQE-!0UCb+y52STlG{v4)pGVkG^&I#(F~|(YFtL7~d!-28eLaGG;y;71{H7 +zyyyUzcDX#+r%ppozmzIGE22gH_hk5hO){kK25A!ht_1qcM(3{y_F(~g5zhVBp!sWA +z-~q=LUYFn!^Q1Xt?%rXIv~2Lclq)`0@_W8|gLAg!b$_)JT;pH>IH0 +z8@D*V$;bWmW(7Q7cg^oH&B*Wh-|i34xpIKH;fHD$+-xWD*IWeO@cNuS5Ip2L4Ni&| +z!SfGudkl;SsW?^!_gyVLJA5paOTQ()Uel558*qrcAdsS&(by0%#(?V7HV@&VX^=d>&N-QQRWPgcc(o--T@dQSh(_67I@RqnX#_<`FF +zf8t$y!8Ow{K+bFvg28XzjJu=Z<27C?m3@ve`v@tRgRz#!bYul`qy;m$KCMV){#tgR +z^(dNqmV{MYD&5+yW5GJU;C<(r#Q%)`$KWGBR{^g#j6$BX{&RNFvEq4yHlG#Uf2{tg +z;fkG(Pwsrwdjj{&>$%_sVw@a0%4;fcVUlMm1MR_jVskohr+*i#hj+ +z-vm!m4LEWfltb^ow6zaDgP;C$nbG}He +zWgiOqN&(N8EFQ1IaCj8jiUC`Z!e^r8-+T+z3seUmlPvH4mlU+is-J5$(e?g+R_ +z-2J@g83l68{7;wxeh-cDjl>S!Pf-qU<;bWPyiuMRutWNH-7LlO+PJBdBP=$2Jf=!s +z_t89a(+_xzMLshHfAWdp5%RiF#CzU$pjb3Kr!V-c_UMiH-hsgh-3uH#yJ +z(s4oOc}ce_dGrHIz_;XkGl?=KR?b*)^MrJzSnl~!r}F#KqumAxukt>>7u+F!nV=4ES2u8#&Ci +z-6K7x+3xjG_e|@)Nt}tB9<<%qYum}F +zt(f*Sb$9|kn%+rOUGuPNSg+0rF6kXk;EN< +zud8O!TyNPIO$A?CM%6zh>H6nfWE9Ii$0(kAN#Xn+&%RqC@8tW9Sg@v?2=z)Hvbb23 +z7f5*;;VZT7k9v=c3%zg7V*K_hb}))(zd;XtbBzC{Sgr+AxGn@4x%uaLTX_yrQnYkA +zmyfT8pZA+a(VPn%C`Td6&<(7EfAw$W|FmHt`=>+YP%_^lX&SZ$pE(<)V)11{+$qxN +z;GgU5%phIL{7)rPBF{U9pXXZ!yhEkA*KaB7H!HGX%~z#q`F$2Yl5()X0U-D&w>YU( +zR`jP}Zqk59vQUmGjNc}8^YfnRQkZvX|0`Q@^iwkTVz_tT&JM?69q@SqO2t-4*A`o)ap*cJm2cV2l6jVmhr7&`H2xQ=n4k=BY#AlE=a>)U$wnZnb#Xlm}4xkjfYM$g%S*SKE@;gParas3Pn~(=cZew +zN%c?QPki?#vK-*?dpK-^)MYY`GVN*Ub^&I$el`HQZ+Q46>@-F3?CqvsxG&uJv*KP+x +zkaY>#j8ky_PmB_I7sZtG-wLR{%J?j|r+#I@3UDV7PP#zqoFq8TdDy^*(y`H2XM`tRg-tfd$>%*c!n2Um1GSr!g6oi*b=@tlJ%Y^MK+a9c +z!xz~(bqf8~(nW&G`~wlTw(x4SHvj4=p#ke2j2rrejOck#D*LHUR}07EK>Gv#T-pb`O1odj +zy?}S0oTuEl==(1B!wHO;vJj>}`M{g_x2fwxxYQ-3;5wWA+4d&a--L_$81h;KI#9mC +zoF2uORs7#7&(IPdOSfjbrB>j2j +z-VDmWI6}vMHr=nV`tFi>mtG6Vvv_c^oNr~O{UV>$xv-B#)b9Zxt<*vDiH+a_AKf9X +zV_-Jr3x^-my?mk7YRmta7=y99VBfW>yZn@4380Q^W63MF?4rWRwRX@(Y+#R6x5;@M +zJeCD$NB>y4HKU4!J~k>8v{04%_sJeD_R5s!zma<7H&gy~);(SC>xn_RNK58?gicR&g1Prd8Y5ndt68Q0PR0kzV~5@ugS{7o +z?vHcNx8D8G?ydKK`W~3?uYdXGm@zbejyGKB8w~30Lb?ONZ%;`7NqHyt*gfjF3%=?$ +z)YCPj$QJs$^%*Tz1G#9M%0b=cgNIM6V`#BW(xt&(2+Ox)0~^1myn!~|WSk9DE4)Q@ +zZ&WS3B|N0)mJ1_$9F_?qzLl^NJj)l>XS&VSGrd07$3|5A14a>>!k{?8qa-${Fgn%>cQo72dkJ +zW8M8Sef$s7BIHxyH_!Cjo`9_?%l_0UQ|$8Tcdg>N-*M$#u6{#};GU1}ZQla*`>$;d +z-K+PQ8?ui#w6fH1$>?d1sOi0#gqZDMt=tS@FNTVSOTT6Cuu?~tFXQFP}8QB9Ql?2C!bUY$c$NV7m%0$Vh7&1xRRT{^L!gd8o~ +zjxS&RZOI=Uw6FQOw5)nifB%ZUDyYuF(xIQKSq$A5--nF%RjwVd@9fw<$7KAFA0)h_ +z%4jcbgMDJ~-+P1OJ*pSkW~XI&+Qz-!V4k-<isv0BgZ*onv63IQvwBbfj*HgVL$iS2Cd0H_|lt +zkZ2s~eiTc=vZ_Rnuu<4c)6@n`7}c9=Z&Ti^0Io?u@a8S#yOac%#7+1N)X +z_0&E6y{?OLV7%9pwRM+tohEAp(EUra`)J)iC#)6Ibz_pb>miO-pHl6sJiC_2t5H63c4585dXni;@MdohXiJ_@8dACF1+C-z9>|$>iLCM2D^-CU3wTz#3VI5>hpW}!uUj`8%N!d3j^SN}b +zdqi}P-sXYKs=w53$PnB9(jmO~p=oOWb0_@@snb!?rcE%1F9|%L-HoE$_Uu!YHRC+i +z2TgRquR}-L{Tar4N$7s0>R!;j;71@5{hxGp7&OtzVPH|i2s9d&KAH*rlx|S!tJ&aY +zgHp&Q)%ePqyVx!Kn2hT3lQa)Ls=psKEOlfC`DA6Es=6lUB9$X30uCo3bDJoSPv +zBhohH2z}I{GxSa6w0}zNrgmMw#NiUyz)#Qj`AH@XJtYm9!~2wWw7*`-FMU92v$d{c +zoM*5$FcZ3OLc2fCcrU8YA1$mEr`^ZVJ^CLa_>&OyABp~V;$tKqK1Pg2rH>koN*&3@ +zyyHcUnR}cT=-g#R|7Is-M2DZGX^{2%TI15+bZr@Q!eF1KIwy58{g^R0^pUp3KH%id41CM8J7I^##wMqSfCXWTJ%Kqd8Qd+fSov&@HRnU(HdKd^EJV6)IuF7%g7-H${EbH!qK(g}C +zlV~g0zz;t3Wk<&KIwMm@oR=15e-M64bL>75L~!gm%4C;O{a5oJ$>sHoWN{kwCAtr`x9g+2_X7vPZO~BHBegDfst&jgSc9HEXjS&4^lR{|jO%e8 +zTR0`H%AGnx+T}rXanpUT@&!e>*BnDniRr@9Q_J!{NSB&Fsooxh)<`OY93< +zHkt>XXwv<^1r;;Hu#Jk +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 +zajot_VAcH +z@?s-@Lgy@Xezsp#IKX-%I|p_)dqS{ny0 +zWW#}Pk=1{#_qJ^u_>YYP>_?N%fh%_6%k&8c)~j*apdO8A-d#=sxhv=v3PGhW8GiN6#C`TjQWrHAK-P>8oRIk=*XSg(j?{0{)6AA##qrPd)S{~xz@u3g**c8=$DAc1 +ztw>YzuJEASwICgrz`$1U26?CJIlCV^U%>d*6T93qI=2WHta&vX2k8IO4%+I0vsSyP +zeIwqZvfkO`-8Fr`Uf*TLKBOGD)<(#lvuEiOHmO_lw9%xORBGB&egtx-&?GHx+zX&{ +zqiz?Cnk8P=Z+^DGHvJKEeHZH{9FXn}-;~i^PsxPdx?jv!GOEqDGPKG6WKf;6@c*)9 +zlcerH-?+CNsxd+umrE9xN)Kf%Pvouo4+gKJt1R_$m9DzV?}Tfvy48EHcUU?cDn^rT +z@=)g?lDcp;;|A)Zrj#M=mt=*eJ!Bj31lNn&P`d-R5d#}c9qe&GYI{dLVBnb3Y*cQ_jqzMB1O2W2fw^k7g&7|6Og_$^C)peMV&(%cUT7X_}XAHCR= +z^uuGLaSy51ypQ}elRm)U$;c0$H|~`!zU5kFpk*%GXIS=y*5XP%w*uRYzyZd)aG+++ +zIDm~b3l6A#h<%XQld)Ce3GH8f%G!aLdX2s|>i3s^;4+Xqfkp$VTj?J)u*LsOgMQ-1 +z@AUj*r#32v?c`elhg|5V=BKSH%05a}*k7T3hqB)`>{j9DI=w5OD>tBeY9Z$G+_Y_0 +zJKXh-Cd?B7S7g01JAI%7Y1;dWuJAvBPIIeXb8kg86wjj6=_1B^g3n8 +zD+?OS!KlmUAL%hfz|{14nlY80e!~_8zCIXWFus6 +zqIQ)|N%y)RGPXYc4t>Ic^=o~mWoW#PqwfUj5bp!@(OZnBzcxrN@r(hr2a8c}VD|aX +zPA)fcUgZno!KWZgowOuv%^1I>UB7@XyEo)M+LjzWszF~d8uSr|`h6t1-6%01S;yFU +z6g-Cm4f|ycxc?rA23bBs`;}XAGiK>1BdF&t!vVexZnMSfoQ$qBxl#}4dc_oLEi3k+ +zG!9&CAF|m9zp~i~OMYVQ!PmbDdsLQq=ha5VkLMpuDryat*+A|D>M=g=HXWH@BPISX +zYY&xDAj`bpu9MVZ24e#UWIPT%q-53w=cN&Kk?N{3`cKo>e;7{|0Xa@a-Qi-?9{`v8 +zOXY@x#uimXpvw +zbL3Xs!(|(Nc2AIF8Q)Aml`9BG&d0OSfix#=9UrpkCrwwY>h}{@<<5;9b$J%>sy#rq +z^_(U$a}C_0t*b+ur*&U8I0ipM!8MQ4x(8@~{5$Ql($-maMYUV2%}eLzXalWvX1Xqi +zb;wz802^TzcH*{WzLYWSzc#eh=h8g>)ZP{)KJchCTbz?d$qFF18`Y@udo5sGgj}kQ +zlGJLWWON1k>bTeB`*xjBnN}Yo4#<57xR{mvwVmq>FI&+rsh;rvh7OzK8nth*UDCF! +z)-W+@4#p%sN-oTNf;nLFi(hIF$rcx>3x_0)6bIb&tSgr~F;@WxN6{vw&~FvxfZF8f +z4_NaP$^pg()_Nt@>Dbn*X5@g{hpOuPXlf_cwm{!a$3B#1BTVl3y^Lu6m9$LwWM8ZJ +zk319Si!(N~(CZ)}$V|4o*-H#&A9TnfiR< +z$_t0LXuYNV66FB4h$|dmeoE&()dr^P*fMh9Pi=&7V0!Lss6hSNpSG~gB9U?vB!##~#XoEstkbv= +z(dIa8O?04g1f`JSf3lK0=cV3*w3&tsGTVhoi;0@@Sda +zAX!qUZKCfslXeddSnaC1Sz(N9;d=hcW3l;F5`%hje3h|ck{+w=(7sAW4q!hP=BCm) +zVA+Qwp-#Mf7G_yCj1mt$06!Wo- +zmzXm0SyK|>0dc-mW~!MV+=_^^y;u7bjgUWXJMi;0a@M{LvadrwWCU$va< +zu^`*Hb9y0mg&3+s`Z>ibjg?b&gewCQ}6d(o~DPfl0w)?)Vof~pWAWJe=@2(B#!ib#?_i4mnTyHwWU8; +z;ZOQi==%#$0~zIq1FyjWv2%dB$+F8>^#B}Dn)=y +zH^(#*SpRUl59FkM3NPGMz`UjpOIgysZGHNCV>Z~_w7%{M!p5l1Zs$>90_m9`;fdqr +zSbO+3{u%lK^aXW|QU&@~T+0&lj}B2!Hld7sMm;GO2S_({lhse5Zz_xrtu+sD;1nEq +z0NcP6IB-eVYo*(Xu?^Vm!~?6-*Qt>zvwElSp891OP~&_`ugZU{$2Jhm*pM}4=Zxa? +z$v^}+1tdGfa;?N8Ht^dd+{LWIYPfQXOc}e2zSU!<6q{>)OSp32c8b}GD{-P2$jJ%W +z4FSJjBU|myBJYa01L=!)r|hdAoG0u6>I(6 +zR$+^<4zJou^uJf6%u-YEzgcvi8A#aMDrfqbhJotJC7X@FS6W`Ol5JV!-HI{DSju72 +zbesGMy9?O{;NI3W*(1|_F7PUyY;LGanVCRc*Z}#Jp5?$Xr2D?8Qd^ +zG~H`@3okSk&V?75OMzsC7|tgwqffVy@=U)D{|drw*7KReM=vy`(FRjSp#NA~*k=fn +z2iV1P%P#Bvtabj#rwsCZTgMw&$yMcDoi=T}wncE!lK*7$Tf)~X&3giOYCKYAnrUcX +zmvoi`A9q-#ePQY$)+p;*#cTT5dJdF8??sTG#R1Y?625A_(m3!7V~pO$acgd)A~x%< +z?Dio$2Qu0S)lS?W{SUxCFrbE;e{U2?MYZg3l(C6Haqx7^CqtrA3W?|%bz>;S+GA)bz +z22uYG1p1q>Dd=Sua8do-$%FJMM;%K}GY6KNW&SaczF@Z}OktgprB`*+LE5zJYkkT( +zMqwSB#esM@K%Y?HtJ+WIQ4hE=F3g2(V4=1J8Eu3ux@58uHcz(`|G<1v`!VI%>jV8~ +zbwn&P4NxU~x%nfI%!s1i@37sJ3Qw}eewn#9V!0Vkn0=YUsh?}ob2oEV+eN~cnU_Hy +z&KnVr-nzVzg~3=t$18=v7W}5lCtZ$dGSzaUXhXT1u#I}3I#vCIJpu}Wti*8J&oLG< +z7*F}c%`n$hSzwx@U%;M=EaP>Iq@X@fSYsyK7}{3!plg|J9H1|y*EQX6AWZwZj8#ft +zxA+))m1Q5IEwJpwx*o2ja-aiq1#Qx8gcq4Bn1X%CmAT_=^B1Tt}#vg;|r}YeF$?PV>tb-VIz?FphM)7yoRhW&vL#AFrrpv|NLwdmf?cR5?Lt1 +zz|;6s?Q&BYr31Offx6T^$<#qj(&SCp|AKn)vr-M*3^CuipYe08v6YUmVvEl<->6So +zM#0BwlyUr4eXn)Cj=9v0d=wedcd~P!DD^<`xhcQI&A8aS==48~hst0d8ZRRlw_aAe +zqTNQQ97wkjrg0$6PP~=5f&zcGRwiVXY4F@!A*;=$KtdkBf?)hrH=ELFFT8l%{I%d} +zvmW8|5^i6{aQd5T61CQp;V&^}eclxA{ef^5!7T|{#||YJr;O3RJj%-U2Vn7(iExn?8q-&V8%gDD&3w4G<1 +zY>lCCb=;(7h<6w)S2>{dLDaZU&W82aK00RV*KTE}O1{Ko^8n*r%cf+v5$YUgMjK(8 +zo%l5Ufr`A7U@$(sZn6t99~ZRNRI~%1E@>6-1rVSmsmA)@BF3E4s +znS@;fckAOb?&psi(B#UtciAcZ0dcf1?$~nd{5!;q0!4kAc@C-w-LW#R~rh*8)I}(_s&oHZFCi +zFWeJ+s^!B1I@WeEBUFB|$geZsfNn`uRb(SjPLR@MqU&D +zsF~86zCfF2$P4wn_W6*%DAKAv(*_ +zf$}YFK^$iwZ##n=d4bsf}=9zM^S1_<`v +zY`zApv;?8|2he}P7tB=8XU$<=n^O(aXmGt3xTN9i@Z@*&c2kBN7m1|3ApCyb$MxcR +zj*^1?z=(R(bj4QC5F8=Tmo?uyCe8}TPzuw}Z%>_*d<1(lZKs~&o^L=$xZ;ScbM)-H +z6)57-6l^VGU`L6JSZZ#MTWOj-;6O{{?2r8N(r@v3@^|qcwnsuHd|-_UbX=fN`-;T@ +zZR@B9EDlUbvk%$k3O;7Os3h%yk(hkr`uBX^(!T@lc#kb+st0X&0D5frvWWjS^HSdD +z%^sXLG#sesxyAeyh#g#)2>ObH-e&B-le|1{?j;USa9#1z*EPtW18y|#9Pl0TQCm~C +zKz33DTSLdKlzYY-)#<0Cg;)Dj&&Z`I&XG&6ei!t*iMWdwv7s1|Hk(TfzqiJ&GE>{b +zf#Qs@a$`5~UVK^t2JMuv`M+RKL6+o`F}LMXE-VgcKS;-o$^n~=&`hm3&YW6v6!V$P +zL*MM-zST590{9e2z8%>8Ulj4(VP0_CYPL_iu3=)q|7jRIxGo{PS&#Y-eOL05XREoF +zYn~v>!IHWMcNdO38^;WY)OzF#tYlemQOZq&^jZrjoScGD%#4s&U4bf1@UT;d3I{BHBS +z>khL$=M1hXe8G`CT(?8R2cY-9@1g$#rnu}d4|6V`-jneNTS?xrIpF3eZymsXa85aX +zJ*XT)>DwjHKORUwZy4=;De8PZhYY_&mYoYNPtAp!@p1R;ZQx_wAFKtEXR25Kjc9Q~fQ8L0)Ap8YiBaaqVc +zRTxL+4WS%hm&vgV*gMB?0k~ChzhN&G@k5txd(HE?cAM?>nuT4aGwxEoZU@)JXFuf< +z{YSwW=iTN}!sOTRdT2U;69^-HJ;8qRcUF0A!oY^oN}HnuhZpGmrB= +zbG6ex^oUOReSzPdfWdFWX}{%m!>{MX4mY^c>3z8QiYX5J%o9!r%^>3)F?hZgs6?8k +zg11QDc_2A~+Qh=)e-rALvDlWH;f5m<&TBqjg-=Q0t4)W{8{ql9p!@VRyex*}=HCqC +zu-PNeg11-tPkZmJu;uUq)H%lgkH}I)E~ctlVAfF4r&Li +zHzR=;zjJASjIwEy*xWQ8exa5>c8Gh$g|z->~O&RQFRM9 +zS9*=z8=rsexe8pbL%6oNcbYph>R*4C$Np3Egowl53*w%9KzwJP{PVPFx=9~xl#pjB +z&A74$?R;O#e0loCdXDR +z1g=dLzbS8u_k_dZ_vA&%Px;6ZXh-Ze+f1&>{TIPm@Dupj?$tMihGlwja9p2X83Uq9n=34aeC^%;xTron84}#GeepfuZH2r14ygJzx_nKAf>6>8@!0_L22#{N^9G!^lmo4A>O6T9h3pi;2)*-^vvqGz=n>v7qpBq_O|L< +zw{5B4xy^oUw)>->9QNK~{t-zXT$OTEk3Lg*El2bhe2}Ty +zOYS+Ziu=QFDgSJCf8tjCYul8u4k-3I<2L4jjTe5FJQH__-`cMwih236^cAYWkFumu +z=Lo#7q%oCvz66hfs`Pbpdos`Xk3VesZ-)MV2bPS}IB+2Mj>|qC&t3?~yT$C}_JX;M +zdibZnou(O&Y^%S-I(*7j0>4AxhBtj^cVtaC%hli7pVYehM&Q2jXK`EgIlQ`jAuta-EWU+hEo^Bp_j67K@rdI82AxNo$OB=>_h*-6CJt(x3qa3#`j_YzUcgp +z{?_>(y-vK6SGfedxYq~1<>49jbVj^JJ;3AlG` +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 +z$9lSsa`SKm$P@L{Q0X{Ge*wne6l +zKOoa59g-pNzj3X#l!rwYci;hhhi{(Kg!}J1kl*z5hxyHtxTpoRVXLKAr{`q!kX{*jN!+ho#p1DUwfD=IM@X9^vbFVz3+j!-9(9s*acd++(FxMs6dsYcB +z7XBX(^qg@n)OVJYEWAisHQFE#@xiNEQ;yI-*dwi*Y?QLGOW{0y1FxCzeTD_}kN@w1 +zjCl(4n~fY6OVhef(#~y@k%M+g$5u~E#gfY;0vQn21iw&s?1lS1kzrV{$8-nWJFEDA +zW49!r-}&rb@t54V%ez+iDTQypj_Q>7ol|V!8pA8k7*9CTPq11go^yj^R_Z1ZM +znQfgf$hrF-$lHQ%SNX-hXBs%C3!q3!u&T#K8 +z&=~|3^qT8X(0k6mOud5==vv`Nqg%zF+;E@hT>g83`)fKTe&bdx=8(a>s55h%W56ZA +z98fw^^SO=P=j+~UlCOKmmkW4~`Xe0PSBPIOy*h58e{)2pO*kxFT5pyLamyvLfa({H +zgAkuN|5#}LgS}=;xc|enfsabtrki90-?13jb366J8p_8!OGbqI5ji~%nuhw!@r>~A +zXN2aPd=!k0jr@6;qs==p6zuc!n21d~1Mo8k%3RfGY1&}CbZR$4 +zS~PrAN*8%l!u=kRP@jhdomoI<@-MEIfn7E#CzVY+A3kZ-V3Q2%znd}hR;f~Il|=Z@ +zQ#q!D=6mFQ!i){eH?L43-$xw49bm#gGfFsbbWHr(twZ8}*R?PArL-;c`GwYHK6|iD +znbVG;K64H1*155N&j6Qgc6Yn|-R1`6o6MS-2@)032RnRs3G#f%(q|#xdGarEE`v~? +zN2HM7JSkmxxwLP-neoA1>D1~uDHXHKk|X>-i#&IN#)W+6yM_79Gs5$wFVp^KlJ_>` +zx_!B?47i`WUD+>}wk`98v@ZRbJW%@d3lEg~#Lv%doO8I}!b+5b9oXwqvYl(v`KY|Z +zX&<_Zzejia`VXNq^y#|*%>OHJndhDZzk#2@|FVFdhg0*d-y=8TUcBe;Mvei;|}bIP!>ePn?PJ|kUQLOu~U@a3J1f_&FJK3y(pEXgu?x18{vM-9W=c1h;Qk+QUz#PHl$u3elCsh3 +zq{{u;5TAn!rgIi{!SdnxXcoFIj8KZ19_rZgQl +z#4Q59^!8&we5*|I$)Xe#@Mq@;`d> +znf?df*`W9_qerF7M$?4%8Z|HZ;ZM!sev|n3q*2^)8PNU}nK$E@^zF1u$`yTFBJwZ9 +zo@29PGA6(_kqxXcx{hHO^ZY$%6Z+D3oq%2!ptDCMT9H2k@T0#}@Ete|9tLfq@-KmJ +zOT6Hq1MXk0o$!FijHvvJ!4gN{M;gn39$*=G1Dt_><~8}tnAe;5O}r`}3ne30N{41! +zWO(2G(xm#+QZ#tEp1;g9Ujj{lEBMQ0bw4B^pIbF6nSSnVLt+DGEvp}U^n9~~52SJ2 +zyV9t{+tQ`p>(Z>|a}pb}!p2v4O5fA6?_iJkQ#Ul9&UuZ6|9wC&<^V>}p3jE=OC`pC +znZg9WM*A;22Iiu-h9I1}E>C#iQX?wh&eZLu +zz@E?B=4!oBByhRZtF%dm_TDd@TW*tt2bG>N0`hx-kRza@-;B_U)Zx?3(W0XCp(s|@7aUNVnz +z!aFG5L#;9p?A@Pn@x)6!_cU>C03Fa-IQnvpLSL%4`|;3p0|)r;PJW7$ufbp^_y(kc +zbQ#|AZ`B7VUu+$1^Bx({b+1&8d%_<7kMMpb2re49gfg(=eiY{&O>>cel|~W26^^*o +z3Kw{6f0*z1%Y{P*OP!L>Q1_p(xL-f^4XIn~HK`cMH>3)z667gG3aqeP+WvH#4&%dY +zZ6g`4g<}f}$v2*IFz|~Y?>@5%`A$kI60pjs$!Gy^NaX^^5a +zwB)F=yh+&gKzx!A{H7a +zqJgUokPA*Xfd6k64P2F4p7&5%HJ&VO>#diDe3+2gN`^c|8CaPH +zTUpTlsE+xxEaViC`4=%>n|GRVKwsJszvu$9j41y_H<0@KD=7RkqVrSN6j;D>iwU76bpRZ +z0ItOXSGO%%VD-t^pw-fl4~b74wO_ime^{!-&z4$64oSV(*QHL;qf)ErE0!IoV#E$9 +z9<)}tFCAL<(BHNC^4g!z8LY9djt~C_HiPE$74k`5Y?J|0|F-HWQsA&r!oM&5%~fvj +zu>xG2k1Rh1sTpN@v%k@$rI$L1&&aUehooJ@Z4w{0hVr#Kg*f-2^NPiS9(Pdv|5K0H +zpfyHp@ERA^HFrV|9~Tc^BQ0vaAP@76+$m#Tmc-(d>6Z_a%8}1o{hr!s+^=5vh$KZH +zkW!&f3-==D$J5-^^o3Sf{m|%uW!UGI=M0Pq=_4yl`oZ6VHS`r4QJ#Dwe3uw8{(s*w +zTZ!9~UH>)s_1(2c$~WKB>$HO3Q?8mJ&fvfOYAhUP*>qDsk-Cmoa*fA=G<;Cdr2bc1tT@RM!H_s1ne*GtDHyJhj56Y|iISEOo*XN2?A +z>rYY!Rx`i#5bIBdONEGMq&nl?E8O2Bl_GaZ`S5MlSXjf`@57~TS#t)yUeNX+mNCN3 +zfcw+O7Q}NFyb2~$zN!N6;=$Bg!E66^DvK+)+CYY2tqX1?uonEHGPXhWb7SCstDY(! +z^Av5se(3=cqo2}qsl@qGT)`*Hmx$PClnCAMx09zmLkZXw6M{E5#TVSrfPTx#gwPGr +zuE8!@I`?q9psA0Z?B(C5>`aJukDqtOu#eMDnDF4fbJtqkT +zH`?#Hz`X~NcMr|)TV38UDEAY?Uy!nep0~!r-17r6TnGwREq~geZ7m57)6X(*rp^A7drZpMuiz~( +zhx)KSJSiAo@QGX{f}XrDbdr-qmM*0Hhm!@@yC7F|x8VikeC~>l?7GUi8y~z;%11vf +zecBz8?k)FAxyVhzxy!`)TtdiGF>!$#4du(<+o^#g1!byo`b2J8l7K$ZC54ZaD18yx;Fby>;a +zr;JiT)L#WRh9lp(;QNevx{=?Ot_waTm5OYp3>=ouP4`Ke@TXP(7l>yy2m*f>`Wx6O +z6=C3M@^!gk#qBb0>Is=O;keXGr2k%UlU0AKJu@qmU_Dg?V}K%zgA>Dfe?4M5b^lf= +zS7?hh{w*E)tdt6|!s)` +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 +zg)^Kh%C`z;g8%6^3+^=P$G#EiIFp(~ +z-dG%?zb_qYoRBVc-l2W9c=sju*U@o6{X4*?2J~~O*A$`Dal0GFy(yCieJrczeI=c1 +zz9aRD=^p*s)@z%e1H`^@gmyX_+%-MuoEC5drQ!Z_aR1_!K7S_eyK0{&jr%UPdOxl1 +zm)vkakIO*G?J_{%{wFR@{Yv1b=Ywz67<{kEXjI}vW$;-ezTa`D(KzlMzL9f6+E#i` +zrVss02Dko58pqqtaqV|74!DB!blwX;lv8k^I^6lc9PuWNTiVBKTKX;N-S~aW<^B}z +zpAYhAoVWX+4K@5iml(J$Xj^}1pY)Ebe&j2eKI~IzLff06z0FB`f0lUqHHdw~5!~*i +zUN^o1ZX=8e-u(@4w+AEP{&MiEt=_kfcj@zF;68nRtIuQSzSjHhxd(~A-w1JY9bmdR +z_1);=*f$^URnKh#|3M_>;HZAP>~5h^iFc(}gHtkV-^k;ueda5>xJ7qMD +zzk9aAtAvt;M|lNb-EkL#6p$1Cq=)HR=RN6A?Op0z>%RB6KNe*1q+2^hJ4$_aJTLA_ +zZBs{g`Hwug_-pCgNE&0*ly5_OYz!+FEgb(G`- +z9($i(`#d)8r}z2A)d}wB87z_E<0Jt7Q}2HS@2k5w4KuFcfBbs}->eJsM#bND)He8b9=109L`nLOAGJz+R~9FKDT^k3$@Aak +zxo=zFr_*oLT_5xVO1%9W=ntI0?M&hg$K~ldl5#N89qzZo&UqZ}tDV#8?_b4zXZrh2 +z{lz=)P$^Stx)duii7`O`vv7V4$dk*dkKy3Z!^zR1N3^5S!{5=V2X*WRiUMG}e!Ez| +zVR?6OQh27ct?;4D82W__Z~LkBTs=oRz6b4Flse^rd&Ba&Q#V-Sk`ixwz=uU31^fw* +zu3T>%e?ofHJ8AX%Y&<-%jqk+;fZLYbCh>3cE#9{s=sON+RQ$xbzD-V1_kSy6x_&~t +z{?3i!CGLsVerTf-e|=vR-W%?&!=2!MMYzA2djAjQzPsxX@%0`lJ|4p?M1_x+=1rGL +zomvaT%VThAF2_Eb;C_hK`|w^-96S#?slR!`hYDZtEReg6X7L|NzebOV$w(@za5xM6YVt6xCineP#`pL_T9y6?{*#W9r~U^zwJQ0M1MaPg?zY{p_5$Dy +zFV+DQ4{CCG~iH-9RRN6)z^v?1?jz)K$5%X`<=b_hMSOb1A)X(^F06Ty?bY8XJ`Ir=FB-~ +zX1zTJIQ5=BaQ-Z~1BNL7+gCcM$Og8zuXsR`1MMmtkSCh_$rx~2`ZxLm8FZAR(!rhW +zD_Ui9K6!Od;FQI`-t`Yi*IN4>T>SMzIF`@iS%rt2>!_aC +zw!&{-94E9c|6ACI_J7E0%g@PEUH;@=s@J-WNYXB)Olh@TDfKTkGT`eo!VCVF#@4ei +zmFJMt*!fNDoAmpGj==w(sl1*@g$y|R{+jUpMch;15V21z9$$DqRMf;L#4wlLn|FJ>Q;U@ek5f(D%aYS|1~$qJ&E9z#ltQ^zf14> +z2c>OAi;t(czLA~(52xd)p4hhH{u~^4w6FBL%zN^LtXX(Yde_6pa!;pp>Xz{x&yhz{ +z&F}B<2j>m=pN?ZYxWC!QYw$a8KNO?}PVN_i>pOr6l>awDC@?x!{zH)me9*DdACg?? +zQ1K5L)a)QK1KVjeU;y(UnAtZ +z>hF3!63hTT;DH~HF%s^h$5uR09o_Lz_h4cjo;^!lo}ynt)+~MU06L{R`2BtI%AxuF +zUH*LVX#r25_Wf+YE7d)nKMOp69^3}XeZ>{f6d0WR9EtRo0Z! +zCdv=s57vRia7?-d9hTm8|8QP&g6jjBcRlc`GAh7I&1-S#{YH;`cqzPpHtbUMSaXi&J6Am}9Fq;5s~(ds)v$y1 +zJ}cAuot3V9w$4>O{xjt&&u6Q=DW$@dC!iwu#VwA(L((#?{UNW}UoZ_KwR9{^NWEm`;i*mtDW@jR_)|eU;;^Qbgg<4 +z-oyW47i4&gGos%eWm`a5efgYdjy$RhLaY91bgB8f&P#@ZFyQw5sas9r{_3zErK)w! +z39fAfj80XLCaSoM-8z2zAp>i>R6AxqGvb_VTzpvu)IUL4&>tC7-9nYWJ|=zMl%!+2 +zTM=;C$^Eu`{t3j#{k!}=5_svJXWgrvO545q>9yUfotBhvN`cDZkjCd_-q6d^zs@;l +zxi0spajqq0bf;<_TN(%dd^tV`Oz@y{sQ0-x4={XWv0LTuUi}npcoLlIhMstNbh~r1 +zdBt^^)bl)J<|&6RtH*?J@=x-qL^`+bo7{;!vDaqA8t2=CtG#NRlavBvQu+m-m$`$lAO{zOa#FVQcfiP@W$zgMs$5R)CWyL!S2z=j +z4FT@-0yp518+?n&N9&qjyH!6`UOCv!O&w2lL1e(Yd-XGu(OvIO>vO^4|EM;~f7Kb! +zxQWvrlUH`qM?F_c{gBpYgh3prCu)Vr{X}yXFNi +zFb#wQNl^&AAk+I|$7qcXRKqG;B;{KKd_an69_5Ukho@_DJmNm*?&Icpu5I3pK1uU) +z=TCJ(kRGh+S(A8&(N|={qU$oa5%Z>MQF^00dhHA3ky`UhsefsFM;RH@uns2enAEHV +zXin@i`#KDX@b-EFe)o6fczmB#_Yd{*?2GU65d6R7-@E3;?EvnlJWL3^B8uKMqRO^~ +zGN%VArkQ$Izn~mc1b~N`N8RQ6!OU?yH9vR$7!P&)&dqrFUY}a$<)!J@)Bjx)#0YQ+m}* +z_`V61E2)3ak!hxp({Gl6uPT7OftIp2%2oD!X5Y^-*7|o#2D}C%0|VTVfsJrK1N*2O +z{Q|GR|0`Yl23@%XB*h`{iVSOfRi^Z~CjDwrKE8wRKnal4)%;NTDR1DtH$0jKBHZL% +zY}|aEYyCii{$Lg`Bc_1H6`hlS^?}0ZDh|d +z(_nw-!nrfeS)Vh*%rIoY+6Ol_8Ssi<1~mS2koNt(11}kUgRZ9S7j$(IumMSFpnNj8 +z{xzA@^|}nG9aX*qoUZ~BVw(MS2OxICl{cBy5l!$&o*JM!L>oPI)h71h3j(l3> +zJW82sg9Q2UI1}`;_E&PHVM*m;LVt|c^kG*#!N5K>uY^tRc3rl; +z7$#45LI0@{HC{T$&G?Sn7*DgMv@w-;VjD%XE%)a=Vb2uI^88JGM~uEBL-$B$k6i0r +zFq!?Hw)TZf&pwE{?6{y*0GitlD6a<0;M2K(~9$l*n^t+-g2_XF!Y +zBJ=w%wB8REs|>IQwC)9TPX?mR2d=^WUciGrjEyIPZ~6|Xb#o!G0ZFMCSo@}oZgC6# +zN0sp`Wo@PU0ec#GruQ9Hko`~d6UXX79}r)aKJwp`KcE1d``k_5#m3J|T-&xE<8wlP +z+6REt{ex~Sr~fh+j<_Y8m)?<4&2LJ-K<&@8&qx44HzLsmruPrJ=B+wGO8C?F#n&qN +zu~9nLnnuK@{f-O>$83zWU3q_3sU%~wn +zK*vn@f2$Dq21rWAz}mOu$!5xbE$2-w>jjRT*f+so-k+N1odNe3`11}Z-773P|KP3m +z$C=^L+X?b6ZeHHx+Wzivk$!+N{H7mxUF&Aq_%L~G(H$Al_@?v^is~;C>f3H{{fPd- +z7s%^Ia#ml|z02lVXOz#oF(1cWrE{${kpU^5<0Tgv;9aS_A6ws-l#BO->AM1SuXOCA +zmJH~70CZm<-TTv$0gwI>@O~ahjh)mOUE{JbF!**ia1BU`M(x`&q#kAD=qTp}j-6VT +z{mDq{J2DM6uw~c*erB)W;=B_ist%Lm!+_u$22eh}3QUj?_hS3~F4v6%2|faSf%aqR +z!MlU%+>)0j-;oW^-j!huZ_5+4-0s(|aD7kGYhDT7^HC?L60p?(z7_MmF|mB!*KU{1 +zvtEz^Q5h(P3@|5P99SX&yfanb5w9|k(99XG}fLdKZSufbIdx-ap5g^ESd) +zjNRv=F{pN!|G?T|uK^RltrU*nXyvE&ixP6YaZKzXYP%_V_suy_6s9a!+QMJJKz{&wzf2o*nlOO|Pmw`3Nz$%9f +zyx<}O`o3V5fmzl#pzjE?%fMJ`U-UF~8TbfYIS={*^>s%P3=RY8=x>J$v}-5UnXnh$ +zliob*9Nq_RViS8C+gL8(q{m}F4hn{k!C@ZoX&Sr>PndhLa?{51Eg_Et%TL>BTV?{^ +z4y%7hUY#2*YiC8k|3tOvDXwp#c_sH>jY7MOnuXp@U%lX4OR5%lGoo_97P%(_>lg>t +z2=iiO;6=uP7ewD3ACToa#(`&fU-n#w3{11$lc(>7%$VAefe7XU^U;NTbpQ6jb;CUe +z*S5s6U!ZUJ^)fVsV?1#D +zew2KIHLv9S3oiPhzH>ZvaFGw@2Nm8Ofec8L4CL2w;0<&krwpuS9C%rZG7jJy5d32j +zkoh@$1M?*}GNA8Hjq(wvo$wdjuY!(jXq|%M;M*Z}!l|RbC5}<VrkIulRtzAwS1tY0jY`ruNDG +z;M46ya4;rc;eWz>9LBwd)ivS2dGM)brfgay^73Sn5%rLP5Vvt)SY2CHkSz73H*LuK +z-dY#?jdv}7+K2a!-#`Y0aR3>3?!^JU#*`m2)+A +zQI&xe4jI5dX8DNc+kM0;1L>!}nKj+y47$#JXkD8JZPOFn0Mz;45OMOD=~#%bWhwl47RMj|*EldoIgb%JFdURMl| +zg?kovf9B5cM|Ca3)^1glx84$Y+sBZxOm?Z-aAF*qkM249w +z;Yk`~$QTx4^8#Z*B%sd!exP6c0{$1IpCBG~W>)(CEe_pBiez7I*~rS|d38ViL_KY< +zO8GWFs%DEdUpNQjxr3vm3)Z}n>rdZ<2@3I^%`b^fh^SxU(_JCO_J-6h@{uoNfDu&Wy=*lKy*;K{ +zfwvA+3D{<T1LBkcyMHXE3@or>g_sY_=biGY>J|S)`JW2R{X6pBrOdneoRxYo +z@O$LWooU`~r|zS6G1UvH7aMl79aRFh7hudZsJF+~w8|qe0Ne)d@GrJBTZh$2n2$pn +zhygMWsV~2bg#Q~Bh^(H?JsXP*K?eBE9sEVwI^eO@k?W1xRs0|C!2DL<#T(2!F@NFR +z!Y?%}@p++w#t%lFQlEI%Df&^FT1DPp9a#9?>)1zyeq3mKag~A6x$XWj9S5`zEaZq4 +z%9j}#@Si^=cgA_%ylYBz#nfOqV0`@BVgqIOgXad^FPO)F{(n^WDT3}(g6A(oT~xql +zg1&g0F>?X+ma#^`U9MIBNIxql;nEWvZ@bCA*f{#S=9AFhkcQl=k@yd8DBli;|LfrY +zntAZQsR-wU-x9>&MsgA~1_|Bnk^HXje$sbQ^FFltybEv=GLWYU?}cqp`U|gmB|fbi +zQtaaoY8U-592pSWQfd_18AApf{;?<-z(*V<1H?&WUN|{lrUlkJY#5KzfR%BL%Z%GL +zxOEv^jVnzupN||~*IWR6u>Bg?`^(___z|0@rT^(TNX&@kGr@jnKlnV3G;z>AF9`{RTEo_?`)sDY3sdEkXb9fa)m7gD>xx?a3H$s8Pu;1sM=@cZrgL!i)n^ +zGNAr3l>zk)IL85}k62@cUcfH2bWXvni+!4w`PLX-Us5qYd)BfG=-l6lx^e*StWMMVItB)fTMw0G$`1`&fNMts=XvdV}`| +z8<+a3D>frv#@EC)k=yB&KLeYIH+*^qM7YVnm>iAdy7?f%`#!<_fFF3{3HZN^x$kQ) +zVE=3{GJx?w&kaZzH%T+Be@8JmCV0lQOPfa +z_KP6{yODu+?EbL;WFS8>;P8*>_;2}$b1)9z8$cIYfo`0-Zi#)y(E8#Ho(48x*E{RW +zW#(yP;C*WJ$$aRpZ(G0V?^8*qnzG1G*@=gC}~U=ar}-hedyo6C#9TsTo= +z(@K$1T}1kEZ_c@c2+~afULe7HK8ggqYeU~#OO$iUZD`(YQA +zx{L#sZ=k692Gl>MGNAr37a3su$3NzfftNK_Xlv0NE7I2}yvrC|Pdw01`=OiO2J8_d +zHaNeYxmNZu*e&?p3tV#iroX2&{788Vx2bZFb2 +z%zn)!V)kf}t!qS{>Lt=w@8800EG2DPkl;O&Ist9L{@F);c>h6HWZ+MImm2TFl$N|J +z7JW$2TilQVVub>>GY)K#3i;G7>XZSElUVfyx-$a&jg)^cU1q6 +zcfkFs@0!qe$!uhgwW{pbkjmYCcHC+Ae((q6hDUo7!M&I~y~4Gj?r^bROYYZPJUI^O +z+fwdK84CYj6&XK3qz~Nh$2`Ct^lc@ZK~~_-VwbP#L(cYYQ4*WvfSnvIG +z%7DHv8M{y{GO*7+4p=^7N1TK;4#boJe8jod94(pal}fB3P+d_`5_|^)eRVn9Pp9*K +zzPAEr^n41&63XUVyVPETzCSZ_fZg}&K5ts%qWaIHbRWi1^h)a;bo!18_6m<=&)@G@ +z3o(>+|9OYk5BFd#^h39+@&}X#|8s|Tv8HJ$XW(;)J6!D3S_}s|^ll|r#`G820{^Fu +z6ydw@o4eRY+5pX~7kC_hoy#3DvT-B!I<3Zj*IzRhTkoi`%fRo}yIPqO&~N={jotQf +z;45^Y&jtUO)GdY#6xBG1_ccz!9xGIEhcynU{lh*ESU%z#rE{<8f=;Akvm!Hi4O~EX +zY^LX^@3b6W0w#!UOil^s?ozg){hNtrmBKr8PmChOJN$f~?n6HiNPX0%ZldWvy!V;$ +z)q2;2?oX?GRI$eV3Tys$4XSgeBQXovM}~-}+HjsrpLh-^Zya2#&G86umwPeO9pc)u +znpZ-9y-Cx%EodWkdbN?ihV>MAW39;Cr$zWKoOc($k+uRbxGtgFKJ@QBc!vplGwQzM +zMHz>8(jKPn8?WyU(f+AJCHs2;nGcIy2L6W(e5Z3bbfK6s@KH1wsD=#S_e2lg?395> +zxWBM$p0%l3);ys6_kiys!A_79XrEPq;{hNk7}_s3>Q9@O$+rRf&(b=?c%IcbSWEXo +z?^C~^UH5q(yU$+Bb{3`kP?y@b=)U{x7i;Z1rTZNX48CO&Pj_)>ee-Q}mjRtSOUbr< +z#jojb@n|{FeJ&_(ls_O8TmbHJFJ`(gxi&vYkY}2vXFE9CR!aA5D?dKb75hK)-$iq{ +zH#Q*7Nw0PZgFMcGCgfw~m*9;bB0-;;>@mb%VeA)^g+6F$j~ZvfkOAIta)Nhs==%=s +zGQhjot#`Jn&f2Q{PnQ0wGNA3L^Eu}@5Mqr3b{Wuqk2nbz|Cq|aYs?Ebd`c`>0pbFb +z>xy!HT1h+L%X52Dk0a=BZa+ky6|)a}6yLw^+geHjL-)p@@9&N7b1S;t$D#Y+D^Xj4 +zW%s#H_c_kKm}i9jzpVXKbd8|K0qR_zdbrW4n|#}1pe(C5nk}cNN|o}@m^q3pGkpVI +z5|4r_;*Lp!XGY&p@!XNxW(Ght@cd_w}>*2ild*`-agn=&+7)K8)9CyY{#Gjx5yob|5Jn +zTN&%Kc54}C6wLg*C-dGp=sponyN}NO)fT3@pz4KcFVnHovin5SeNH-cA8YNou74X! +zyu8kNdUOzJkL{%C5V3`fl`B@f}H4M+!;19vzVYZ|z`45U_GyYokx4Un;W2U**rqsYR!B5PMMheH?YMmad|E*6uI +zujcot{`v)8GoA>%rF&%5Lk14$9%0CU)gDe6(D#Qp$AJz}GO!<;5Hi3VPVE>`<3P!; +z@D1P}E1~`|l>zk;t8YMk#4a+BZ?lPCXcc2YCSqf($LpqJoxSe}K;04^GVfRklx0CpE>nJlo#8hr|WZ7_t97xoiBFk +zE`shO=sr?&ib(nSrWAd_lss!q$-Kq9k@ju#P59s1*k@*e_a4f9Mb}U`NPWVe3gEXy +za4s4z$>R#>(8-aXJ3Q=0+Ah=!W$4B6>L_IQ_1Cb0juGLzaNb=UByAaemPhf2p2_;F +zJE>XMKM@(YfecuE(ET!SI!XqxkJ4`X{$g|?Y!_`S=s2J^5$r@8PA##tOoAZQSzkgB>TH|lFD5>nsEO`MI&NePn62F +z){6Uxru(pV$gcZ*ZTU~MzVzMfyjRq!SN0dT_8!!|d7^Y5e5J^jwCgR>1RHvtaU$qG +zQhK2&g8 +zGcwRw>U0j3zn;MMziyq#>{;+1Kd_EzZsHp0+Jhvgzpgv)QRAY)dgyxeIR}veYcDfw +z&d9)3t39HR1FkZlc2SjqL-)%-nV2%5aT5FP#R?U9?_Qh)GC*9+n#uv2(^e_4&7f`+ +z#lSai){ndO_$bo7MH#a+Yk17amwvtnKJ5|g1#_!hUXAs91Do$Q?7uN}pKtLY;`6d} +zpTiEj&uR8WR^3PKKJ2TdYd{;Af<3_Eit0WMv7HB@L#XakVlleU%jOaI-#^n5BC~OP0~ug{mpky^E(1CaJ7qxktmeH3y!-R4zU$L5 +z4ji-IC+m~}wPD-+V~%k^WuP>15{v^48S}O8QyHj3%xJL2NgxCEI0=mzeRE^g0^9t8 +zN`7c`;Tc1_NfU6kb2sWKg@Seq2Q#osdX)*-K;OSSJ$?VmGI`fX)0#V^R>|#F{6{q1 +zr-RCKh8dFUvr@GHF^9cO!lY3oc +z>b$F2A1lAd$_IF30DrI}A)dwgyYjS)tOXgB&x!fNW@Ui%@bx!SOYkIO~sTaEDW!-Z@$6d9%>Hc6k4&Rf3%k)ndnGYu<1NZ!6 +zmM)||V)YGJGVp~Z1M2&%QxqAnuOoKKz%t^dQ`f8hgVC{@c+uuhcI+YHKvFEa%VqTP +z)|Ay?4@iT)zW{5V_f;*jK_(3QT)H*;2)TCHeWK|;KUlh=>ORCfMALnAuS~{d>^`Oy +zd#3ujQ}?Mo9^GfADcF6^qWcdFc-fYwz{>d7hAUq{S#S^}hHtKE?{e+a$cGnwQKINa +z{TRTLI-1y_o7^4C__c8p@r%r3_-@Iz%C{RhOq!Z-!RVX>^Wdkdu|Apgpu`pzh5!5P +z`vG8UrtSyDA_Mxq2kfKw%K*LseD<^>zJW^WA0tkJeyvUU-z@(aagFvki75Y=s|-Y~ +zrN2ub`DFD%yS$n;J!y34C22bJl$AhIIQ~cZ3bziuiQWGdm4T2FIaVDHEcu2!H|qyk +zIQ=K-5Mm$eLW(-=KIlHok=mmBbgYE#gI`6*Q|(*W=h)gy)Y^Zf0d{h9ANpHqO<(Dv +z`H(5s|*k)QGBl>PU3@0wF>WURhNB+TEV4ueIz^B +zqy1hA$6Cslu0fL{>hto%<~fA5k6~2`y)NU1d?D*!IwZ^H{w_m8|0}JleZd&`6?Ndy +zeX#qmPmpC#Q=L+EAGJGJcAvWFKEwcGQ?OB_EyM8}_;0O?a>{`AKROOz6LQgo?C*HEUk31xAp>13 +zAF-2wm?}zrrpV+3QP-|ErfAk;T&w%Y=TvOTVVSN|&Jh5?YOThpI>M +zEvnDUZue20Q}<Xr8ymGi%0 +zl*+v(nEil%#O`BioKsMdccgjMz4Anx|H_mh`(@$N$ibB3vS8dvnK9^;Oz3u6MzuXJ +zBbr@iU-0Yf2Y8$DSM5INKE$Z0?nC}J@Oixp{~K4ECaIVMxWzr?M@IlxLcs-)7@oPN +zz00)|;hiUN>)tUFA;Sjn0#CN-BX@@~2Ux$AwP2HJU&_TfA+9Mw(BIqy16%Xz6pk@( +zeBGDXFVDt0X=zgC +zD`{Kh2kBmCKk*EI$cVPb<*ANmWK4&P@)Yk;)%T(dZ-CDW-ACI5-RC+w_ZQU1=*GjP +zV9*5d!1v{L8!JEB^pkWPmjTlqe#M%mk6eJaO&*4Cl*4ER=r2NA_myK^>Gxk|4lsjQ +zpf=ja!F{#wx{1xC%LLr63)h4i3rO915??l)n8I7S4vzIDf-Yq3^%DO$;Pef|E(7W# +z)>t9SM;tW{sDF%jIfo2rta}Uf5tntw%YCWw0PL;xX?oTZ8|}u3fxbH)+*Q3drJx06 +zQ8>zT2Vd+&QA@E7u03nwW@7i<&RV(enwR1 +zTxwV0;Ehg|j^6HC_2g}IpWBS5H?aF$Lgze&?(-G#KC6iL=nemi)7Sa5$L5ikKL^*8 +zZ>7O^z+G;|mhLO~oBu)irsZx!AEDzU$P3=>ODG@b-NiBbgdolD +zLH>w;(pabf;>q@COeHd4+1YfyrQsr!p +zIm&a4V*|=*G>an+xo(k^@EKnRg-9xo@{>r~C14 +z=zjeIuXaYiY>fT6(y)4FKKP%Ocsh-JeUK)$#?aQhavYvK0Z(qa%`L{a7->zuF9xZ> +z1C_;jk&f%gaw^8lSuF-g#PAvT0k+Ziq66_=TIiVS2IzOf!F1pQoY}i|#D8tYfn!td +zj0{}Rm`bM%=z9DFWx%qFG9N$&?7o3}aS|G{YnK7Le@y3fIu2-@gxWbYPQvaVv&TvF +zX}Djy)cRTdV|S5(@r{aq<=Ld=DWmZ)Ny~h1tKLA#G&T*}Nz6@VOyQ23y^}Gjt7Vp{y8Jl>xOg>zYuFvyDv# +zoW22TPJEvX*nPxK-vI9#kMa@UlYyhrWT0K8{W7xSVd+`#H^DA?1Apk?=9P~djk{ho +z8V#3>%=dNxE7mbtkBrTYDMxSms*V#W58o+I1jpIPsW*5~Iy}n4extQpdV&zb4hRG +z^J1WRCCPK3GaA4fOldM$!UxV|PtYCoxwEWw4T3)D7FYwJ>mc3&xm5>kuEpW|slAi}ncq +zLuL&-A$=MgBo6H73(SeFcZN0?9%w>v50&Gp +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 +z5y%FTXfZrOgaa83aytg#^1I-BI4b5L^i-7NW^ +z{9KAHx`Th1crV8_I(F*ZOYLSV1I!2P{;{d|;v}p!l;}d%I%51|_=r^oJ|#|~1oHxe +zb!16W&sjE$k!6#qC78C$72f +zdY$WMu90liPbhPUSwD-EL7wy+Y2F6@nom;w6(^3O_zR|Iv885F>U#mW;H>w=9JPG| +zvFSaHzOxwJugx3y?BIbT4~=#D0@Tcf&df2Xil1WgVP0#1wAAB}qD#%QC71)Zr46Se +z10A=}_w$|emd)IsaY3PNo{hN19II|f&QTvrZi0LZ%{pPtgEg(rhpjjX`W4kZoid<4 +z$Cxr;*+s`i8wV~iALz$k+FnV$Uuxzp@OX=v9<1=+Vw%q9(PKuQH3+?b2>MUJ4pTC1 +zG0%~vng2G^;AoIWkM+Q5*XyEvCXX!S)e*bNRQms7@Sl8yYqo)mnnzOnF&ERArqrMb +zcn5^hepWm2*_x}xchvULc2d+phn?u)ey6Q)-_hQhhCF`+O^PwEKu(gP=qWM}>PqV~ +z9e&*jMP8sELDz3bJ5Hw`>%dXJt8XadHd8X7BWs(h3}j#Ur{w6rMe>gNREjLVBU~E= +zt$*!9RCjX90KO8Zk2u;m5G4aoiOD#yjrl+>kmPj*2aSwxnntE=W_zCHTt=S7iS#^M +zp!x&95y=Jr`TaP*1!vrD)AR=473IM%&TH;Fl7~Neb|CI;3jKePx2Z4Aam|K|TTMUB +z<6-{ry{j+VgSl8f>iTJL7}#9v-QCZHX`kxo_!F4(E#a9vVdpG?kIUuygYcmpaeF@C +zVTzsNuPwMDLSw{?!pm(LI8MfUbLx4_g|LEY}6o^NVhCl*%Qa9t4dx2N~Pea5>E+tFERZ~e`Y-yeJqExbI^8%{iM +zng4DVYHSwBO8w5_c%>+|&E|~XlaYbe=*F2C&(nhR#0~ksbV{-h+9tWte+n+SDTQAY +z;D|5dx|lvz +z^dK#~tqA|y5VzycGjjfC&X)#;1^adWd|t2D#02N9b9!t|9#ej$K6abpXFtDz`}uKA +zqMnO&W7^*w_SAOn4w59Im46yJAf(;X3#dG@!GeZVHkJ7Ygww^?yP +z%6W|siWVn9pW@Vou$|duU_Nm+j&VTuin7aqc{FGee#I$wbw7?rT9tmgOv7)dS&HM2 +zD$j~EJF$6uM9e>ZcSiIU&iw#N03*%YR(ie0hihhXE&^EB#dd58|EKPUSLCO^bIk^h +ze!%VLDoCsl@FH$50F0tu{|oL~b?oS067#tL*AROr4Vl}`qI`3i>o#S4*K_)tBds7~9l>v>DaFqeeE;^ez@eG@k8GqtXu0cDyWqIno%;gV= +zQF70tlYz9#=eNyNY2Gnsg9u>Bb>0t62}XC%@GkQ3j`;&935?Y5A_E*9=)v(a&@}fU +zHL}w{`~TnJ|Hr1Jwx`*~F{56e&>yiS%6m`Z_5wgZ+F&oZ1)|k)V!qRcqH(Ql7~`I$ +z&!38n*T#lx^;7nIP4fE%bfDdRKtjd*fB!pmV}SIu!4U9QZuEb6AgMlp+pipy0wXp{ +z&Pm@${*@6{JP>I_p>dGvAGUnN)VZEh8Bo1aZ3=2vwq#%dc2UNGiu16OPro7ghVL=6 +z4c>Y>&w}F{@~@Wm#2V$uzslypG0E#X4SY`Zp2h2$soygX0PzL>JX@Jh(PPkC`2GVZ +z35-;`?Pc)gIuOLUKb+U_*}B&GJr#9S3;s_&AX4%Z>dXH7F5h=;{+d^8e*w$y82X&R +z3lswVsmI;msQq91}j3yf1~>$m0yy0eXS};xB!Q?iPdlBw5oar{QDzRPUQh +zeBL)Bfusi6_HaZF`2GVZ0SvDX?DzHI8jzQBdx56858m*s@)xXsIfVWHGgI_C={^8i +zLA3Jg^W>$DdA`&gu8+z({ro?FtKn4v=SFT_d;F_Myp +z&-nQr{xSPFKpk6SZIlcwwT}a87cKovnB*C?PqGZ%D!CT?W#ysyIB<>QXT(lE&3IBB +z_yZ5{&`qOU^oG}OXx=%3@WFUO@I5?I%`9zBtrQlDd6f&Uf1 +zG{wuF<_pr~1Xey;e&7vq@@$QH#)aS~5C-I7p>0uscBqd%YAW`udHD3&pobMwpZ&f3 +z^y`uod1wbw{p+=pETGJDNo|-=}zpN +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 +z)o&Q{8Lj8rVTN&^AHZBt6ZkP^7-{Z= +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 +zaVbbBudhyL1enj52> +zBE;XgnT&}7X>GBRG2(*sYV(JX#5096tKIi#FjSqn@u}jcxuK*0<%?(fMNR}>Ws!cj +z)r&7tn%_r!s`rb~N1#dXeI?mb>y8;>Y;Icj5qDla7Z5<&AOBvkwcN|K4R#?<3ihd4 +z<-Xs5<&||YB>9C*jd^cHtCpg5J13CwLcbUrB~;E`w33&Ul5(b0pscN)Tf&MYi$qve +z^YYUMkQga1O}-tunF;|{O<3bZ1MTQ)%!Kw@9ksUf#RcR|sQ{|j@#u}K#^M_mN7h$I +zaL$Y|>xko*uxg(peoj>+vJ<}Dw|DdYl0IG^ffZ4)R8?r*ZJ{!?fRBnzuTvk3+tni& +zRdM%btjxo~ejH`go$GMdACHRA6F!qK7^cy@M@qZyCz7zrGIoek-;n +zuXJm`TTGJ%!buIGXy@7G`IyH~oZVn(K{R1_E+U!Ydx&Fb8R-W{)r*wIvkui>`f#le +z0%h?==2Yh|tcE{-eNG`CIL&4+k>l&&&Ka9nFbwmqUp-4Go(eC)` +z{Lev(&4;fmhXTEwUX;FGpSexvp|YS4r|QzBf%18TnQF``6$f~7OmvPKb}}tor>H1w +z6Q*F~I+UZDf98p(AFIeW(kqo%ocE9T+6&>uP1n&a#P>wNQGxbDjw@u&yg +zQWCgYJL>(V@QM7Z*O+IuMAih6F6E}FuU{Rbj=F2Y6Y{^-HWjduQi=KC8)mLwQCP2= +zX=0O8{I>V;a1Y(1z-~R=m`o@cxif +zIdksq@{criqti-_YaR?R1=P^P{3mk#&RW=>Tv*1KRkQOhZ)a}`euiPj#{dWW* +zVqR`hr6pZLF_kY3rP*)Gk$4mZDtZ-1mYw=%1Ny6_c4CjwisP-pv +zh<9}4`awC=6aD0LEzUDIm^@;f<(;5(JVwB)LW}UZQVr*;UTUyfvW0v*D-yO?sacmQ +zj1)459>y4>R!mz{61`2&G0LK2{_Z23kV_6qR&O*HGJmAGK$@JOzzlGoGMO|Kl~zpi!oM) +z7r%fYa+~6*ftulHT+*{=+#GGA#7W5`@Kp%}ih?o&V#TY8duSa#EJHD$ch12?v$+2v +z)3$%4RkilNzX@ow~OM>ggdoqIj!nbU12hiKbsA +z6A>#>(rb;&07Dk4wqN`>Ok1~<6ucOJkL>P3yl8=hnf6ZUqlY_66cx2?3DkB+AzHgc +z58KLz7{-^i-9NXA-}>Ol;AY1orGup1vOAW|HRO +zeD<^&IvIq+cQ#>rX@{b8y?iJG`6hzo+t%P!N)SX_>m}88*8|XggSp}3s|2WEmKr5o +z(~a`?+!X>&s)rRt{JE3xw(&TI4-gQXTm +zvJ2CmhgcBRgXO5ALYGRP?2@b|1ny)O8$@-)JqBy`a77;I0IwE~Xgy}tHA~4?+-#{r +z++Le)&Mvg$4Tk2o(9b_pK=A7;ZRE=#Z8v8Z{rKz4 +zF?f0P{539D!b?jz7Wf^s+b%8~kF+zUGk@D9Ai}kQv~L%XdwcuKIYnY@xmaZPOn}J! +z;sYv|eg135P74!6sRnIxO}I=}_$fqc9vX8S>ao*dLOhMrN9S&;RdmiZcEsu8cwCWr +z2+jlNKK^h>WX@Z7Vo_i6KmIms!NEsGj21^miwFKKPlu +zi+b_L`ZeCTC}k36I`UyDN>1fiHBz?SRM?|)kSyMbCzreH-YaLhN2(J^+w1Hf8`>h# +z1Mm5g3HgLOm@c&yX5-bwJnbOJn|;SoPAE3+WsDmH@(i!5{LT#bp0HqkriH2sj;1HW +z^$1Our2S!^-aubOGGzUn5&Y=pW)DA^jE~q!J?^+V#<-+Oj9++*Cz+os3f9WT?SBY%B#H;ug}K55 +zkmfcb<#>pDH)RX0_~S0nCDn^G^^A>o3!JT?kp$t3#Lcy{S^vyIEY>dv&ho^q<~Za> +zd}Y(-31N-kCEe2Hyv|P9#J>9@J7OXSmXa2Y+y7yW6xJH0R*ma35p(UUo$;l}{nqkV +z@5<-bVN{#vZj9mI3QNK{{|*Ih>HfhzqBC!PV3gMRRZHBS!`%$U+#RW(`jtoy<=H|Y4 +zuVJ0yC9()X^V`L;Q;!>+de%mNkkfHY7`RRPUQNbV5<`^)LINKmMtt}4D1PeVG$;-~ +z(E*dMza1Q7<^c;3k#PwJ)feJc<-PQ^_fOPLP2#h(N#p +zY2q^C;k3<92}J$Z)|^Mq^M?be;%3_t;XmMS;N-qdncK9hPgyg!O|H%L)04@hFS;YfXqp@8t$IP>J4FG$gD&nTLEV=E +zKMLRR_Z5z-NZrzi)Zl(HXvZ+7MgiIZ?Qo4bc$SS%RMq6o^`C>{8=$8@Z$scq+Hx{uB?`Nq63O&h)0m8ho2?`z#5p-C8EF_<=%@69b^ +zkEf?X{`yIr&jG=c9P;5ioAO;BV7}nEZ>xo&d~-`-L%ypBcjcxLIU5ETqbYo*WBmK^ +zOW_xVFE!#a727v;7{0JY_A0SnXK{T?H#$r({KMmHO1BRv+#molq!E#A#F!}ltTHQY +zf}ClrEyqW~wI$j68dy<$oZ^6aB)Cf^VD;OuVu5uM=)L^Zg`=ogyhBaVZNh-NsrL(; +zNAB2cBU6$@Z9tkF6OZ0Lk73L{&oXg$)rfuB?b}A`&BqsI_+$H~O}i3t3o8s-1U1x- +z-xRA^)>Yi(S8FvweA~#oLpK^ip=oi!9tXdk^exxa$o$q=M(7(~H`Z`=uY+membf42 +zP3L3!oL8Z`_~YQ0n<$qg@nvLcg+Qljk3#jb=z{Bt#mjjRlzaU=bV${$AWz=j=LX)A +zMc~4Hw9DwUa}oJ>G8QHTIDloB-h-qsXJBU&WiE{?uodS0iNm-K#dA3`mDG>b +z?~5u!dmS|nENr30oHU3p*yB9Kn$lW5x;Gwb%L1uq@smbS%}kcOgz0P=yEBglk$Aa~ +z6od(M+TTb8a+PO)`vGeC%`a7CF +zx3?=XaO#KnTw&2zjhubx8VZtDAr3i5NTN@^!DFkDlc6FcepcwRVV}J^Ph0#?$>D16 +z%7&2_H}0h0GnG#XON5K~N_o_LS9Vw(9jX)?JAa&*UO+-5qo}W;J>2AjPk77gP2>_~ +zC+YG%&b3$J7M+3A%^LV&uO<1tlXps8mEo!H=XUvTj&9%1wb3uc4>7%!;kBI-ABr<(68)}!Vd%bl-8Q=u?L7$ +zdLU?wogP;7CO((G){$fSRa~l4Bo^l)f5^h8AGWH`tdH@>}G +z-cswVyxA0F7~O<>Ebda%5O~+9P1`nxOSJ1-J%37u+_2s&BNx^6P#KSbWHx8ckFQBT +z3qhasffTfk(V)>i3Y>GevP(Zle08qHuLmHvAl)h*9`#IKDD|b|DDTy%mz}nEt;uG| +zoY9BPTm>q8hQ#$0<`L+vEQ5g6k?IiCqI4~yj1h+ZlGU2rNO3bKbY9|yq=}5rK&>~e +z#h7BcO4%8yo+hX0RXm|l{I$a!dV#Y}diNhnJTH#d&$e{A`7=XNf+hRv4`tC^DUXC! +zS0Z{ux-84WB5~@$8y-@>dlAGkYiBd?2k9<9fUBy>_odmIK@l6t;nnk2TH;mvA=Yn8 +zKZ}yNat}bNf)tLHGWz}ent*>DV#lm)kW`C|k&5)GrSnGiKn+1=4NhTp_#^4O-Z$!3 +zxNk1168b3@^&Q^Y?rhj`vyztaX0kxN0g`cN#Zw0gQKaKw9N~8|i5bg4L3J&X&U3S| +zDjOQ7bdSvhm&GMpWlIu5`Y^#1(#Yx76=7<`3NA6$dq9ECZX8Wy9E5Y)<0PXF9oExJ!IuJ1gaP(E#YwxpG=k%=iWPYi9mxX;Un&OqL|dyVKN?X}jACQn@}=;U$alh35=8QLoSwQr@NPM3eqi$+GhE +zDtq^(E|U;iUdGXpxc2O|i=6v_SiP@HTi|g=$!@+oXP?Hlu|r^VTS2t(44zL|!kgB) +zK)6urTy~s3RO0F?a-ojSA{<43|4xo*rt;{OZ~O=`2AGOfly1vBH=46jUQX?Th|KZz +zqKvrVNu0o(UY_gzAJc^edpMb7WtO+rgMY>q3rw-=k##+!6Hb*kLDugqh8kqbEz*mE +zzCm9LrTBvTgt`@r8a_m(=P0Ovn{qkuN7UqAGgLxso~z0Y93T2IJp +zI&&FqKzD18o-{ii<=yTk2IKfReCda;ss-a!p5C`N9~D{Si?f^iAtE($<`b#vDN2(9 +z9v3%#!QopIa9}3xg9H&MvQczgFJ>;xh4m^(Cqo|Sah$D6-cdg0C%GiFEzVFqe%~^z +z8F}pY{U#rp$c~Nr;jkTvHJH|TU^LUFpCltPU8X9Kp^7Bj+s9e11RPj=*(S@+b)z}J)bi3(bV>*VCCv;X=wt|r7xL? +zm-hOjBj3fkg;IvOF;a@{u&qG-eefE78$cEY +z8t3akD4D9~tQRo!{f?mYeX*(oAmp2qV^NqENU4L|Y|Q^pA(% +z@$rDm5iq^Y^K-XpzC>MAjPI0s$K5$KzlAYWLc#RN +z`X-0hU|godJ2}}m=shMX=Xd_~eRnU*FuW^s5)3Y{2F5y&3sM$=bEHea*Jc=+?XVe~E_9p^bLUz*ONi@1?&^Q0R*87l8_`mgU&$Fb^-6vF*u%%CVhq$lgzGUW +zziH?&sVaj9rkS(ZFjF17RDA@cj3d`Oh(LfIC^!=)X_4`oJc^F(7}@xkIMHuNw|{5B +zzF&rbw!*Z_;t~IcvZV4D7J+mHD4tX97mEpm_#Bx)pt-sOdqIiP!ZPft6C5P`KuPur +z+m`tbOUq#;I*dcCNo$A)#BIo%E?)UqNJ*VNu(qAWS}TZYWMxnaOcBKH8U(6^;(hs4 +zj_0IWz-Pglo`_mnQM^bY;KO_-8~oOtU50VpyUkWk&0M*5jdac4xi@=YJV)|68AD!* +zE3VGhu`l$jS1srq*Jp+r*tQ2nL@IJecnu0GmjiM`i)o!?ujWcacQTo(H;$nz%N_VsmznQiXZNEttlqz?@P;B#5Y9u$t(10j`VyOS!#MfuZO +zH$d+<*DgC8XAW3!UcM)C75rSfcwc_*XS2$7)}%k8x{0ukVPrI12S=IpoE&uZ=tUY +zzLc@K#+_|JH6N2nkqXElc@iin#%>&Dn}6R+`V|ft=W9bM!^58z_ogP}QNdj~EYdXa +zi0uaF<#Eb5ySoO_L{*gu;hb#*p4+2#4Zed6usW|jNr&9?W)ZMxUc|>|HuF{G%iZ7a +zemnBnT@LM8y_;g0ZYhRdJT%JMkM$joGf`l}PDyrd0iWFj(=9h*FoMUW;aVV0Nq1hO^>Fl@`(B{_cR;(Dl+3mbr +zf-=Wv77%g6P|!L;oH-MQ3`$bl+EBTf2bmB47W^Z9`i|g2eW1s-UsKgST)PQefQLKZ +zK+=jx%XQsKxLm{l>~E`YLzK1-3oy!@u~C5KsY-D;97ij-UXEn#Fc +zy#r+wf{3~#yn2JO0LqbeJX;*e>SY1MK962{RIf5;LrLllfvLOu9Y2HJIL7BmIgX-e +z^us8&zcibDdV~mnjEC+jdq?no^t{XhK6m{AsV#Y*N?AWURK6i`ySHwKW3^0fV}pry +zgDQy4l)G%7L#Wd~x5cxAFjJhqFAZ5glF{*j^UUP=lFa-98APX8(JGI_3&>7ynoIQ6 +z88!ECaHQbA61e%$QGkto=iS+cex-GeDcr6cW@(zW>9A{czTA4&_{QYjX*jCe*SbaT +zA59veAIh)X#YaBc%nC +zLL)^c(YPa)^+v(Cy-R9|q7Z+^iBQU8+dF%&xkZ>Vg|$!hVkp6_sxsm9;D;ZB}Wzd>Z6x_IEi@*ExTEy1}sWcwbP7kG2!{mdSR&C54W`Zz4- +zlFI~anQn*jB;v+O6lHb&Xq=#7|c)KZ$(yG +znT7X*31t~)>95nY_&-LfyMHV~g_kCD)xFB~KK4i9;AZ#tJWOmJ`RX+q!=F$rjk^mq +zXHfUqjP?G!Vzz*YGVSMbrRtH8Q>>qP;7vXJ?k(NsU|VJ1KNd{&bL8-$`?;Ii!f{gzr{` +zR9b<;(RtaDX8$XNgdy;}+@pf9w!OC;*Kw+xHcJ>|D2Lj^cRCE}95f|lfXI_h2gr%qmK +z>Vq~dOSjtRSP34b5~@cTf7PO7H(M?UexT`)D-POuZvQ&vkfPFD&Spp{-ID=z6<5)U +z;XAzd1%6~Dsn5F=#U@SFdRz=GhXyqxic*x}B-xkZOT6*U%gfhi&dAbY@FhTq>|* +zq7J;F`-$LLOg)LGSwit$#Euu+q6^M^UUj0$Vnv>?_oTJbiZXa)t#Ma}f6d$Bm?>Ks +z9+7<;x9;obc5zRuTD4@zhH~h~$(zOOd15TGlMd`M<{4Bij;!R;#&OXyIj$S8X8@6Nmq{z#Ku{R>?tAzKP`pG^##iJ#U*x;4~*jvx}AM_ +z;f)w#2JB`EROQ$On7@i2WN^CvR= +zj)&j{lFn$t;a#y-Fil}|@r`m{5|_XnBlAP49vO$+)=$fFW!!;U +zLci4Y<=$?3=g8c6c$Qm1yt7vP?Q+=6lFXZDoo20SRo~aN&Nf3JF}l}>{Xd{7m@lIh +zzC5#aK(UsCN)$OpQ~L(Ey884MmRp;g+w^{P*Nu3!nYCqg&HkaLEO(Bg{6Ol50!kJB_nFhL%vdzS=?D+Y&J$zh`8xLKiIhK?- +z&Y%)*=9MHk&u(}iaOAu~><(AL5Ai`x`dvOVHQPJS3)!y5_wzWn +z`a4abl6JGgHyV>%rePAtBe!4=+6?UMuk$vN?6f#;qVQ2&?d1+`hBd0Jau*hyMEDy5 +zZTOJ&0$q#5pA)0RREkQd*2?d9|M(~ok6Nf;3Pj^VcJYC6vgO}1hRfprZhkVbGO`` +z7}bolUeU{ay!I(+o)d-i?Mb!_tNP?Q!R|4f$t$useYBxU^xz6|`T}(m<mk$@WEr8{?^V}Vmzhv!K?%yE=C_zBeQ+>ls6Fgvgb=BCTMRZf1RH+kJk +z%4gagWozx9N475A_5rAek~-TSDe+*U&*zdmId-pQ$?`GB#}nZWI2n|x`4CkSby17S +z(8@q@U3&qqE(Sh!N;&jI1(Fc_Vb?+S;Ax +z_aXxyd&!nPe1H!rl8ruwe=4fT7`V_=z9)rqLB1WbduMumwaegapJRfa(&Tw9BIP%A +zWFM9y%8`v51U(hjc#zqM;N>IwRj)jZ{VhsqlH?^jK8zKB^nfmn1O( +zf<&>j-IP<)68We=I=a&`On*62;saNkm_(hx3ytutgYm=8mB0u}H)uexN8=g)7f6=? +zs|M)BFNCqy!KRmvb9Uw6HNI4J?zD?5oL)oUuWGP9ASr!pC9-+Hewn2pO|Y?O(tRE0 +znH`$#Y#E6ezGF0mq8lNJ4qLds_PR!RAzKFj+^yZ416;3O*5sF-n{| +zRXKNY!}~;}>IX!$a9&d|?wh&{M1z5 +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 +zUZI; +zT%BAQQ?lAY1Z2P9CB*;AzCix4&PE6lRyEo4a{VF?ouqj6(@gFQ +z2oqkor~h<+f8cTK#rxgPIIb;r1`7vqD^G>@DQQM)$HYp-grz87H?QD{GDHk3X|2kK +zh9B-f8O}el*`qiJXxZleffX(Oo+vtPFs$LEhpJXH)A(qmdF +zo9y8FwY5}*-BoDA`ES&j$_Ln4K!5C(XG&aUtUYp=p*kspTW +zFUw1vA-2828~OUx*_S2x1%*#^OnJW#T~^N*=M4MG+`4q%PFdnJYkQ6N_j@)Pj8GHZ +z@}-}W1DR`k?^Hte*_Q)-Q373K@+){_AUtcZIR#6PI0L*q9`=5r#@2zKi{yJ$p6#{r +z2H)vYb%x^=&C%;f{BD?Ks6R!ekcZWhj(U(3PgsyBoOIfTol{6`-D&^$k@)T`b<=|m +zxOu4DxgIUiF>%Q^Lm`G)zON>{LtK5>tyGqg8JAX;E-75lrEDU>;cE4kHUYi_-LJaj +z_%k%SwLmuKVsDQ@;X$khp?-1umgYUzF|EzLgf=ULX3!^}sWIQ_C)XmBNY8c|BV*t@ +za0ik#Edx*4tFk(b7u)J7Ux1- +zUDYmhh$N9Vq`SSDv|LKs#Mg-4SZN*+=?c`a4!-;BpeubH_+O2xlC~~@L?g^LLb5!cL|-wV2()GHLb^RPPlrdqZB_Y?lr+B()STjAY=<2(cLrU2GW*?3SN(>5LEk9A~Ek6Vqq+;2jfl +zf4;c>K>~f!i9KJ4Z=XBR<){If>Viv111?<}m@Byo(iwoP3D^qE*cWZLk5P{}fm{X< +zHsmGSspjB?%slf{%Ia$IFnV_GreoD}L^o{1I(rD?5e|jG3kSq*76=$*GGr&=S; +zo;`tkVsu%59>Mpv6u2S!hqL>DYqN>JzZHGMjq=MR{wzaaf*Itq0VHSqJj9PLO>&TB +z2M9HxMag=_t=$JkAC6L5Mg)zs8{fFiLK-izxpNq;Y9iM#|-jX +z{^hcM=Td4y%0MVL(aFuvc#q%y&BxiZMUUzmyRsbTWiUO5HcNU|au5j2C*B@#9lXSdhGv^F7PYL@_lJH$9n-NqYz945GbU#`!qF5UH{a@qA +zy9b#+2DX4B^|lL!WCs|!1R!b=hX&hyS3qrDp!;`pGRmdDyAcoVE8_2apYUVA?}M~_ +zN!MQAz{w^4M8J>8A@00xzI?Mh>EgcYJBBi5`(*LcnFg-Rm&>&pJA0D-bxpvahCrK% +zY7C>-}^iVKzfZiTp0h2q>I1 +z>(6tJ$+Wb}*5YhO(R2Tg&3*#qC^t!n&|`w$cyE-J=hw3L$!CalcLzKpjUlT)MvzAh +z$mk15NB}wFf3{7a9{5_tqjO)|@yG}Up==|v=f;2mOh?QgN)?8~02UDJQx3KDff~@% +zoW7E4q~&4z(_dTn5#47XeAiDl3N91s&JFY-Gw3HZSO$plOB3ajQGR_hO`15L8klLs +zp6>EXNd)JOc; +z%sAUiljxVcYFT>UiPVhWuQU++J=5R^dJLL=0D9wFBP3VsuL^Zt&|f +z0H%2ad`ZuJy77UG`rBXb2ig4`r~yH;23+Rqzz^T +z0dkQvV| +ze&6Ke9?1U!_9V`>6kTT@n-WHLv|j&~jIkh!{+Tm-wyv4w+Dl^=nSTGIYLMkIK-WuJo49d4BBlPVrpR+fNWO64G2}$fdR0&HQ^Uy6vdvgzy5LLX}=4I +z>U)3H=A^GWX?41fKQriu+(DGJyHCEXKS@zFCDLaY0Q=MVGhBp?5`THi)>U~!rS0!m +zMv>jg*!Yx-U!2WFHYfd^9c*^6IoHPGazy@2Lv8-QbK*8q*I2GG(Df$~gwpK-vypuY +z@fYBm?ha0Nx8>5CUG*o2cxrTXl($Sk%wZ4=Er>z35C|inx*9NO>kN!E-Vmgm{OAB) +zC=>w~0=4&DzN+cOcYfJPKNFgecP7a);$_Y{{YClpZ{5%K5TvAmg!JG$htS;)Tba=% +zuYHFB*gvlbBAJ}s3+w=97P}qC082VsC +z_IILKUta|w!ND>0tq|m(836Oa3@;Q&0KHM@OeAv9h#5c=u)csVTo{PI3oUcfCxk-%S@s8x^2-zA +znr*CYwNk5N0Eynuj7G6pX=Zk8#jSz6zuF^+&CfR~{Lq-OmnerPk!d(3?A0Xc6K +z&Rc_Tt=1FivI}<%Q>yjWAnm2F3;-BB7GO{Ypz|*(Lkb2}C=6AV0R!mnWt0nmwlRc^ +zFZ&wx5BxT|>x2uxC$z*#=Vx2?2aEE{7Dw|j1wWf+0`U%_3q2;`pa8`zOuWKtp%18yA8(x +z^AJ-AMCssl(ME?_g=#Y*05e4XB;&UHgs&_KAp5&1F7cfCp}*mK|0Eh&ZGZktVb`sQ +zZm@O0$pvn+24DivF9R6D6mB)hCI>FSa)?9%7ohJ(Yuwpr*IW@D{Q1Sf^oRfWoI{^< +z(&qdjzPV9;NuPc)%FiE&`13^p=5zm{hu*dIsmuZAY&p*6;_NVFNA>llzY*CjMGxK? +zn=%u58392~+A3*xzY&1Se=OUklNr;IV&2Z7rycr~;8nybzheLT%~SUGKNNh?nq6~6 +zj36wy&<4~7WCN-dgEIix1Z4HdpsYMl1KPWSL{uZMm_uwHTM`~U%8ffE_gN>mH%E`p +zr|+j7%a`3Jdp96IYu3+o2f7YPxl2uC#~`Z+`o?>`UVd>XF_0Y2{(-Ei=$8A!mnwpM +z6n)JAjY2zf>@ZmYLHUkl#|mV`1xPy_`lgf450`r158w6U&34zf$1YQF(5IWnz>8Ch +ztahNs4z23Cv80P4OhvSDCujGs3ayjrlpL#nnuxDF$MUHG&J>e$o0Gl{_CU?OzZ&}tRY{2LVBJ7f0q+`Nko4n2 +zQ30kRiv$utX`u7>#74`Rx{+<&XN@}w%zgaoIN}#h`mRIWIT3wi6Mv>P-_OzQ`&0pC +zNCH_4e}Z${C4W~&h2%{}Hb1Q`=OBBx&bl}ZU^o4$6Y(cxUE^TZE_7LTjeFyOdLqyV##1Scd*Ct~kDZQxO0!Q)r=3imB1_Z_ETYIDq +z$8Cub&oq=en}%#sR!6@Xyi@x6%x*{a$T%R_LYJ9{y3FyZEs~TSn~`q~Kz0C7n$)n` +z$-U3X|Juxl{#2OEzr%%SMsyT77$|}U4hJ3r1Mnsy3qc6V$^zqG$^$UsvKLv;pwAvh +zShDh;UBIP6-*LE}KAq7e*7)Z$6y}TY%Vq|d%p_A9(Do1RTA%4tmQBLhge(JD1G3NR +zj1Nr%uv>n<7ugj!>m3KiyF!-fh>7XV;b6N^d(OZETwsVBp) +zKWLO+ri73Y@t5)%q^}cjIJsRpm5|qfyhv^iJv#&VyiWgMVD)uehwPqlklU}2r6$`G +zAh{hbwI(2!;B!*8_Z^dyZgg_*J#^JIBT45`U|27*<}r|(Y6p7iP`m&^5)eEni3BP@ +zPdqv3Mp{~M-hRgb0FHR-UtLbR)X81yJ`QH?LX}cv^U|Bcq1{3q*|U5;-9P=9lm6~- +z??3XX8^%XCy2gwFOc>~~Lty|_xC8@;B=#ovHQGwG;X>m!1|S+ewW%qJAEqe;R|h#Yz8j{4+O?A47E5qR86DfB}p;4j{OJ7Yf{d(Kta) +zEJjnQPP^qN<6;%yklCeZ)x{^M&{NIU&R8E7kJ*{N{j$}!jjK2m +z``6FK*m!O#2YT*M7=VYf!2cf#1vvnm7@ZN2&Ox6$p5TRJk`_w(`GZT(NoA)w`Kdd6 +zh3zj6caf7Gath)D^GO4Ko|!&L?7q@%02wL3a=Qak?yf;Tpi8WstaKac01E|X)-r!$1N)=!~ +z!Vyngeb6tPAasJsMz_}s8 +z4qwjlbjW_AI*ko9)lhlzug|wOI-$L(#A +zl>yU(4}}4gAcMqyYV^iN8wSiMR}mHkPVNOK*C}b4q$^yB-haoU6{(r%FF4$@PKmg4+zcOm*O~k2Eel_E +z=nV@__5fbF_P$nge8)*|b<&-Qf!9xzpG*7O^`jcN+B{Wh;=t1Bhl?_yjNleYtwCG& +zXZ3ftIOzxHZ+y6Te*U2#Wm_v?aRZN)A*>s>fb~M(uuH}TjBFT6K{lZM3y$p$J??M| +z5(He~qzfH75%l}(=AZBnUt0UB4G%b +z8Tg}+lba)Hj*~73LephRn~^etfn2T~z)xcaejg*4Ww=U$d~u1kXD3n<2j-UGLqP$My@Cv!sa(?&d8h1{F0@ZYSSIexOkF8C*uHnrNTC +zWWnHA=j3k78~D@b@An)o>T$p9ybrR%CkGxFgEN4%`01dE)_3!?bHgqBBUY@vGw#d%#mP12 +zOYPNvUca=zQ+DbgP$*vvK$;{l)t8%{UWdrtKZ^<;8;gOmAC)W{fO-;ASNejiJDqfW +zvB%7CFdBLqpbSWCLy!Q}+Gm^;l!lRKnZXvrF8fx@DR3t} +zT@~oh2%x+<^gE+<$n6%J?r+XcoPRDBd4i; +zOUppd9Fzeh*T2gpHe&KZDP}MVuC!m;007QicVDN&{l-ac`Q!gHi9Mg&FQxM*lZKGt +z`b#$gnlE?kheG8Uwi>~c5}S)X4HvOgc%7xGvFj2OUGn4P?vZp)vB%1AA*p^0B!B@I +z-3`GANE{Q2#_-~CD2pI3NUw~I*qvWG(jSfoIHx;&+`lBfwf_Jg$?XDr064hVZBZoD2n!K}q$P-+Wczi2uK0Az=Kapqtg)es0U5whYyi!H +z7to=&4`vBFz^J%VZTHC+M+STLc*Xe}AL??_Pkp)V{V(is_<7WVzDU0WfxFCO=|Mq> +zE!e5(Mn)Bxwo +ze7UnPB70GX?gc$rd{P|al8i%1I~IKUSb&o}N#=0!rN92aww+DI9v{PnGgm4!VGQgg +z14=?elmOHx0eFVOUZP({%$4e#(|)Z6ynfTezAyJPU;2-qVaUrb{-=lhrhNV+_X~7+ +zC4{uU&kR}S=9uO8{Gw6fnxs?ZfGr^}h&s>W1$&lgbO+8K_@mAdt8hJPAU_cSm5?^ +zLIWl_9fAbFUWvGz!*zB;IE>0l6WnFQoW0J8>S8x~Az!0X;^R-O55TP?VM90=-TQzYbhiRCCtKPT5G03d0%6Ll?hELcB2;p@7VTi+{yjam-}1) +zQGK}to^l7eT*IHAN&HD11D0V7thnbFJxDhq`Nfyj$D#n9M@rxCJJ(_&o*JW`tp~kb +za{HzD4C&Vh-&Z=(&Ts0Ug>3M1gYG-Gh7|D$4>-K<*$ND#|&4V%guf>-m$7ajd2y@CGm{9dAzK +zNf+*aseuN-fA8J!h%fgsC$}LL<)_Se|7^m~UH~)*4grozKQQ4xzm7?|H5m(kKo!p* +z5)PtJ$vC&)1^EnwJtw>)B$zt}c9h+c1`LNDiV?6?(k@B3t{&7A4J3d_c(ffn&z!g4 +zdjhgCG34Fu<38l1^}g%Jx3A1tfIf@=pr`;&&*>xdkYIb!jdlesfdNoqFR=DfU<{b(4j1H(=of=B055E9fgunSi{aWkp{xWdOGoPpoF`N>*z@-{ylc-! +z>dR|ybaL->a!+K(2xPea(xL!|A;+yY=MpwSAt@?x +zKrsLp1OUw%gI3%z`GMb!E)b~xKfjg4Mj>1*j%#Vh%1WWKJn%A(oI6cKnl;$-_eWg3 +z<5|AYw(A~W?m~xd@TGWeq+g#zFf8&9w#d#{15kJWZ@L8kDZ0pB;6iy>FpT4VlK2to +z)gZp@{SMNsu?YeiJSJjDI=Ija0$;w5YwLhe2&<_aRbEg*yz#9bLGN +zF08r&%1hGx+aoFqqyr-&a47gmyyuCy{C7F&=LD&}M~bNgF2NKgKk&O=p(lzya~Deg +z4~4MG3S4J*=5c9rC>A*WF9X +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 +zWs*K%X1_EzgalD%%*Ls|`9T(Nhlkb^RhU93 +zMCGxE;dge?`PB1$lSFX7MdEwQR$Y6*?EE9+bwbA$qV2*B^~73Qaj{sk&9+LqaWwTC +zy{k>E7P>67jNu)CYIY)crZsfZpFS#Hz$aZQ^9DcqhG^^-FzI;WZ?2rXSrcI{(!6&ja +z{v!B`?7;E+KfLtZnL_VT5a2c{n+YWmLKCWq?rut_t2+>*%91>425|HWbtTSewEp7dptlvfGY7(FE9zz%y3DYTnNg7ljcPq+sK^lslp&!%le8tN%q +zI6I-)jq2kGz3ZW+FF$0|6&(Y7u5#iMGy4VD+kvp9#QyYIJ#%JHF@dyyv+V(iL+Mwv +z8T?-8`Tpwi@X}Y72wm*ZlA`PS*?NCX71bvlNzaC@bUn8&*z}|Cnl_=YAMw=n{l44& +zhKH8Ee6i4bg+ikn{|-VPk*SmD-PxF)dFx@B?i+1A3&H@7d-~=Ui9ZWses7eHr(VFt +zeJT%Kj8|C^q%6{Cvc1Tp#irt@u!h;9DJnY1KomevJOvz3}Cf6e=W&CqeT+*M9d-|r9(bjcTZoqU1ZUQ|i +zII3&YR(iJXpltRG$`{S0edVy0DEEgqfp-mXXQApm8ho*8^6`S7VJuI%_e`LKb1&ug +zOAxw*5-z}?y%OKE&dCgu5cC>$H|UpOxBNKXlXpSP!%NSdVDM_edq5{ZW{$w3LST_F +z)yExgfZsXfEJgjH0r=>B2cNz2 +zq~~sFDOA0O3kkkl({PsH`$$WHOd>Y*MSCWE+d`R4AaPB=HWL3+iYfRqdkpEPCa(KY +zyr(%|Jsv*n>~c9~qIHbK{V5 +z*zXUx@8Gj*Bz=rv1J}_(BGNDsNksPq#=pd@^4AleyLDS3>RT`d0H7cy;61=0UF$Xm +zQoyX~lrNe?`^smtIsZuTa?l%rUlg+5L&Xm&j^nEnHl1UpA0rl|B6+fBaw9FKJwFq` +zgvn5n4VYwNz2H}d{`kXKcis+u;NWw@n2vHjAI5kUFkzI@<%NfYg*>W{IE2!9vuM8a +z0iwJ1faj4`*B!uTj(_Ig!`TdF+(Wqk0z0=LH}j0r+0*ISwiD<3N&0!t;BSShZ$Vew +zo%GzT>x8b9p?GIEtxr6QB&wG!!K*B1l(_;BDwXun|13UppBn_%b2uI0E$0~aW5X6C +z{riEXKR3{)&)7$XQLrD+K$BrV1I{<+eftN|T;hLd;hA>-(z6#~?i-+g3f?L)q3Ak( +z9-UvFQFX*pO6Sg`>Gu2S-QJkJcSNhCFPL=0zV64d#6648I7s57LS>^I=g2uClj|Ym +z(YtF;()A~yD^Ggv)`CSz7E}TNkaQJ+{&Ps@nvHaC-cI@K=~OJ9PupWp72**~Fg|wo +zL1%pA)E92=E_D6-!&SArSD5&bV1X%RpbKXDJhMCoO4tKZp}wgZKV>G2g6; +z8|}=i2j6?hS@m)8CLA9S92`U!j=On3c>i#inj@A{I(s@zcRv)&{C#!}47xBb1-s(7 +zXKx;VFEK*gz2wYN&_{(1D@4~=$fJDTEV?&s!^PvtG4>n<{1WZQGmgx&K*mW{DZ6B0erS9aIA2k@N|csg{;7 +z;kf05Yirnh$Nj{bS`uPwvQ_8-z7AY=(zCb3ie2TxzP@`6Rv5#doG70)4d)y^J9j7O +zMFOrob@d$uT_aI&29T)gmB1S?j_6#siLUjVsa!mtszVpkeBYx9OZli!1$_3-#Vb~= +zc>d0z?4UDZe5-EOGTmC}52Kn9I4Xy8(G&cgA +z?P77y_4ZP^a2}C~b#!gqO1z`95K_QoiJEuR&%N!6rj29bLi$eqoCRk53^*ZWu1~MG +zrKtjG0X?MsnT+90;04S+Z{pH#_Oxz(P`NJsyBD8c;m7nw;0M5YK*d>X +z#~w~}_g-2beiGM{k6g-xBM+tV)_a0%CZoq2Fdn^U +z?usA2Y~!5;m5jePaqbj}Zvm$zCvwt6_>}cOMfhnk07>*&{d>*$JJO{d-qT;}*_%_> +zyXKv2Dv2B-_!QFXfXZL;N<->*Dq9_6#9(e}&>bZ^?0aXx`&gG-&$4_BfgH?HG%9 +z7}La?5;sWPATzpm?51Vq(|Bd2)E&1Ruc91{exVQ&GX!6~Wzoy#6{5~RoIF45!H3Lv +zw}IzbUtE4)OuuEg_fr36oHJ+GZNQs-Pe1-@=ia=;fBQkFEfM;;q#sLKJg&lca~AXj +zk&0zAr%`ptLGDU`A^$uZt~;F3*RX86G;=5@Vq(_gFESoC0L=AT9m0^VM{XfSExhMuO+_qe;ti^ +zIrnV~PA$RXwHW^oICQN0p%4gHRZ>24DgwGUZx5n7b7y@YxZSW%pYg(7D~ny{vA``0 +zPpQJ}GT>blXasxVFcVKXhR*ey>Dst8*{-{RH=e!bo-qr5AM@1Pf(Io1PM}z8J53L* +zM1GvwV-BZe%ETaWq%bqon-CwldBI5|UNH32hDFDk*_REQm5Mdjz2bS +z(%b6itOriQm=SGmB{HFg$^~=qN+NWw-;Df%WU&qbM_{)39LH1t=o#Kt^1qm}c)A%s +z0FKSIyNQtUVb=42eixEfWr3 +zLd)Y%6YuOwj;~e7K6%dCd&YEA)G=oO0Do-S-164C+3mnN&i6~AP0duynMuX$8N^!K +z>DjT10!dQkz)|HDHBVjHyk)~sfAs6gOUf`l5B8Rfh5XrWKgeJLecnIwG5!I3|2QMJ}?q1?u-N8(sdrc2PZ2EuiiH2`If5Tk| +zoW7sLMbj3Z2KFOhdSUJuNLTg8EvI|iPC7SkOOCHD;0x!jyZ4Tx>?x%%gh3!UsBAszF2-Q^>@~K +z{oq))89(;mlFznoe<9!fZ(MLv1Jc(ezAI@?v5k4dHT*f}(#6tbk)$=Ck2<;cy?pI| +zo_y=(F;i8GjvE%7xD5E7(A)xzQ=CNA;`!itv^~Er2p|hS*9sME!OuY0ClUa_mCajX +zZ>gWP1~^U75N&EEGNGEP1#=0Nm(#I+QzGWMAdj0WanM_8XWjRwmMu*KUHIGSOAiHp +zU`A&4;WY7HS;zV^Skr>>HO#*8sphSDb&eYroOl@UV_|OG_>*t@i0Qd>UiG{kSoG6_%L8>gBRL`vcdL^X|lh}3Jf7tuL<9$)%g~7FkKKQEj59VE3d&Ts_s)c?j +z^rpbtpEmPlS^WDv04dMFE}_o|_s9R;yCo;C{rb5ld-D7<4ZaC1-`DLtMu>vl2V91y +zTVJ*IfdeY4FCVU-fBbZ?A1m0SqA(D6r6o)`{Uo}!Y^U|<=aZD!ZPjC`UC=*XOii&x&5uc%Qu!(qgPoV~`2@U}!zNL2NJ%4W5nhHg|a^~SnG5a2AnOoA0`s!2m +zgYM}w{%sU|sH>^>+D~H`E#gVG>_f)J`xyL%@8~-^pV$Wc(5Rueuj#D&Hw=Z +z+_G)&o9brlF*sAsmG?C6p>$F`RrBZIm6p)4A#e?jK7kMr2v>*7s5`rQ%7fRo?dbmV +z>?2DJ{ttM0-iKsZ_|yNjji3*GWY78=ZYMWI-#_ObQ-}BpW*-A8i_x|PLL7Jj_@Tk) +ze0kTNzwyDAE1S0$yI%VQ|D1c=M2xRl5a?4d8j(cl#5yJ(esnzOUbpd~f~?xwU+|B)$4v)aD)D9&m_EGH5+}@KDnbHR~ +zMZ3LbKXzE97g{nkTzZaYwg|Ffd9s%Lrk&dee5kao@rG;Txd!jQ&pl=y;`;=_Jw8h4(1vSWwcl>?s(K8Lc2fT>__oI0plTJJu3wi8$@G<04 +z!Ed($pM34chldxrR;YRv;fCP +ztTBPd=l*}4ebjt2`w4JP +zvD5-0NSE^X}+nl2p8Tm`mLehqCML2k6<;lpJ8q +zz$ae6>Cu~u`R?OGS2epvatC32!SC%U*>UH6L?%>Iy>K2=SDeJQo9@8xjSjnO3}}hR +zXm(LRG(^g%_97&cb0yN%1$sY0Y;H2uml<7%uglz@-ns4B96k6ivyPZA@nej0(%d-X +z5f0b`tRx`(+d-?}uzBT+!kRx2u9|zaXHI8>zOAuXk?BPF^eId_?nw4L`~+RwcY4h>xeU}pd`@&rva*{6d(dRGP_EZj`{At$mIf*phg~|V3c*KES +z22T*|q;xm3)sgnjj@P#yFx&5q3RlfNq6BAePk4i7j`n^zkSM9EWyU$D)3#&exEwfJPSh-#$L#aYAzV?;_S^1Z_d}0E-}Xp@ +zzF3PNV|8yQF~q#mN)9Tm>C^Eg94_&l#BrDSm#ZE6z}vU3%2|nZ<&49pVDo%_Nmsv;FV|>)$qZDdYUpgehRh7&*X9c}`n%VWA +z2ZI%_!MMF0c=sDOKfbBh?EvG90Ra4E))9vTzatSoTes{GX1(GJ@QiK$zLUKxhqkwX +zfOXL>cE)=t_d*<9HHjK8jGvnIT_TZ(OJfK^(kh_~-n`|BoP|BVpSf&;hkb{@KfKSQ +zDDxmrkbmHAgBy|EZ(`S5wm(sj_0V#B^d5Zzbs&1NMLE-z!o%TL3_eYW3v +zH?B9DB>ty>cf4uK%9X`#ha|=w0|5B*>?6)V`V}w_GbSCqoS83Qfs01ja^r0@KfQX; +zdvrOUXL~#7kz-D26^B*SL29N?pY7As0SRC31)&eeWVgLz>&lew|N9xs%0T~T*vA=z +zfiny^f=n?F0ykiG7ubfkZ++r`U4~l-{AtD!VN5T__=>@hSBee?k_eTSGX3IUgF^^-aC({rq!_S!MU6u_%#9Tbd5OxvxgMazft*csoH{;Nd +z$vy~t9iwvJ+WZm^GwT4JG`LZ4lZodp-2T*y-jFvG{Bg$N6V12;_=sVX$Kn~12$e*b +ze#R-3OsHYYzi%hn+MXo-M&KjykayLEn;tKAb7WwAcmeVt?)Y2CQ?1~eemq{g^MOaO +zaF}VQoyg2{&%njww65Kdv&V=5F^MKWibK>zN|_WX!>}}Kzi`QgJ_*aeb3T5;5C}{G +zz6>1u#~I7M5|ck4_$=&e;>RZlLb}bQYXlERoi)FA=Tqa_?J!<&<@Dv|JRJpmL4m6_ +zQsC950VKR|n1+*%rF3E)TW-38-quzy51|%=FB*3Bcq4uo#}WX*m9v+H<@j%jFM}$) +zk`kt$b`n!hI+os+RyP0Z7FyS=&oBxa(ClKo(A$MW98ooyh2=GY?w^?T`Nykz-eJWdSzLTEad;2o`7+>-{zW3J6Pmas}8`lf~;Eyv7FLUUVpidzxypjmh +zR|HHT+SVkV38cIKI$}LUUH<-wJ6Gr& +z1^q$5HsBV6tAsuD?j6q*B|LP0#&2dE=7r!$gU*5?YrWyt!a2Tu`cLX#r;UfmhBkEgaz}coW32m1BBIB?~KRGdHYAPxEKc>&NJhNAr-l@Z}PWV@#La#s$v^ehz$I;n45i +zv;CPh*LCbZptJ0Z1%5aE&?yEVHuyH!@r|17h +z`|aDF9Jj;|`+)?I#P6mrEeHDq!PZ$777jD@#ABGT;$-~ZC|hs4n>{O^q$w63F?@dlLUBEX%-@a)3GvhvK%6`KD +zAYcN5Pa-}Es<2R)DaRkh%oQgC#@5^K;gS3AXKQyS)sYg;s-MGza7mx_Kh5>$OEmX( +z&>72R&_cwVKUSiDFW3VHzeT#)d0yisJ6FGC)EfbQJ8f}DgpLLKpuuYxi=dt?NTO_F +z9dph(13Aa0o9>{uxuuWzjc*xzYkweq7{^|Ke7I=)Gu@X@U-~Tz2=kMQ$18T+{|ND( +z9%i4tf~jYmOlbip6xi!W6Fl|=_2DvV!lgjpDqjx|Cx>Uy9gor#@691{0deQ&H3*Ip +zG2n5qpJML%i+8PQ8ucAtr1LF2Rrc|gExbw>~?nSJ&OdRtoAa_e10 +z6MG^GbpqcO_N{mCC&Ul?nFNr;<&b +z$b?j+Un=dm0s`OJ-9l%qCuc)T-}%G}OZ*Oa2KXi7Z-3prX6N0-ZovH%ziwC>!gLU( +zx0&%KuzBo*F`P_HQ+LopW}a~hZ5uYR?XLTY_oT*83-Es!zj*idXUDb9pN;*J0RUV+ +zbxB0nJAkhWrWnvQWg@MM=Tcc!#bM7iQs3T_WBnJ<(%Z?d?iQSs(E!O{px~;4G|g6n +z-vYn$%9_?+vgM^oerMKEAM>ucxaqn5(tx{P +zGXQ`;RL`{TiptaC=(}s8T}QO~aSp1P%-QvGv8+&EhuGWG#&HiB_!H17#~v4_C!sTznnyz@!o*O7h*>xAByg?7 +zjfm$j+5N(Pr7w;pem41_GK|G$yaG56SVpkdR{DfZ1o9N>6hOn{K^}p1r96 +z9|zoI*eBn=>-lGj-EO1B0mA?Q-dQtkdc?dhpWCqDZHp@>md54!7X3&>r`EEuqmh>N +z8#7)%E}xhmAJN=zKoqgZ`LsBPj|iDj>xG#XE}_D5Vyy&h2R%Tru;(63TRyOB?Tb!D +z`012|C1A5moD94Y>_mc%H;XbZB}cftoN31%Ny8D#*z@#rY`^az;#_HfHUIz+eMv+? +zRNdXlyp-L*?+tzF;>I;QM)|mLfdh&G0Q_^&%Vy25sJlL5-ZGaS`WrI5b50;WxrVKG +z-_NecR}t^&Nkjw2@#RL;7@cx7I-l-@fw9~?riM$X4}}R~gE5sDum!kJa3|;iLz_R) +zxbA>m<@b|G3(N7C1srGCS-?pI8F@;ISF6A~R5`VQ*{7XC`J{<#x%*!BKD!$EDSdx8 +zLE86Ue4ug70h2uSfMWpbj(Wo!U+!)v&GFORf35KzS`M1Zv{Q~JTv@^1r=MlZUH8(u +zV<)|SY}n5c&?3hk=Mzih7_9ZeOb?e*F|sViF<>XKQgAQmA>esAxBJ6;H|&=NCV-zd +z%r_@*5^#{gu>`vPQNT2cn^ytoTgE%-u%*m6={S0tn%Q*Q-E{8UmF^;b%HVTO-1wnA +zYY(VoD+e3{SbNk3$4c%dp}O=HfNNT}v#qn4+WB*sbH=Gmm^YW!O`Cb*4}Yesr6ngG +zU?BL2J#sY5;eZInlyHQ}p$Or^G^v1gV4VWH!9&0^2J2}6;-q+0T?9P35_sbtWvq(Y+Q3!T5+HY0Y +z?)J{~{CfKL-tYb1@qHUbP19qet)i?0&H}azYyN{9evk<0N?@H;scZzcAgl-J +z2BOsZ>Ma@6(!yOnAF(Z)>ACbmD!Dud9({t$@F=QU%j_co+@r|7Uzs^Lzu3e6xUeL& +z@yW#S1z-3RMR(e&uKMb4s`cP=6L0<0RQqed`KXGxT~rMy74j$aH3(2fNvKV}=H(9? +zE_&Twg0d(@m8LpY!aOhuj00n!6Tp-rGlI_Ga0^sG$_loPT~<*`j=`*|sEUeVVEAwd +ztbOY2%>y9qKnLgwkRF_v{3>82&;m5e5-{nHhq`cwdb?Tq=}QQ9brOGVFVnBSP9>WI +zr(c9E@G@`**iV0DcDSKT{-e=|7C_WiT!LaabG+on^~4P`2Oqt=ZQWi(ZxZ3!YPA|F +zn&sMx{r+oIT}p~TLT!q*{eIMN)8qEx6Ni3$5#YvIVWT*iadjwA0WGUz!sdXSqG_Nk +zNLEzJ97F5X=+z8GTL6zbCVK=3f_ecT-~~OVlVeG(^hXa&6<>3N72D6FbL%HKuH;Fg)VU*vx0>EdE+n|3liB{a +znfT2s6qB`@jCWgfJs@!Rj^xnLVvqcjMnfrp=}WIO)Ksr6PDZ|sn1-@@&8z=$1mBmf +zda2{6Iu2B!xf#zz7Z4M{cW8*F=~-Hf6~tDjh1fEd98_%#!$o9eH{BOrKy>|Dvg4EV +zKk_J<(Xqqh`c+hS3w%dKp1mqL4zp(w+7UbB53^~8?!cgMCaA7H?_KL^t0%K +ziToZ2P*F%(Cc)$!(bcQC=yShE%(RKWx|iAg15|Rk8qdJ8CRhqkTM?H*sJol4^S9Er +z@l49;GzWkF49NrUV3x{=QRjoxLEwji{QHe_Bk{!^`(mQ86o6%8i(rTW4#oF=oX$B5 +zP(wOVz4&<7sp6!46|y;UukEF2DnZa2AhP8wT0XyuuF-L(UVEM7fdNYC48VuVBUr}C +zgVrdy!`+>9ZQDxw<_%Qx1xB8Go|(7$spM;oIRsR79+5|Y@2gsG-ZVdPI=e@J22%hP +zmxa`V`hwsR`g>n~D0TR2Y}Ipt)yKKaTv=pi5zZ0#omLEgFh0w`&z>Z{_YJzXZ6&s8 +z0~-u$6aydqJy+C5$ +z+mtg|fO<^7fYX!j9#wYTJU@C`n)}B>Ln(lc7w^;LCD&&iwQksozNZJ9Vt)!Gc&zs; +zlz?wXknfGF9g4c#pX+eBzhsD9U{QG&mng9CeFP2Dta#3&TRjF +z68rkeO~tV)PA|A+tKj58YoR;@eBlt$zICkFdJf_4E()_r2A}<3X7>*`f-egeSxM0s +zfqxa{shd*cnZ>@3rG|!5000J3sC5g`@B_w2Y`ETFCD2vMg_EWR&#SIAgzgnb@Wcbew$_?VC0b+q{wN)HJjE2S^SaBsU#*Di58D +zF7{V+YCsi4@Ha8v`?G6R?fVsdQI)HrFW$Ex(0}C%UykrNPKMjzI3&s+eYc!_>3G+^ +z%ijTBcZUkUt8g7~F%YWv4)6p63zM~NeILH&2xh57dTgB8w+EOzG)N(t#I9DI`MvBf +zco(%CeK7=2AV8$2o7lz;MAxsw8w`+(CrG^2PjcWLigWYW))D@e9Pm8wAj +z<c>?KRR(Pbf&FtBYvgTH4n4;g7aZ$>x|Hc!!z({bVO6sTRwQ0VM*4 +zs6rg{S%HTUp1&nEm0j%HI@Qp43P2>TP_&hayQ^|UvYx80)%S|n{enFFVL#_@Q&VZ+ +z$vd07pG9>G=}aR$j5BCIvyYawtB7shK($aLHyvkg +zaESTg5pwYa)qDY~S_S0YiQXtsr{PN7w0HY__?sg%uk58|^(vxkR^bhYFpDMThekN` +zt6ikW#wlkqPK>`6!&hg2e?Z^~ke`b1<}K-|((&tI?#34mVVNeSRGRGM6zTB^GUF2zl5)y!N$myZt_V +z;V{9@4q8_B66x(G*wKN@?WUB@kQx~!dGH{a@kvUV47O?2A}P-0fH=r*;4$DivF(Yk +z=Mu}=*dGz6$aFe!lt1&Ou&Vx-!cUrh{ezwL^MC2~xmDzG;HuiGq`-CeR7<}&*<-jP +z67ws@W|Yr@UIlCgS`H6oxx8MQqEVWAx{0n`P4mhg0_|id7kbCppg%IyeCFdALv51od3by0o&#^|4-q*VxDw$?M799UR<&YepfEQ_DV3p;%Tdnd +zFpDK@+d^#{wYA1wzfj_PWJ}}|f*uhpsZ*wi7>MBcw$y7wpbbARFXL_vNITm-xTeBt|MW#W?@*R7#g3r>fd +z%Ye&)bAe94rzqHtbs&a;rzwCh5+c~%PPl6Y!B{(iwl7sKts-PD9P7{nV2 +zIszXG;)_J^1_QYLeq3%hwrx|%=PAyo$i)-n;&HOmaZ0H)m0bt;kaO)$Y5(ZfVYyq|+oTnJ%d)WYdCIvQ*~ARg +zLWhRiy>NK^e!QU|o~9<;O@2InKc1!lF0Thqpb5j}LJSw)V1W1NegU;CDg~#S(yUam +zN+ry4nQEy-wNRv5EK)5LsN@Tn6~~gWt0uN()xY=p133I=86gfjD#%_`_ts4OL#mp& +zvoLp;J7?h#l!G*^DkN(E&x(=*J6jIgrSHxz +d7ulVv_YBb7lU3O68JDrPAE|?)})tN@Xd!mX^#urc&8-W~DL~ +zA3}(DSI?zd>5t=7SPZK&9IMk-CKECK0-k`U;cFR=)oIfwPriimM=%tA34>uqhGTWw +z^!XyhV$KJkAAAL7f)e5#tD6n_=o|X*H*J9*!w=xkaDO&l!&TI))8<%TW5QhB$+!uI +zgTK|W+?WyW{SEqf|1Ajfd@f__<&V_U0+&D*$rJDKckKge;Kf=4$g1yzV +zevDUKll89O?gaefnyh#KgdEOCSXb^j@flUKe{ri#JZG9=8hAeSq6{S0`EUiecg3+f +zZG9m_NO~Q(PhNvAI0l^=j@4OB}1yrjNeH7;BDt +zWHdpouphn+qu>SD3}=Ay(+tPz{s`+qUt^3l$7rZUrr_*cu7eQkS-Ka@9VD)=PTM~C +zrZ)2K)rVdOADP-OM$Xw7xcdj5kIxhq;`Ko_erfdtCwz5ab>P+hI^p +zWY@g<`siy+5ObN+++jY0EnHnEt*{XW2W2+i&GoiO7lwKDwcQT8Anwv1zHlea=$Fm1)sI(CEUl?<>-x#b&fv;*0N?0-z}1g&&lU_V`|9mi=Myc +zxnOMGv-X*JZYk~$*X38eNyO)Q1TIeW;kK-PSOZPLIl9{09^9bKRvHMhR+!J{={mSZ}p2hmSQ_*J4%V8!QhMz&m7p^a$ +z^Ea%@vFY>ojNl(%&1dX-i1m)OS<~8~eqN2^sc*ib`r1PMD;PT$d2{UC)jR*@Gu9lb +z#PdG}W6}C^o%kE#cV3(;%xkO*<7(I6Kmv;PpL@ss=bx5&QdZv>WApZ(=SkRq=Jo9H +zOi1N;&!1OGn0Nm8w?sI9tm#?k8t_@A=jET!Ez8mCw>Be<@qQT?o7${ltr-yHM8ALR +z<0f#uP6N-~fbUS(;DksQY(6ueUAPZdeT_-qzthm=y?;@6Kc`l%ek0_4e=O1|k)rjd +z?=Bb=`SPepAKywB^;;M_*%tm}?1`+Ztu!H^3Y4AhQ*Fos_PR7-If9s>KVyrpLRc&otyT#a6*bmJiTl_eC4Te}Daj`>Vh+L>zB}qp%5jZldfi5@( +zof(eRXh;0!C&y +zR;NuLeNP6lk6|zgJOl58r@(i`R&ei$V|Ci}(bpJbPta6h`nD1o*f5aCHPx{SnpBrx!(-~ +zAeN&3_0e}R82bo>`C!;xVZh`4g&u_3-dw&O(faiBSzn|gW=k0oKhE&S>*S8sr +zHOG|@#2VJJrnUVI;TbWkN}BNU`8hx484R&}n44$8Ir9G$ozGNy>fe|xlb-rFW<0o;&1KG1tZfhWVo&x~Ca(Fp;C|c= +zE#UKv#d*66Le5iSV>GU&e`A+sxy)(qSgdUi_F_-=W{*WO3WH~`z1;#sau|-z=iLcc +z=h#EcMc8&`I1c*sY7TQf1LjWc-hUnJ$#vvAu1H+V`n?6dS02h?1-gCU-ddhx4>7B- +zc}9xkpii&nFxOr%cWU?EUj7Z9tBW8{Tx;zR-tS$E^U!{*3O{4@le|2!uG*aDYKL@B +zy3Q76b)Mro3$86dyU%-Zfjz`6!0w!i@ses#^MQCh%`y{q#M6>ODD!(GJ)J6Em&9%fBZMfdA(;5Q^kn4DO?Ka7K|+rmv;{ +zGl^Lb=C;Qo8HC|iV6XOU@9ORY*WWjwOeSM=udRfSlsRInrGIm+0&|CXWtc0sp|#f^ +zg1w&xt3llqD3j|jc7bQwhsqqW)zZJY9tQh&ua?PFjP~#(*t_3K8(}|`t$obh?>}S1 +zZ&z0&we%m>fVt-sCCv1$FV7i!w)YXR6?`XordYR#d$IYP?uU<+_!)m0yqe*-D5rXJ +zJpktZK9u>|qrKX*y^n-#VC+AjqlAB9^Bv-KXNg}2HhcHIDvmo!Fqh9iPtP`M^u_sUPIK3Kehwn0 +z+V|I`_TWA^yc@2xy)J3_rufp#orIy +zcK=`MZmv7P9*g8u3~jI-nxRZQ!#gq@mq{~5bDF#C`_1n!dyK!|xb6NwuvV^b!ff!F +z6p7!sufrup4w=4|{>^31Uzg;xCwsHU4KNgfXj=$f@I1@{_fZ~e(Radk3+y4Lp1)tr +z9pclgJv|5Zcq^oH+=Q+jdA^W=7vMjXm +z#SG{E8E_3u{q3TPIJdL$M#?^_GE7(p-37q%mu$sJr7zSU1tN( +z-38`*3{HVOsb>EgYYuan)7-IG`;%ZV_GEAUp-dVvhMcPz=dHEr==VSyjDtL>rvLE- +z?f`R5gH)_-5B|PK!QQG7<9t>JVF~ygWATiB7PPx((s@JG{SDv2Rs1cf7;^_40&|%& +z7Hj%9nfBkoN1+yR&29nrmcPOHcr9JY{oC*d7zL^HH2=*6YzA|fD~L6$Wz9~ohYO)r +zaW8xtjCY<_LY!wH_dZi?cZ2g8OIiQ=E(Yh;9OepQjg??tYr9tMr5-WPe6A(Wt{35Y +z2=y*t{1Ujgu7UXZ6!ou +z4g7WtbCuV>w#k{VF~*vs1ucb-aRa=P;aJ^X(8oAqjCE`- +zbDFz1)(dHR6xYY@7ee^YE1DL~HCqmqduHQ*85BwYUDcA^G +yVOxe{bx(pm`c4GDf#W^T?Fke6@Nd!6;4Byct_N|fPMba_OV70Of&4$uz<&VCpkVL- + +diff --git a/src/styles/core/_syntax.scss b/src/styles/core/_syntax.scss +index 08d1d53..f10d553 100644 +--- a/src/styles/core/_syntax.scss ++++ b/src/styles/core/_syntax.scss +@@ -34,6 +34,7 @@ $syntax-tokens-for-color: ( + built_in, + builtin-name, + class, ++ function, + params, + section, + title, +diff --git a/src/utils/custom-highlight-lang/swift.js b/src/utils/custom-highlight-lang/swift.js +index a601920..6ea99f3 100644 +--- a/src/utils/custom-highlight-lang/swift.js ++++ b/src/utils/custom-highlight-lang/swift.js +@@ -27,9 +27,14 @@ export default function (hljs) { + // recognize class function declarations as class declarations + language.contains[classModeIndex] = { + ...classMode, +- begin: /(struct|protocol|extension|enum|actor|class\b(?!.*\bfunc\b))/, ++ begin: /\b(struct\b|protocol\b|extension\b|enum\b|actor\b|class\b(?!.*\bfunc\b))/, // SR-15681 + }; + } + ++ language.contains.push({ ++ className: 'function', ++ match: /\b[a-zA-Z_]\w*(?=\()/, ++ }); ++ + return language; + } +-- +2.31.1 + diff --git a/Sources/Documentation/Patches/swift-docc-render/0002-Routing.patch b/Sources/Documentation/Patches/swift-docc-render/0002-Routing.patch new file mode 100644 index 00000000..c2d2c0d7 --- /dev/null +++ b/Sources/Documentation/Patches/swift-docc-render/0002-Routing.patch @@ -0,0 +1,60 @@ +From f239fcaa8a0b462c230ef8a5a9622e431653e7e1 Mon Sep 17 00:00:00 2001 +From: Andrew Chang +Date: Thu, 6 Jan 2022 19:31:31 -1000 +Subject: [PATCH 2/2] Routing + +- Allow pages to be served from site root +--- + src/routes.js | 2 +- + src/utils/data.js | 6 +++++- + src/utils/url-helper.js | 4 +++- + 3 files changed, 9 insertions(+), 3 deletions(-) + +diff --git a/src/routes.js b/src/routes.js +index e5cb746..4fbcdd5 100644 +--- a/src/routes.js ++++ b/src/routes.js +@@ -28,7 +28,7 @@ export default [ + ), + }, + { +- path: '/documentation/*', ++ path: '*', + name: documentationTopicName, + component: () => import( + /* webpackChunkName: "documentation-topic" */ 'theme/views/DocumentationTopic.vue' +diff --git a/src/utils/data.js b/src/utils/data.js +index 822f669..0186a48 100644 +--- a/src/utils/data.js ++++ b/src/utils/data.js +@@ -53,7 +53,11 @@ export async function fetchData(path, params = {}) { + + function createDataPath(path) { + const dataPath = path.replace(/\/$/, ''); +- return `${pathJoin([baseUrl, 'data', dataPath])}.json`; ++ const basePath = pathJoin([baseUrl, 'data', 'documentation', 'mockingbird']); ++ if (dataPath === '') { ++ return `${basePath}.json`; ++ } ++ return `${pathJoin([basePath, dataPath])}.json`; + } + + export async function fetchDataForRouteEnter(to, from, next) { +diff --git a/src/utils/url-helper.js b/src/utils/url-helper.js +index 01afb2d..ffe99fa 100644 +--- a/src/utils/url-helper.js ++++ b/src/utils/url-helper.js +@@ -25,7 +25,9 @@ export function buildUrl(url, { changes, language, context } = {}) { + + const combinator = hasQueryParams ? '&' : '?'; + +- const pathString = fragment ? urlWithoutFragment : url; ++ const pathString = (fragment ? urlWithoutFragment : url) ++ .replace(/^\/documentation\/mockingbird$/, '/') ++ .replace(/^\/documentation\/mockingbird/, ''); + const queryString = query ? `${combinator}${query}` : ''; + const fragmentString = fragment ? `#${fragment}` : ''; + +-- +2.31.1 + From cd9ed3068a87e0ac54e0921a796877d7059b018c Mon Sep 17 00:00:00 2001 From: Andrew Chang Date: Fri, 7 Jan 2022 01:47:23 -1000 Subject: [PATCH 19/20] Modify release automation to use patches --- .github/workflows/release.yml | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e4431cc9..c63a9758 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -55,9 +55,35 @@ jobs: - uses: actions/checkout@v2 - name: Set Up Project run: Sources/MockingbirdAutomationCli/buildAndRun.sh configure load --overwrite - - name: Build + + - name: Checkout Swift-DocC + uses: actions/checkout@v2 + with: + repository: apple/swift-docc + path: swift-docc + - name: Build Swift-DocC + working-directory: swift-docc + run: swift build --configuration release + + - name: Checkout Swift-DocC-Render + uses: actions/checkout@v2 + with: + repository: apple/swift-docc-render + path: swift-docc-render + - name: Patch Swift-DocC-Render + working-directory: swift-docc-render + run: git apply ../Sources/Documentation/Patches/swift-docc-render/*.patch + - name: Build Swift-DocC-Render + working-directory: swift-docc-render + run: | + npm install + npm run build + + - name: Build DocC Archive run: | Sources/MockingbirdAutomationCli/buildAndRun.sh build docs \ + --docc swift-docc/.build/release/docc \ + --renderer swift-docc-render/dist \ --archive .build/mockingbird/artifacts/Mockingbird.doccarchive.zip - name: Upload uses: actions/upload-artifact@v2 From 144299b0c772de80ac7dbc199b01848d1bb58ef6 Mon Sep 17 00:00:00 2001 From: Andrew Chang Date: Fri, 7 Jan 2022 11:26:48 -1000 Subject: [PATCH 20/20] Add README to Sources/MockingbirdGenerator --- Mockingbird.xcodeproj/project.pbxproj | 59 +------------------------- Sources/MockingbirdGenerator/README.md | 5 +++ 2 files changed, 7 insertions(+), 57 deletions(-) create mode 100644 Sources/MockingbirdGenerator/README.md diff --git a/Mockingbird.xcodeproj/project.pbxproj b/Mockingbird.xcodeproj/project.pbxproj index 288a8a3a..99df3043 100644 --- a/Mockingbird.xcodeproj/project.pbxproj +++ b/Mockingbird.xcodeproj/project.pbxproj @@ -443,34 +443,6 @@ remoteGlobalIDString = 286DE635277EAD380047B0F3; remoteInfo = MockingbirdAutomation; }; - 288872FD2785327C001B92CF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = OBJ_1 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 285C8DEE2779E2D200DE525A; - remoteInfo = MockingbirdCommon; - }; - 288872FF278532A7001B92CF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = OBJ_1 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 285C8DEE2779E2D200DE525A; - remoteInfo = MockingbirdCommon; - }; - 2896E3E7278530A700C2C574 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = OBJ_1 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 286DE635277EAD380047B0F3; - remoteInfo = MockingbirdAutomation; - }; - 28E2A569277E8F43002975B3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = OBJ_1 /* Project object */; - proxyType = 1; - remoteGlobalIDString = "Mockingbird::MockingbirdGenerator"; - remoteInfo = MockingbirdGenerator; - }; D372A54B245586CC0000E80A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = OBJ_1 /* Project object */; @@ -704,6 +676,7 @@ 28A1F3BF26ADA2A8002F282D /* PartialMockTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PartialMockTests.swift; sourceTree = ""; }; 28A1F3C126ADC9DA002F282D /* PropertyProviders.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PropertyProviders.swift; sourceTree = ""; }; 28A1F3C326ADD57C002F282D /* MinimalTestTypes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MinimalTestTypes.swift; sourceTree = ""; }; + 28A651142788E58E00B35800 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 28B127E426C667C600BC8B85 /* TestBundleName.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestBundleName.swift; sourceTree = ""; }; 28B4F6E126B3C9C7005C0049 /* ObjCTypeEncodings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ObjCTypeEncodings.swift; sourceTree = ""; }; 28C28E7626C0EA4E00729617 /* BinaryPath.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BinaryPath.swift; sourceTree = ""; }; @@ -961,7 +934,6 @@ OBJ_69 /* GenerateFileOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GenerateFileOperation.swift; sourceTree = ""; }; OBJ_691 /* Cartfile */ = {isa = PBXFileReference; lastKnownFileType = text; path = Cartfile; sourceTree = ""; }; OBJ_692 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - OBJ_693 /* CONTRIBUTING.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CONTRIBUTING.md; sourceTree = ""; }; OBJ_694 /* MockingbirdFramework.podspec */ = {isa = PBXFileReference; lastKnownFileType = text; path = MockingbirdFramework.podspec; sourceTree = ""; }; OBJ_70 /* RenderTemplateOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RenderTemplateOperation.swift; sourceTree = ""; }; OBJ_72 /* InitializerMethodTemplate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InitializerMethodTemplate.swift; sourceTree = ""; }; @@ -1891,7 +1863,6 @@ OBJ_688 /* Cartfile.resolved */, OBJ_689 /* LICENSE.md */, OBJ_691 /* Cartfile */, - OBJ_693 /* CONTRIBUTING.md */, 285C8E24277B3B1000DE525A /* mockingbird */, OBJ_694 /* MockingbirdFramework.podspec */, 285C8E83277BFE2E00DE525A /* .gitignore */, @@ -1919,6 +1890,7 @@ isa = PBXGroup; children = ( OBJ_63 /* Info.plist */, + 28A651142788E58E00B35800 /* README.md */, OBJ_64 /* Generator */, OBJ_79 /* Parser */, OBJ_116 /* Utilities */, @@ -2187,7 +2159,6 @@ buildRules = ( ); dependencies = ( - 28DBC3E5277ED39C00A6C96F /* PBXTargetDependency */, ); name = MockingbirdAutomation; packageProductDependencies = ( @@ -2207,8 +2178,6 @@ buildRules = ( ); dependencies = ( - 28DBC3E1277ED38A00A6C96F /* PBXTargetDependency */, - 28DBC3E3277ED39300A6C96F /* PBXTargetDependency */, ); name = MockingbirdAutomationCli; packageProductDependencies = ( @@ -2230,7 +2199,6 @@ buildRules = ( ); dependencies = ( - 2855B8ED278568DF00E2ECD7 /* PBXTargetDependency */, OBJ_849 /* PBXTargetDependency */, ); name = MockingbirdCli; @@ -2253,7 +2221,6 @@ buildRules = ( ); dependencies = ( - 28DBC3E9277ED3B000A6C96F /* PBXTargetDependency */, ); name = MockingbirdFramework; productName = MockingbirdFramework; @@ -2270,7 +2237,6 @@ buildRules = ( ); dependencies = ( - 28DBC3EB277ED3B400A6C96F /* PBXTargetDependency */, ); name = MockingbirdGenerator; packageProductDependencies = ( @@ -2315,7 +2281,6 @@ OBJ_1103 /* PBXTargetDependency */, OBJ_1104 /* PBXTargetDependency */, OBJ_1116 /* PBXTargetDependency */, - 28DBC3ED277ED3BA00A6C96F /* PBXTargetDependency */, ); name = MockingbirdTests; productName = MockingbirdTests; @@ -2880,26 +2845,6 @@ target = 286DE635277EAD380047B0F3 /* MockingbirdAutomation */; targetProxy = 2855B8F0278596D900E2ECD7 /* PBXContainerItemProxy */; }; - 288872FE2785327C001B92CF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 285C8DEE2779E2D200DE525A /* MockingbirdCommon */; - targetProxy = 288872FD2785327C001B92CF /* PBXContainerItemProxy */; - }; - 28887300278532A7001B92CF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 285C8DEE2779E2D200DE525A /* MockingbirdCommon */; - targetProxy = 288872FF278532A7001B92CF /* PBXContainerItemProxy */; - }; - 2896E3E8278530A700C2C574 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 286DE635277EAD380047B0F3 /* MockingbirdAutomation */; - targetProxy = 2896E3E7278530A700C2C574 /* PBXContainerItemProxy */; - }; - 28E2A568277E8F43002975B3 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = "Mockingbird::MockingbirdGenerator" /* MockingbirdGenerator */; - targetProxy = 28E2A569277E8F43002975B3 /* PBXContainerItemProxy */; - }; D372A5992455875C0000E80A /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = "Mockingbird::MockingbirdCli" /* MockingbirdCli */; diff --git a/Sources/MockingbirdGenerator/README.md b/Sources/MockingbirdGenerator/README.md new file mode 100644 index 00000000..a38e4677 --- /dev/null +++ b/Sources/MockingbirdGenerator/README.md @@ -0,0 +1,5 @@ +# Mockingbird Generator + +## 🚧 NOTICE 🚧 + +Pardon the mess, we’re in the process of rewriting the generator. Please avoid making large changes to this part of the codebase in the meantime.

`' that conflicts with an inherited declaration and cannot be mocked | + +The protocol being mocked inherits conflicting properties with the same name but different types. + +```swift +protocol MyBaseProtocol { + var property: Bool { get set } +} + +// Not possible to create a class that conforms to `MyProtocol` +protocol MyProtocol: MyBaseProtocol { + var property: Int { get set } +} +``` + +| **Error** | +| --- | +| '``' does not declare any accessible designated initializers and cannot be mocked | + +Change the existing designated initializer or add a new designated initializer with `internal` or higher accessibility. + +```swift +class MyClass { + private init() {} +} +``` + +| **Error** | +| --- | +| '``' subclasses a type from a different module but does not declare any accessible initializers and cannot be mocked | + +Add a designated initializer in the mocked class type or change the externally-inherited initializers to have `public` or `open` accessibility. + +```swift +// Defined in another module +open class ExternalBaseClass { + // Internally-accessible designated initializer + init(with param: String) {} +} + +// Class to be mocked which cannot be initialized +class MyClass: ExternalBaseClass {} +``` diff --git a/Sources/Mockingbird.docc/Resources/build-log@2x.png b/Sources/Mockingbird.docc/Resources/build-log@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3f8f86318018212f5d69aca10ac52d4f6e6592a6 GIT binary patch literal 105812 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 z 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 literal 0 HcmV?d00001 diff --git a/Sources/Mockingbird.docc/Resources/build-log~dark@2x.png b/Sources/Mockingbird.docc/Resources/build-log~dark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b726b54b778a507926aac4daf20039935fa0706a GIT binary patch literal 108161 zcmZsC2UJr}x33LB1rd<0gd!kC5D-vGB27Ao^bP`o^dh}PsnVr)BfW!kkP_(~l-?s< z2qDyvkoNN3`@Vbs-+FJ>td*0Tvod@3?D_4ze|t{!Yb|A}+bp-QT)9G}s-pPj%9R^` zuUxtMlHwZamuUW(>?>DGR8$q^^!%A>6ji@O=P;c>?#pH~;G)%ZGMf_lBYQW(ElbT%#Kf+mclVD ziF>07T82wBiGF_<@-!^z*8f8k7`l?&d;05jdrAQ;&&1-?*RjL4S&Qy}i}7Ed(4!2g z@xA@mbdQHWpD=4K45l`5GXVeD2=UM@HR`g;9LR*d65G(D>x$_Ck%|9o;LX~^DSHL+ z2e_cQYS{C19=`B@-cAIs*A^%=X+s3P&J`!!P^!Q@+J6oJB#n@pQ00*xn#4Uq5J!yJmV@=nF6P80rfm`&ly;)yNQF}Zi#pktNOTw%MH zLH}&HJ78n2m>20@ABA(<9(*@^1KBIt0-+{)`C_V^HnF}P#vZ5p48}((aY?O0DtBLb zn#f%>9JaEM3uUGo&b@9;BR6&99g~%4rWYzct;>EVD9|xRZuABKX<*6o0oH|wPw%dM z-7lToyZIQWsYPgk1)XkZScU+{-|naK>6U2KegFPbke?Td-w9$h%^|zPpbg1 zt~)fe40btgi)fFsS8-4@d;4Z?$=i4lzCoKDs?f7ywpwbefxWD()xe~zfKGRXznq^_ zCB{9Ilr%LqDO_6|=9@S2^qgB>o(!UcO-u;c;{z1hJIo9X=Z~Agv?mC}!52ZIG#k<4 z4&#WeXk2_r36Fq4rK$sQYq!>@E;*s(^Ux4c8T)TR|66K;eFx8eTuKL9Q<0QdCiiva z$v3(wTn|&v5-+NhjWKnb^MhAFIr@Ayu&!ZgtsxKf72`a;rKs(>hwXgXb1_AdY$H z24NXi(%K&QIPzKW2}gO*%c;_Po80YKb`sj{JOSU&P@djirkV;7vuE@8W{o zKU{6|GIUodOKTdZ+}u~Ze*c*sQ};AzfiN;SJu&?sWZyot$Ey`r53TR$X#{ha!D5LXgzkm! zTB@pig8Y#7=*c(IEl_HaZrc&!{IV3#=5dNF>UxhH5)MG zd>=q0T!0DZ5MoCFo_cHqORuR3t(f_-&MK+z=;B+8#zhP?>Hh& z;9qw=^iC*&iEJ(uw{97Cz8l}uE&UxTF}=E~5cC0X&fIz48z3p^%LZv~mcZk0&xiqf z&O6cfKDo1BN=iuF7m`D{$;n-n%EsB)+XEOF4D|Fmf&=-?b`K9-_lb*IT3f`0 z*5~T#0@H*%kXy*BSFim2l?>jMa0t4+7&zYk^OVk2Stwu+HPzS%2?`Fzp!?Co6B8T9 zUPr$;ocjj{$tyV{e1q*&1-#R`XkOa!dEgo2`Sq!T_e)@uW6EaW=fr2WYrt8Fx zYRo_fL{OU*A9|UVo4rld)aqMWGWL$?X=t=I!RtK{Ub_>#;VrV8&JyhElHd1m?J^wpD`0c6O|!qu*UbgCMNs`lG~@~D0lI5>ZxFlh@q!E zEzbSN>NZm!si+f)P+H$}M^+5^<`bY0NB5ub)`bP8GqQ)4I!QXDHR&sppnWh7hRMk8 zT2+tdNMxj^S6g&SxqGlLCniDCI@5*kJdpCESUW|bb~b$zN_i7XNl&Gvr@gaU{rU5l z7|ifb@Bx5;;R0d)tSfPvOtNzCXfhn%NA3&O#hst_9YHZWPNt^IdF?3g*vlVEv`J;! zf_seW+fzU#NYG1u)_WJ{>P4Q#uYBQitKD+NDvxw3#3kL<+I)%Y_&{p6wI79g@B28T zGe z|6&qg-o4I{ai31U&>%&0NO-7}WkqS&kwZZGj!JI5*Q3GNezNane;qaoZ)S(1V;P>X zJb3WOh>Jj}b}L2DZ2W-w7FGWCSSd3#we~^Iv~%fFHp?5^zDIioMn*&U<>^(;JJM28 z6k(xs!GfVII+T=|CzH9d>SCXDm6V0o2@#FI9G<-b!WC90oxmlUzgBykIW!TA4fYyD zuG%zob+yYFM11skrOk^`*y5*vj7-mCE7!>ie}0fUSZ+H zL0(aBWsJRt)vv%~UES$S*xcLzp{}XvI)Ikq#m_Nb;>`T4>9SFZ*Eib*zE*j8*6bJ4 z>nGczjkmGHr6wl|SQeWlGjpZ4)aqlbuK}XIx&9Tg2hrH~h=$1(7T?5yGt%7N+Dh=p z$-nmk8vx1%-Yl#vE~?5jz1m)1|D7fOv5u4fdLwc!Ys3YrKgYG9@*v)x~k3F4XSk#_hCy*Ka7c+6xVz|m4kh3wpi~}OYftr zE35O!KFLl%CpY{4D>nSM10;^csgAzjSWE^jJo;KXAfvflqP;07&T0sJ1ef%?e`HC( zmHzz6j`>Ji(Nt*|r!2&LgSU@Ayi$Wh_s`BONB_4sLV(slWOr|rHk)if!0rToxdpk_ z8HhYw#kRPuc6wnC@#Kj}7}yVs>a1a->8UpFO#W&Sts+RL-n|!f8R3%_CRQ}F?|Orb zjJPKZZvLKma~x-ZGTdM@EOghY(9=V1ZRzRj5Bv5gDZcsw{yRh0L{YD!ZpvyZMXe+* zZ&4=qlFEKxkIds5kZnRSXl8v~!$B+%b@278>&|A*cbU4NeorrKQlN~p;MhDX?{PSX zGZ|lBqY$sWD7b%w-WF`AE!iZZ$`s+gy0O2{lde)Wm77>^tNQHR?ZbyggGxK#a_u~I zX>m!}ER0JU|)kAPU3Kxw)BS zeCyMqX~!|l<3fAyM7Z{C=6pO@%$m8wxVi7Y_+-BDKBqcmCL>H3%+p9 z;qRC@^xH?=_5A+QdE+eOfnS=UJ9~|(1&+_f?SaL&6&{LM=D*f6G~~KEb;cv3Xf}>d z{AKnk;AS7&vA4;?Lv~H<9&g{ux7eQ?RyH;^o}Ox|!#9DdHIIdPu`~`FV#s_s?yu!P z++aY5-^m4UpA~<9`u45gJ@{}6uQjOhy`tH$=@-cl&3BWaJYH1wNlFD4Qg<>&?HuSB zSh6#6l;4nny}iBvCMgj>B+oB1m5x3D{EaFp8NhXfzVO;DAOqz_D_v7oJa%oLlQ_wV z_^e$JsmOv+uANQ7%f*KMdcgcW@-w$jki+Nj2dkTx7P!WlXFI*1&s2wt?Y{F9c|&ur zf|3>9>+4IO-nkvPo&`%awN<=v%Mb;vj1`c%N`5i{kPV;|vF;;gLDKRx+3s zAQON)SUfeHwCD&SoY3>I0Ruw+IM%9MI(aRJDQn;R@Q|&mcsEAAV-#at2OtH&XGQGBV z?>Ia*LKuY*aS14{jS&%+pzHxTog+Q#u2)yr9m@(n3mBAqhP%DUHa0f?!{wCJAe3MD zx4dUexsP681B|$5Svh@^j695#Wq9w;@P!usS=Vqo0V^qSAJcG&pA)GGglg9_YEhrD_6L`iQ>g7824mM#{i>u`~R|85xq8sAPFnuu!x`s3zCFaRQ&9 zpu3M~YUYB`U8c!ANouEph{H@blX{%`iSnWHSBYg( z`VXuKx7vxN!3^A!El$$yUie7O?~^(`LCqKC-ap99ZogYuZ5XX@-U<7z>soUFSP@q1 z>V256cfAV=0iZ%xw8)a92NN4A?_e1{zamN#dqU-bA=GR*OVmV|Yz!CtA}Che8q^#7 zMUhs%hds{yCM$W|bz?r@b=fFV6*jpO97j|1!Q^tm z?$dPOHg0M#9OAV{8;wf5F&SWRy>7Avw-FLe4;6> zB)gNm{52dMul8-oYiplAt2}(v#mVj?DZ4kE%)#fUImx1O%acN$pK-XLrpdA*#U|?T zK1C+g@^UZn7?7R(?b$W3n^UO^?n7cU9WPG;%lWg>zG%8PZ^9?LK#)*7_4Ct+iVRti zzo3I)W$y2_O;4L&EY0seKBj^l{ZGg434G2TjNT0^j+8-$kBFQ>XY?~=UOh^SVI%rN z1OIBwEds!olO*0tv#)k^v-3+ZAE@>oK3e@8UJE52M-egWQ4m)!Mn5>%#*Vw!KzLoE zx~%HmfdIis;H;%%-=yu_$iTw*Emee_pp&su+F)|)uCReY!2Uj~8;o!ng#=$74-zr^ zIY^VGC4ARQi;(W(QU6x=-t`|SxMUXrh2>IC1fBgt1}uj3HLKiby8y6%J^MonJ}YI} z&Lv$J>y-|;Y|Qv}Z_cmj%hbGicgrw_Nl^LIeOcVojlL5*KFgBc7vRHOy`NsiDDAwI z7`j&@_FQI2D{zl^M54R*5`ad@q+~VFXLpyewW6X`c@D+JUxdf_8%98dWmkuJU5%G~ zxBluhQR|)xbulbP1!?L4i}Bj>mwhYhx)(Y*K0nms;F@M``tQ@C5_7VOdr_Oq>Y=; z=%~S|PRbObO7o(tQFSV{R(GVw+YVU?|kPYePzFN|%tww9FOII4~?Pg?$D?CRKYkgtf7JzS0%zxbXb(IV0njLJs zqXKAnVR%}58;nhO_!eOHZHXXaGpK^a=tqcBl|(?m;+9Jg|E=#9V3oNdRCh7o^g4y* zKr3zjxWTqB0ScEOhe`-*t!jE;2scLzKS0aaE7BCFDsq&)2m*(Vf~cb?5@>TH6} zUK0zI6JdmnSopkKFlJU#(sku-1Uz#&(!qL4c>OiEUdq+vE%F`iQyBU>M?r*6wJnp- z6NM^+{S)FtOAHYR44 zP&OAArx4ISfrqXQ$CiCWp0#$hoXhe;%f5fE5G46XM}Yii{o5K4VBQ-=b;B+p8T!2h zn5rZPCSVc#YG4q0G9s|N1~ahGDZy2nw$$Hx!7sC0@WM}JpfV^5`AjAB?X|C0qYK|; z=LB*yVv2*pognBNbNrA`BX5M#X}ZRPv_Oh|i?o7Q;i_zvKKI&4=4dUkbN7e;gc z-uv1(1!m6>@kr*J*kBcbY6Nd!dLxK;H~FP|+#L|K!7GG-*$u!aU3qsk`DIQ(`0Z2q zhTADYM)XcCcnFX$sC1A%sS35evN}w-76Px9?7v}4%R^D*L>w#@#`P6ZlwM4ZLYq5A zUClAepcNVf+$;6pcJp5bgg?t_sGlk_vWl6f9IQ(Eu~26$qO-BwbN+Wcr^S?nCMHX+ ztAvfp+Abdc%*LNU%OUt3(P}E~Aj0d9;zr8;A#%5}(r>Gee5ploIgxEz75@ql6cP|B z|KtDE2!0XO=4R{b6!9*e`A&ZP@ZpEkIYcvDk~Q0;*L(a4LQ+gD5jX<{BbS72%%sCB zr-6Mz74XQHW)h#>x3`I_ZMysM;4PZl&-5}^Gv6q>?J*mwitj9ZuN-2U=UspgC2=`$ zT3C#aD#%jAT&?uf7GRr~UL-kza(y$iDwO?9?tS^8i3!5s4{%4FZS>khz{t>-yyGf0 z?pK{s7<5)~a9SGu7=SAR5Q4TYRe18;ztu|Ia3PcHooaNIi5 zZ768z!HeCjdiUj#0Ff>DKm-Bl^Qo^~*!|TV#wmEdT8E3Z8%>Ae@yMaQ@FcFhprFzU z%7H|HwnNP`Lxgs?*m)}PT2GU3kW9@;OL*lHv28c?WmW4LpwU|2uJ{a+NWjyGXCair zqU>;DV&jgk?=*%+pf4Kixjg&{8>xH;=QyuPCv29D>ezi&Rxy{$M&{{KvDG^q?X;y! zi{PhNPgy91A<01$6tV%KltX9OPCb3B+1SLpZ8(W8&XRd5DPiNnwB&nspxF`VBG!YjYM&OaK?D%#Ch8JglU zcAr%vKJqb=h6yE$c?X!y0yWeNQJ7^IVMM4Q;!FB~m^+U1+x%pm&0v*DQ?^3JlFdgu z5OkHfOo2Fms?PBD^Q5pB7l~Yo@n}xgFm)8Qp|kG&-33$*`yV(XUBI+2ew(LlWxiG3 zPboEu$*umq>iv5zI^(%XP;Rbr;sdA$o`Flp)WkHYHcpOvnzpW6bG*9yb@jZHs^(TD zjJ9U|_4kDLCU;_M*FEeUA54*%dhKp8itTEK=-d)keHaI)hq#1X73%)pX=9{UIS){* z7ky4*F-=`0U1uem!}qg$yfvH7$Hz$)Dw>EI++1o$(eVogj3GQ?gTFjjxo7AzG2A^~ z+&W*AW|k6YE6U`-scGXOLMf^4ZzLsf{mV)hAL-6RHf__3zC=0X9P&v=inD=`c^Uc1icHz z+5Np2$n1#Um5a=;@1snx4yrx7%7B1?3Dc0iYZ`wGaP|;?QpMHfrn)-zMc7*jkK8wp z*bEuoM7$^37nt*nwWV_5z(}-Y5KYYp@f1SrnQ7IQIerARU&nS>45ak(#%CS%Z;mXp zUr|7xsbX+EyiO2YrdW-=yWxK+RUiBE&q{Q#N)xv@$J2Y}0peaQZ%%ebBw?$ULL66Q zlJ-KstOSH)X{u?F!U3&MD1gu6WlfW0!_ph79O5#Y!xM&|ng24|PyaMqVbV5<)Ytc& z-W0I7mP)TiA8obMmacAN7k0?$0CQDwWg!#=?R} z7(b`*=b6XX12|(wp2u_iMAwZSNSC!2R?wqKR;v|7oi570u6u!&!&6 zL~qtP0qBx${Ha8UtxO2VdGPl3_TgG*Wk;16=9%fzB>u;NdNUI*#MJAg^|o$W>?t!x z;hPkhx*z8=!@5M|X5#4RXfZyHOp_VHse1#10|r}C&~|9AE)f^%Y$}rYM+6cc%K9AQ z{C9tsY6Po>nv-DV@00?usH8c2VCYfj8&0upHKHNG%g+qk!&~|NWO#h@fGGN@+WEE}eE&ut~TCwgec z2H}xiMh-Rh%9GQYoob`Ho~-w6%crA7(o+QS%6Uhu$Gl}*vH)&>e?K+#KDy!E_*|aq zmil4MNxdk7=y$%26CKds|1-;oEqbCg-OIfQp_o&Dkr7^--_z=t7oS4D4Uq~qLGx-G z_vn}O(h%0UvPMAu`}eagK~NwRWQX(X?0R4JT_dV+_riV0x@mHF+NV}XfH4$?+>~T@ zM5x1Rsjvsr+L-FnZ{J={2!j%iu3wRP_B5-qiAC0u^X?F1b+$Tb=oI^!tsO4StiiNYEm$ydQyYYjilEen1z%jR8yFvVnVs!Y z&+w{dw|?aGjX`9L$)uhkYM&*zTMFb<#9%YkM?< z3td0>;~d^Z%$4z&vIg`GC%7Ue1G}fosy?H*;xqS@<^5-Y6r*gHyqucLkYrJd4d=8; zEA>SkwCF$+bx_`5lUH121MxaXMsfrGhoG7|T~AMA#1eSsqSbMh|J+3yG5JVfcyr(u z=!L&?h@9N~>1e9TBdV!^uQJ~97}1oJuJ)Rs?k@~X1g^w5n-H#bu{>Hs@&a3~%gN6) z$J_MVzWc=VL4B?e>A}{R;LPXBiKFbcd&CV7JCDfQHbhrU(R{$c@nE>NC(k-^tw|ld zm0F+#byU9JHiZ_mSsF9-fWx-clL zX-k(CA*X_0TZB1Ezzl7p({Z3Ow%tIq>b z4=6;r_lCl6_{d${USmAk?4XUMVwIq@xAM?Q3YL6e8*&$Cv$8s(`Na2!>;ky|#LgDq zy&c<4C?aY;#nnqwl{@2Wod1svtC3} z*7%4n-`%_17pQe4a-dEcCPBT((&M7m#3A?115o(hVK5p`)FFflWM%Zzg3|PDpQbx*h0)V@ zD~bkhOy)@&ny7?+r#U{R!GoAbgHX(&Df~VcWx$XFrcINk({F+O1W|%9rie%)Q=Yk` z&y0My^?c#iF!=1Z^2Nbw@8o07*rOY?DPva*NeMZUGejkT>|NijO`ZzfNx8XN7nK(LFlJsQ{)G7LuYloDxWo@hrXYkorOi+txqFNhIe|(Hwas# zc1pOeJVHR8)WMj>cZ)?%621(2zT|Y^BN;3mEOs&lMeZzpYP#T5+gX6;>=+9eW}v;cYaD%XvZZG&&Yjr%@d-sf(wI#6WIPiy--0RGo>n-CfAdk05eyU z2UW5MIGt4cQXGztTi@9}aCLF9Ihl=&+C_ zm_+$dMY3GWA9($+u2+(2Q_ZHp7T~$g&d(Njro&_076>diW@8iEVO)TizkU0*47oKp zn5e;$_bdo~1k8hh2z%P}b8n0d3`WKzDUX9Uj(G)PI#JhZqX8lXPT0W)jm)2|UDBs@ z^m8%zT9lj^h?G=jlxp>pt78jSiG|~XPZMQMC^)9I2x#R2vFYSiGVZD8p&;jlqx+Y$ zHi;rP>&by%ZU5koek+jTr#cZ4o%+eoNymQ8%9H>PH;kX$wr_GZvXhr95DfQX29ZNW)@8P`BSvfhYE=FKB*dSwLq9@x>RX2#lX&`PR>!) zrhXPs4*AydHg1RL*)QU#S%dEf>Y4-f1v<59?dk%n+xp`4LT<&&mfOeej`wQN=3(iu zSxfkx?{k;tJ4b}czwO|j&B8fZ8{|rRk&=iLGaM#pj@*`- z5hFtjA1jxTHFe=m@c?M$mgB}piuvBMzg^9iUspTv|J)n@eGPEvdPmPz1s11mYnP{) zr2VPUo9gUVFvUAGrw!b;#++;ipeca$>5Im|X2%funmpjK@fN}+gT#eBc<%oB9_(eA z1XInO2>7p>^9^4Y2gP3!5=|;!t;c6)*4_Rp!H-U%M3@V;zg>q@Q(9&8an1UVfw{1#1a>p*Qi#9D z1?nF=;{WO%{2i05zmVk5lr0tDUo*JT_IOKZ5pqMo)FNAS+vZt$wWVQ|(JkpvQ1HMr zryM<_wvO5$E0gE$f4D0&k=I12l;4Wjs z{F~-3(8?!fZiObomQUJ}Ewc?@2Q+;bgqC%DE9#l6so4;1tZZ-W(dF1Q_vkdB6Fczb zGIKg=kL(~Ux!a5q!lKCUvizDyjUs7%-N650F#nnijywmZoygH&5v?ySpis}C{*|{{ zDZg`j_s7^U-Glv;Drx|=d8wZ>Ut2bE^zn`4Bo^V_f zPci>$6uC6wH=ho#M$9j}|7eCeLx1O+yRBVv^0qwQb^OiU=p^^v!g^7E6sb1mPA1aZ zpAOR>XbA$e&T zvu84tjq|()_){(uH0vF>wye7UdUkXp1O+)uI9M~oCWRzby6O4Z^)}0zRl{|GSF_pYlSYMn2&9X$T$&%!nZ?{ zJ3{L#Beospuib2~FEAf9du}dnNEc$*D6nZR+ebOio}P1I+~aL!xjbq7M@F%i@V^}N zztM-977EeR&lb|7?_d*qOL!RJ5PfaI%XMESO2b@)Y}OIF@hQW1axhTF;n&Y#?A>rj zct_V2fqxAVVyNC438!gnLg8wt;vX(Gd4W!IYKrfRH7(x$_j)_0F6F`*<9&GJP;vDJUt70-hZwhgAf3J~9dQ{?qN9*JSOrt8FU_OW z-=F>e1hqQCddt&u59-=gv3d(v@0e91Oe_=I-eNpeXN$V#0*6RyS_}SU<>DP*I{>dd zCL@74_>1^G%EhH75*dcD)r@}xs8MeB*#k#F)KfHx@_ZMUR89h%Xx3}npjDK_J(y{sQnrO>x1Z=Cy z57P0gSoh-^PdsTU=cC>6cBtrz{~zvN2?3ckyxI5rFmb!G$?p0C4!&`Yh=+I0gYQBb zHKt27p}RO3G33`**}WmXmciw6bG*eU((#2k{?k*D-W#;bOHFL&BYuVglkV3~+a)BU zVNDSSJuQ?0l??@@BlfW+!&G@5M*WIOcQvF`0U))~C>xXXQA z-p+0oUMt)NK>9f1Gv>+)e0IC*YBwy}dnN?L0Mg(+?LxQkmXAHa7wm z38c#B6E)LDA4GOzV?P~_Mk@%#Eb(ChL~O&5h!Zk0GG49RB8RP^q}@qKZH4C((`La- z6x1FU9-g#2Vg7AVJwpgjk0pLa)A$ZU#GU5KbxTFX#BAQ)B<`bj5l1B(k$vYs?d?0e zh9SQTl?N#kFikZ?F1o)zcg<=lw$(FWEdS{QbRkfa{ zTqFr3py|w{o>S+NVP3)0L4l|$-BRs`6EZTHKn6RkVwg7drmQDo{}brl7}MHL?qb7W zy!s(GI6PSWxfXNXpg<@i`%JnXnKzg7gvsB>-3;00M@D zTcmCYuNFq3bRjn>0TLY~(6~%bO`XX(&B@J`v7g9oa*{r5FX~?+geTqFoy^;9Xmj4H z$IgMLrZ4h?zBDNgAxtCi#9!9EKRQ8Mup^q@z~R9g+Ca>+PmLe2q}AbkjLgAf z%jxEfmp}c|oXQ?T+sPIP@qeRd;wF5PqnPh>(939FLX^w3&&~K%b~+e>Nl?%3;55JF zUiLMU1XA7(^O5fa3`uPJc=h;rwXMBW4oM%RfKHR$L=;)~R0Cd~}#f$Su zpez=7g(bC*YBd9&u%H0a?+$deWrvF!7LW9fW9e--M8;c`1(g^d-%k+K!Y)gU zC13EMtkYTqd|rN3BAx~&Vpf8u2JyZRa3eP1g*EfC)4X{W7A^bZNPMMP zVWA5oE{+lbv9q(Afk3T*lYFBiQrP7V;9!5htevkiFZk;CySnT=dOTrTm#9pdm=BIr zhi0Oc++sYMuQKLB?Oq;LE)x%4R8kY;fkE~J=Niu+e~TxO0*?iQke$`JC4Za12MY;E zGG2)EJIsUMp9-xZTU&M7pmRM=a&J;uk5?H8B^|fx0L{0MwoG)J{djgc3Yq9ku7p{7YPgn> z;yk5KK@!Cx_LE=R-0*|jp1(;dpF58RIDtoHj<-^v<%G$?AXI5X^^FI;zLAy zutf;Q&Q&WHCR{wP#sj)o!PkL7rYv{j$aNZiD1Ib|f7SZN^Q4&&S|9uPNe5jwB0qTCu2u=B!+cIRYQLKE3>GKJ)uX~5$*(B_LlKs>d~Jc zgA&5FG&-G$D{bW`R0CXAQYx%A#)+{Ezt!K^yd^SFfvLiSh~Birem-G-khphENW91BlneH_Fg-1O z*t*4e(G!9I0qw3KvuiuO;RG5gZ0SUvz<9_`mZ}!e)k36cN!dbWJ(*j*fQacF3~Cuw z8lA7U1Yh9pFxJaeTefuVqJ%S{KjG(ZS5;0I%_H4HTNhd%FY@y7>1a8v%~m?i)#N>U zPm9~~*!)WbLfv`?G@;{gul*IhI_gdxj6p-CSqRjPYdql{aW9w%^4b||-P-CpA?*f% zkC~YZmdk{*_0tZzkiorAleO4Y3)mJY7>n>-BY9$sh5N}drq#@ha_<&vp*3JvE)D7p zH}I4&Fwie3Ku(?`R;!Uy%hC0!YAjEJSmtI4Cl0}dozImpdBK8AvG*}Bui&pIQ>i_n z5c)l3X3o=XboykGbZKzeHTM&H@ab-@}798AiBoQ5y zci-@JBC2l5*qkc}3ds9?)xAx2@;7gx8!<$lKKs7Jl|YP%J*eS!Zk5oeDS5SwB;_a! zxSB0`U{+d6=Vc=5@m!Rhpg`B0Fnpgts+i%XbcRE4X$eb*GT#22Zd+SRD@G>>KJ2E% zsgp5Sy?3cVEz8NcNTYXBF3{TimnajV0 zyR+c3=S32Jd}hKRLI@PXF{vI7&Sx){E|%{Rv^+6+yQQhL<@T-a*XWbuhuLf)5ipIY^cZeh%K`7qW$O}!4%{yAqD?(~vbtr36Nj7O z1-(y4USPsL{n3X*Kst{|S2A)~w2cV($c`1@=$G_{-jI^9&e zKA8FEx-QTULiE_oD`p$+o-EGN7KrBXSX_|`#+t%7^L5^Pmm785zmzOt8LFL!GvJS9 z@~w_&*Tuxexx0rrK}@$r-uu76n+k|roV`DPE~6;IBmQRiQ5{bXcL9}};&txZH{YSQ z-aqHT6@~d$qwNLZf4&Sidp+zlL8!I|nZR%#+j6yfrba^elEj9QFi4Ha6T(s2%vl0^CT)W;qCLfmPgQ|=umWxBB#eT#w|^_ z8L4}+EWNa+sz$&}jS7n?XfbrZXcZ1xKOLhPiWL;DZESAl!)R-2RdC1F+q$;Yz^OsF zBaaFh-vWX?vU&<3nO2x-J6;14i(5H5o7T2Z02fbZIcJ0I&c!aH(eCcA25vvUp~#x6 zn4xpW<2qMU(&$HG`-JRXvh<9XXQ^4kEw5oRII&`PTTaN56N3zf99Q>TtonlR`ajB9 zS(jOJq(#L#8XBOTHpH*%FaTbw%N|V)wsJ;m2TdM9vX}{QOCsUyPObROnEluAcTUQM z{UCFuFQVt5@g?tO@LwqLa-JCX1_f!fw!FBRecB87!#6UYu^~Hee&MPo-$ZwA$frcR zEVfREh;ems^TIFML+Br?pnq(x{wVR7CI_K8B3EPk3+9&#Zpb?&=%=a|D~fin3)~@G zg+j`&YfdB3Vwg41FUaUN^PulfNbjQv?Jr3T-|Cr(&2tj>O*0`NQ7I;2-@(l>x1oX0 z!NFNvOOm*g-wWtWCBo6scjw#O$+9Q+fO&Tc&woUK7QQ;`i$K^#fM;=!yqB8X7TsQ(5ujRnfpL(@NQ@!D-7e%ILw2nFht)W+lPPPM z#kLwI-PDzP_j{GwGg>9u-Ny@wKM`r8+y(VgI%93OcFxp_IhEP{9*O}|&&nR&b-Kny z7I{^rX!;QFcZoUcadgiTrD@e2 z4=1XmB2Hd(-ehEFB3fqvqF-%#d^|b1-%;Q^bb*TOwdMxgxi%~;d1@FUCvo)2kF!hc zt$TFUP$=~nQN<1U^QRRq@;M{M(jfgxIc0j=YoOszL-dW%tFF^M)?&n@!~jZs{h&^H zDqVEZ6htJv#;B^c_UY4KfY|<_YE6RX0$Ou8ic-R7@P!#y?QHa|KAmOzW1`ASVBg1e z*No8~?F2=Z{rB0q$nlGvVd8>asNn=0{*$O7(a_NFBxluq_z+UZ-ugjVNV(i5N&D*) z!r-PyAql%yBVSy}$OAna`cIJJrXxxMfFNpq{*OU8{S18m4NAo6G)yG`7`OKnRg3C#7Tjl?nhZO+` zy6Xy0dmMLm8ErZ968~h}d1cM=>1D^>_yO8I;XYCO?+t*(;s)e;_dU;^?72A00#lv8 zyANP5LY$8w&iw@o4#6`$L=zXqjd>C@^9y6rYD1I)9xbpCvg&WVd}^__9fV0!Bo{1O zi6gki2C^6Q3Awj21iTJ6iX^@S+v7EwT$nCx{8C zyCX_dFIyj-a6D32>d)ukl&<+%zcO~bLG(bzfHr!Qi0j`=j`FGbMDV$Uw>u(ZxsS!} z!S`u<^+=9pS^RAF*lLhB;6Z4#$H9Yp6;?z26_($F!@d0U zZw29w2O~gY4Pt$E>bSg|oHShg4?VV9$^1y%TDK^9LuoXf|?UZ{RK9PwcRo z-TU{qFyb0hC15Yzu=GhTw?e}0%j-ReD7K*2>(|j<O0|R z_Qz=c-??I~$qhoGPS^U#xIU}hqr|{=xxKa6!I}TV)prIp z6?WZ9?;uU2hAPrkPAhD4r1v5%ga83Ta`WDA zzPa<>=SMPUawa)>PO@k3wbxqPH!tr)b_}2;-8*OL+s~h`a%EB{J0R(+A-tOwQh6`c zp+qSy&)-Dn@6k)F^I(6X;PQb=g{(C{Zz}lnz;+WktrFyqI)aZDG`4EY+ua@n_uGx! zQnCi#`FC_4);3t{v>x9?uH9|uzT5ff_vdr$WP2!MG#LwHHOO<$&JD|ioyVe12duDx zmxI`D*ZwHJAgR;I--~cz$qDCxQU7@>l2RT3n)!)Q9|^ zthHUAk0ow|YZ5Y;=mk9F7U4n*4#oqVM!A;#6|nKDkUn$#F9LT@X&(1Y<`y}%#yC}5 zwkAa%;ol8=ae8$#;z6+(f?OGYhTqFQ8MznP!aEF4IMG2X%}c94D^ArP~Cqx0lB=fHN82UF{7u;4l*f6WzcS zM-I;n6tO+bTdXEB-~76xpOF0wb6Yx@L&h-eY%U!J+~WVbH$Xsg*?D)lge!>2Q7w$q zdWOG;%hvlIyILln;S`l5chO-teTt?vmI~+bKG*i@Fry7u1WEDUe*M-xxnLw|W=+I( zC5;M(E0hjy`&k5K$(>3y8sIxXi3jt?6>bCZYt7iu`D?Ckw8r;Pyni)aH)J~)B=A4- zE#K>}v-KQ67v%O-qzVmp$FTim6f${ry-kmi@kbOD>e$f3W-6U(jexp2QeS>O4nUB~ zS1Lz_e);kj&QCul3#X`KA?oP@1t1>=IfvPM48)LNM$<(0o;uUK`e^G(O>s>_V+adC zFHC22^7?MxQ-wvHv4cG1)-M54PrNskjg~@nbLHNOF|Qe5oHBxw$BByCKU^vz?i;nh zU$}49G;GpneB*87Mf0+J&S4(=r3DBfa2iVB62OjSOVXek_cV4uEMHJdMVjcupF*Zj z!A^D|T+yKGx8zVgw83}aZklv?4T|hg&+&yf8t&3s3gM@{~I`qPQ+qKfm9j4of~j z*-4%(b&82F5Djx&#InA3hC?lT?D|@1fT&Qzs;>eNxSS8g-!?AL*@ubivEtYP+lCm?h?S|FjS@XN) z7X2$BisFr2e8^B%UIOINVuAn)x?7bgM}gpG)j}%q)OcChLiWB%H&qZ;Dev(45UW0o*R7A&MV&?@SsQXDXf;q7w~ZA4%Z=2`-dw9;~#}2qaWd& z!`=hVdliu!??d6asLsp9F1l;Ie3}RmqU+G+{fqfX_+(3jFMZwEI6hVvhZbC{eATn0 zp^-5VDHjwC@w>O6>&&cYg zl-64%RK~s|EkMpo?|Rrl8bkTF5g%;i@PI|NTIGC~55X^K*&v`H^^pLTl#@ht7AW)e zA#n49^d1PiL+EWf^ZCm!N66<%#5ucNcCcy4GwZ>C=O>!54N$@h zG>$R4Q_1LWb9InjifP(uRxsMEc}wbfcvawS3f!wQS$w|Z)V|v8>$o=4Hcb`l@w41p z1f>=y%kA zjZci%rtuZs1qD$MGxq`7@dmB&I&{@IyvatMKA=_$og~BTDp3XZpEj^*7&RG}O%-MvZ;NOJBy=EneFyH#p8}{?dXwlt@A@%!{<WQ|a5EZM&hdN?{ri^>bd{NB`p z#zLLVo^`@&Yt4U|ps2~6v<(%KpOAc^z&S(+f~QFpg(pZzQCK)lGe1&;Ji#Z0WwX7YJN625ROl^F?)y4ul@zC&sf)3!VU4tiNQgezJe1r zGV;3$xr0&9$!r|e&#ojHIPX4FPzE#XZ~5C&?{^#-4{A_9DPFg%I92A4`I^`V~+Rmr^CRgYJAgOn1iLBOv`aU2t72 z0B#V&8{6;_)&&@4D}C7olk^0tc}wylVv}OidQ7((%Xv1s=`dpEfcmkZXL6R`F^l;3 zP&o3U(MRC3R@Bl}f5Uzd_@~n1v%heY zdp^w31KkP5iNRKW1#HOpfn`Ho32xx5vvJ5K%L%6#{q+yzi)T}EU>$Dm!9?sw&?7we zPj(^2NNi5=`R=0`C%L2fP*8*}xpSS3(#^SYjiNOX)PveXd*74BdSg$BC33yqHg(?< zxWQGy$YwKlHJPcPg1&wd{yri*f+k34Q!MDIHvv>`Jx>gdrMSCIKlHqxETe&L;84^e z23q)t+;Ann9eV;_i?XjV0yPdW;y;)R^pODrR*f2pLZOekAH9;P1&dCDGL@~VuS{k= znV*xX>65j0k6gUAdex?-a-*!luzWZ?p8Y*=@bDwO`&G@#CU!#h^mhSBT&88gl0tny z)Ln4X(^tSIxi!cdLt>$XDaul8z(Xr#EkL@D z%J|!rW4Zroo_35OiO%;bZNHZorA)${#0xauJ)Xi9jQ?=)CoIJ7Zv~0^6kPhT=$?UE(yz0D_=b96CdMJDFTMUt8>ib#aA?CRcF#Z=tv@&pfvj&R7 zfn|st#B6j`Kp==m7Z#|YF@HrLG8@L`DTeh*NZIrpo%Bc^M9M0oPY1D zPE`;=pBYo$6dDvEx%wS$)R=3W^F9-~0 z@?sORULlA7L^jMgA@}vc{cAknqsMo1Ej9;>x`MQ1F6X=B{&`S2m+$JEzqpUBQ9P<` zy7BJ}lvh7^wxs|0Q%!M0|7Ls2ZZukRFwi3HPvI7|7{;SO{%v@p%j{1sh<25t0TXKP zkExB}0`hcTcYgsk!k@d0j^&_7mVSTrAr;JP@Jzx|?7^LWg|OAVqb1Mw)KiJ+w7PI- zHlR<&54M)CF%PL(WwdYB#m{Rl4khIx=+ZV{B*GeSoWo+1L`jG(IMOZ2s(8q74TlmpH570;UMYH zHsJdwD*`7!4?PNIt%+sHY{rcv4psu!c=YMXzcR}&raDZn%GbO9a8V&OIUwMtzsG=K zRrb}&} zDggr)?}Wd;;;NbP(m9LNWb5zEmEvTh$TAb+ZyF>mguSsscl1&YN?Hg@Uag< z>hCA#@!WH&<)L<8ZV_1bTy2XOeE@Bhg3o&~0=-psCi{YWQ@K<-o_mG}jfjrF`wcvZ zK0@L4MRz=Ch}DzR`s5wSEo7fGg!eX=g7e+R_x>2B(nGN?jE>_(kcZDUdVQ{Ef+#A9 z5#!es9y5{f{NJNqhcnOZJFVM0iJRH%!|eae1u}SZ);Flb`8^n3(n|1-qJjnpzus7_48`DB2!hsg@SoAsm%b~}B1?#9VU8IWReTBL(u-;D#YlYu}mGHLXVB2p;*hbZf>G};1A~C(ylUx<^dt9Na;t4s(Vii zGT&nvpnD}Ko)8Ljr{~%#PFDHdrJ*F8q%%Ymz-Lo^(s>$UkbIw|hhJBX@-e@_n2ilR zNFb2g#U7l=V;Om${!h@g1j)kyqb8X7oy6Y#% zzp2p`)B0S7igYHMFAO;|qo0Vl1D9|3Moq>_zWBMDZd{OY}VR=6NNv`#{TsY ztBiwxX_4vt%NY}q79@!?f_V>L?+(w2&DA4mcHcW{Iora8Z9dw0yN{(?vIjXZx}oE4 zKxaBPX|M5(-boJ;@1OCs{~aGFDwA9Hn2ol4OX)m2 zU-#-{rI?1>ceX2{^4%#|M!n z!iP|MP8!>kg=Us>uJiolZxn;>zTaYz@3w@UJTp!7x$|KP=L z$?(6Nz`aNcct7#CDSK+iX~r;0A(l9?LLP{OrGo-~{|sPtm-O2`hjhTd?l=zFM}WD? zm95;)cc6#J(#O-+&)@B5^Bu;ZbG_b03Ov+YOG@`M5RzoQ6!trw40 z*2N%?@26t8xIcZ)q3y`NUl*?;h&^?7>0|7@czzIn7|lai?)8BPL$i$K>~+Fd8NMN< zd0p~47epIBIhw|xY?Lr*5ga6+w70F~)4-^M;D3?oS?c_6rLq(`IL>=lZF#(OC5>n% z08;Dh$5&~csb!Fo6JI_|RK@9tfe->{1_=s|&F)=g02;?g-}*o3I11cfS2(e(2M2XE zODAV?egw_tgclJJgO32~0QsbP8!u{iPBZQEx>dRZrO$QAOqW|P1p}nCS3mr?V24q| zac(pM5Fd}_w-sLNljs72UdC8hMyH-Cs)&#nj2PaT)Gt(%?Wj7P;)f|*5gIOkIF%oa zHiV^Fmq*fn_o*Hn`1GWh5igU7$b_S zg%6v^i=owPFSrd~yLjR5yH%aatR2bM^G7;a)@9(DGH6y)7s-jpv}fjRh7j$pKjf|B z#wUkD?e2kJ`-YY305EihM7IG>>p-i>AfZw8<8V?Z`-PHqaiX?(MVherjpf=NK9tgQ zqf`2*8Xwn*{Vm;9^V*bO@GT1oMqS-S6r#@J13vp&gb11$Ob#u9F`#M==8oPIG1k30 z?*iF4P~+vazqJd|cNGHr<%QaGmb|_3>e};+gOg6ER@9-wMJ#qynr)_ZLpiS5!}Syt zM!9nZ;h8pZgGH$06$l-hAFq#Ei%BBGbn7GF+Q%~cB)lgZ$v6pN( zsiJ_q*U(=9ClYNhcPQZkkSRz%hv5!#P_gdA+t{rb)_04)b-nLVtVOC$e%`mv&xjD6 z`rP<3>;r8&>vLD5u0gL0ugWwLQ0`@UCI~H(J2Z?(x=6`nSbq>8#qjhzJ1Z%D&SvP{=%7TW^ZV^a5<_!ZwAIex7xo%28wy_WG+fEa!^~IPn0*aR#KR= z>8Pgy_V8dZ!ynuyQ5e_pDG z)I-0fyjw-5xgrLm1(2hz2&eU~j|l!H=sY*HY$^>D6tj+%_b;rUB-XMe8srxZwaEW z)Z(h7paOXcy@#`vk|Kp(jatyf3?j%AQg)kQOA?44iZVS>Z_nZFWA8VZwre8Pd!hF? z8{v`Qc(St8pu5*UnPr|rku`F|c5jDoxUu#vCTunf3uix;87>rWy0m=g03kd!_>G~z1)jSQiJeJuR@`mwemK}M z9a?l&$6BWI4YWx0uUQ7349K15|6Q*dc3Gm!fl$im+D6TuMcCB=b|D3~`BXrMjd?l?5)OPwF%UF5Dz5v|9!UijYy1X4I7 zrC0K4o^HwgcjKh$ftynRV8vj<`z!>B|7OpQufyFewbQ-+Mxl97=DM8o%8kE?@*v89 zB|MXf2_ZUHWl}V$dvh`BX}TDRU;pv3|X7*^yvU;5=G-2wD#K4f5e9!?>w6BK-GgcB*3)J>i ztPTBcUgFf-)U2l86}cx(ie*AMaftV5tnkiBF-|1z{SaFX+B>fGqCEp(zr)0?b!=76 zABa?(fo{G;kc9v~ad)fjnKIseY~4l8P>QJ>WI8?kUT*&7-BBLTuCqCl9UxJV5*-ye zC=w4uWC*JWkvubwASoQ^FnNoZ_kh;-O&NxhBxWnwPXGo&`n+~5Y*jDoKQ1zS(%Tw9 zk4P*EHEK>?b8VcHM3hKcLhm|n1Fjg5w~D3BGOfN29mI0NUa+05_{UZaU5{padkTMWn6qU3kihqL8|;;Dzf z8r0D#KyZY|vSPJxWE37bbbrd$Qq{RQ2g56cm&?nXc>88M5*J!;AA_|cQZSE7zv0c} zfWj*$8NV76Lq^LCn?~BzCU>_f{(hU@)Tl}neHkU{C|TfcIvgJx$?;PEN!N@T>QTdV zBK|9_GbdJw0|HPC_Kcoin(jk~PVO^fR5xf75aNLPmW7@c51X-x1)Z_qRP?T~TF0Pm zJK)+#&)dhu(1LQ``+ALECWX;U9`jb=*vG}7+t8R!W-V~=6cKqZt>sjv8FH$m)QJY`f%h?KJ9 zuPGg7b$IFJd+xzA&6KKmqYiH>85=U_OxUYWwAHwhmz~NhA)My5nxlA}_eN^W7VCM; z(OJZ5?0wOxNRAMxXI{x9=y543D<(Sh2I0mQK0Jc|D{KfaOppj&9Sg|3eS}JQs+BUl zcp8SbYd_~N=4`zt|KMp-fNW))m1q1J5_eHO%GhSYY!_$C<_%@@RT`&_p@eVxLtI|!-`>A}2 z^vTqDwV4M+G*@$FYX-8j?XR14A3?)*1%8?V@u0rHTTBWj_n+E>Ws^Ll7^(@SFRyzd z=2Y<#4Rn*dMU9}2kRbTC$f;jL(K3><4f9~m9j>RyG(SSQ=QlI6{;;(6A?7AeMO-5S8ffR3(wbq+q@ayZm9P` z>yh69JjPN$TV!z0FEr2h_&WjXENh{GJQUu>ZM*jtE30G&&QeJ17a9>FhP(~lDgmMY z(;d$G!2(QPs_{rjK0duUgksW#H)VX0efI7razSctx8l_O><~)7i zf>Vq1hi&wr4R&{I`MNSYNrWx6#+`#tUn-_$?o+4i#ko=_M<+E1T=qoboWE6LJWnDo zTmWLxrsbZLByry7^uYTYQwbijuv6J2imz& zllq_Z=t1X>WuO1q6|0S+Hf%hz+UTVilFmfHbSCE+cvUqcDOySV3qH908+f5AqR`*p z?PH_wE%o}0L*HB+vTbK3s>Pb&CLBAM3`$e>J5aY_aMmi>U_8qmV{v#pW}uK zKOmCN;MxHonBILJ&8k-15>$^8E5 z4`#_xVis*fmWCU%B1)+CTcieDjb%Ga8Bzg1E+Kc?rxG2rY3X4i6nM~sa~|+|sfGRF zW-?gZhdn=2DSoec6BUpoIM$&lvI7OX65YH`m=vhla73uLQbc-x#00cs-fWZfpH*jK z(_c$ulxp33i`drfAx}!*E@fY87GQKCrz`IPmkp^OD8<&yI*p_V^uU_mbU@e*^?QI% zXFhI&Z_Vl$q`^dJ@21`QIB`D2ETLkK*q>{|D>l_9JeB{MW zbzj9YwmL6{I@5Jjd%)QavT4M7+!+z^e7u<(ET~bkp2#Ew6nHnuZAF1P%zjcf!8IU6 zUKe%nr}}m0w${Swasm;URWt#XGa?zBwkRkNIr+HJ55gwz>h}@aliRJ1N0(k4{oy0V z$kj{sksYq8G>oQDe?^U=OhY*xj>)3i&gY((G)|DV_n-{aMC83gOW+3t?`{n{Hj4cr zY~sO2AF)9K^Gq+28#R|Lk@#3W;EvF?mcb|-Uuv@(%VxLycdH`cF7{g^y>{#k>o7%! zShbGUdbS`XR8cm~Eu>p9SH?+DA-G(K_B1TC-Rs&i2;#Sg|Hf|7sw^btz5cVQw}i%n z*|a)Ma2%}0TaDJ}sfM@b#oy3CP^qxKykSFB-i>cbAcXin#f0?85}w3&u8Olx#)fUG zBKT8F5pO1-rwB-YD{Cgwm6L)VUtrF!q09%>cKh8c2X5I!#%IfTolyJC4IjFUi(#Ap zzL_ArfaMhEUctf?`%PcIzqUP2v9e-NyX6UOPy{bNaugvYq$#a&LsmqYhKD++MI4^93jh5SP_E+EX~ z4!ox~QfGnmwQ$dm1LFU%=Zp7tPwi%_J4wK&o_@VlpR7Gw>S^6w7NQAQQ$KCY{(VsE zR2`@yG?^t{U3TlYyBsljRXd4s_k~}YEYyrtzX+fA-KGApgUpo5E0)h5Ai6nPZO^`C60yMLO$7{cgXWl~ z$|p7l7pFwEZI>0U#688IFh|7#JTq@NBXm!>S)SLM8c)HZgx04RM+TXkX24%VTYdl5 zRKJA9<;uwDMv1G#bTqJ6KA3J+S6vlK)0#r+IpjAc5;Vh~NRSa<>x0pp(K7FLGbFSX z*qSanE^r46Mrickm;LhB*lawG#dKrVKbGKe46dgruDeLkOCK=6eXLkPoM!0`-YhO(uVCM^;V_M%}X za#{SN3m2=+BV#kvHV+wgm>;Hn<}~|iC8lwb7HXv1ThvoJn*tvm@6fx>7YyC7h`==Z zb!2XHuhYLMCxsbF_`FBS;lxcj!8<#qi1{$)Jnid9g+!1I?)Z@f${=IPj~g)6Uj(X5 zhPzDgLRI^W+d)~iq%f1GU4w|CREPD+M?M~NJq-7O%-%g}8(Ih9$aR5T5A({L0iiIE zIpV;gkBs|IJm`#2Dq42nOPbOYNiXBQrg74ny^nU(;g?SiI-RaOYPx@lPT_RZDwad$ z8`)|jzlEk?N6+Kvp9;l!x}zuO3QwxT#kFn{o(Mx89@1g(pa+GD50JL;Bly^4Eze-V ze{aTY7FVTiYN@~?pg#DWZfOltMc}CxXs&%9Sruj62r}M0m zKGYb6cjVC1Rrxg7?>0=&yDMBjZujl#I+bkBDoM|zLB#RPCIkx^pxskH2{OZ7^n3S(EgD;%blB`3HM?DT zY-~y50Yj4U?;&IaNxu#fefa$tnZ)T5EpfdIB`V{Ns`m=nh zKLsj87@HJR0rBup8dG1-_?*6VffiOvJ3Dv}-TC9%lcjCGOtY%-Cf3qf4 zvToMi(by!a=d8JQ=uQ+y(cK^cJuTR)>$ohU*y?ikUuJHMldQa)I{vqC{ktxtJ;W}x?(Qyd^rAYbw#4^G6?&W&8Z~Y~C0n5}TUq<_-_2o-C)jW++qDg zQ>8m-a6SPaW>Rh89j)3CNew_mq0T#2l^BI=zO+~i-x$`E=cY^6BSSFrpK2FF-~FN? z1^@eb@AI5zq|)E^-1i)@bYb91%4aeAq!I5BoQ@s0oSVsUXAbpTQe@!D1F7h8PBb2Y zwKhCnB%(v+6x~CdjA?wW9K1XI#qc4>TH%m=W41hK_G!~IY1W?Cya>W#Cz>MzcX-r-?%QgUe=tKsr^jt9kcB@=sMno$O+-ZRhtUw!H#LOFx;MvZF(%S59(bwVG5Mh4EsjM;=$P;< zB_^YE+tkO~@Vcug!D<5#-vAPXOIQ*>M-!x2{#qVkSomJ*%3%nrg`GvHdpMNk8G)5Q zSY1VN($a1I>kVEzulr0b@K$Y95xDd`{pK;=%qXvQ?4SmKgB{s?KpQnH$)}!OuKeV? z03(}Tz)k=)LU3RA^=~lQ+le~Xv{3Z-9^I|xAbfjU;n=M;sBjagyNiY-LY00=d73VcyH|*`G^8_zgN^?ya59(w7(W&oZ za1w2XQLv(*OK20p)Y)_mTFe0wM*R=}Kr)Q&rkC<%j6w>K=w`kY zN8odS@DIq2h$6koUlXCr6J%>K_P&oKZE#3KkZ`T6`=Z}k%qocoY?P85v*&3r_rvLv z=h73q-vXEeA=0&yFO7sT-jWTu_k)2a>^O{mMu*1`?Q-^p=V1=89HUxOfWYGBb_sk0 zux_LsM)u97fXL0_=l*X{OXKmTqHc-4;aAMIq6^h+;%)abM0?Y4S+(NEc(~)O1$KLh ztWS!DH@=~T&TWR)#<+Tmj!3=X;vN^=hDv-)x?oSwp+(hk5kOUydsA7oCW^{?_|Uo) zbvs4^clEK-4|V!IJC6g#PjLpD188pX%C}oDno3 z=OH7urpy}+6b$Lz*cySJz0-`}o3OW$R2>YL6gL_YPISNzOUX@TgG%G)#9ovT zfvfIWfWKf<%3&DzcFz&`H0}(dWSsE? z88V^;TKBrYZvJP{OQOWCa!Y-DMwd8chaii72>+{`5>2#W7!Tecf20!3F9)yJ-OEu-St2=u-Lv^+yFDQX&m=WE;-x*k^ph$sSt!Lip~W zec=1uSUl|DPo*TQc$CCtDcm24uyx9nTtzYS{X&s?$5H?qxXAS);-AI7x<}P-!1UbP zF}P}qN#Yi{wMK!_82C;wWK!06Iw`qbX21S-#|BkJFA8^F>VW|v!I788uw#_)Qpp!k zr;E7TBv)rr2tBe}gBSC}l?@ECQEr=UN0o({6t>i{sHeU`Z|E z4c!@ombi6mTvzk659g%_j-)oF9diBM;Zs;~C!`?)=2V3?y2*E^f1rA7kL7AkS-1Ps z*Ss3?+V4!F{`K=;*~sH1)|Duw4_8Oj!e4qRV4|V%@|P`e{ksU*Q!hI2olAVoXF}gz zM(Bt;%Bhu-iTL!T3*ei`;xIXMeDV255DgqkBRlJD?CTw4q{E!-hadZD$5kwJDH1PZ%({tu+5x}5M(0BqUImh-|r z3uy~UH-5>=6U*EeGvzQIK9+Cv)2`(KYVhrcAtCU9mEHG_sq`9xEe@@uE$ar%fL<8r zvzr3;+wOyOp{X*DF2N5+(}TEL@I>~j@IxPBkOdjIR9sM@HH7h(-)8W+-!Y;!3p1=J zjO7`uIDmax%k8|MAb&n|UDW)5xw>yS*Rg1Y7~N(qIocGFX`ZaX-UIj+QULC9(Hhb1 zTGQ5Y{qyY;5OQ)zsVNNF;*pn1f1Xoj8S7fOJ7X}oURfm@Pk_<2GXVN7Nf3#M}hYY_AQ14 zS-yym9|TlN@EV)BnteK8<1+ketcuxnnNRbx3K=9DW~vIMn0vkm1*eoYDWupfH$7}n5VW>^}BY*jXPlzJ~8&MaJo zD`&rQ1}3)Kbiv^F*kyw#V{U()wrhDmxTWnHo{5ZAKA;pvs{w*i`bT}P7%)}lRghOw zoAiQNcj$4k7nz;E{}X=mTAp+Ay*_#`4~dpfv7>Jumf$2F|1>+2 zernVvu3>hs-cn$9#GtPmY_(PfJS9C=2VQwUY_7Fld)%Of6M3Yy*%cxrJ7a&{1TOiS z9R8S3il#&^o|O*%+|s$wm&VXf6jyLKs{>NFGKE)smi$KE2kw&1CwzDSKe&x2)@u`6 zlZqRsBLK=94N19@!gd>5y74jlPYc@zDDrHfDI>_z?nO?dV{x&0{)6$QoZSAg*G4kZ zN_{`T;KD6fdCyEF@jh=3DX1v*vrr@sYE!-u|8pQQm4M-mtaB1zdPqo2zhZ$0d-5K~ zDmDM!12WSxXyiHJB|{OYg8 zY$BHnm6YxeD7l#9^1l(5mtR_ZsI=lr^}dAxl`YwA3?jnYR4qSFmFn7@NdksFPKi*w zhjw?w*!|r8MTU+zr+*?8NPS5=+sBDC!Uc0AX`?V)JBF^zh1BL|EccdqoEIO+^NP+W zx)W>3aqdJGyhHUD#bmoe13$hc;5cne0R$g%3^BW15 z!XQ&bc>#L5{}JYFste!*h^&@T3NC_6FWiSZC=NlB73yxtk)=Uj`Q~s8wa|MpU+$wb zi77`f00lRjlZpvFYCAiepWWni!rMYSE1_MIR-|0!>wuQ5U;AQ=aH}L11nABsqZ0@0 z%Tb`GlPGTDMfL@U0pC|AW<<-_fV1ZKY5z>g&G;7HoL1`t)AwQf59x?8wIxu4-N>yL zZYbg#4e733S7~x)p@}|F?`){UTmbC&lh&eM5MEls=`rVunuQFO+4r7BAUxae(vY?( z?f0mKH*mu&o_3h62;2$aZD}g9D?GHUXWUC)OoTtT+%dzO##9%CINPbT8Fh^0FmzZ+ z%S~h%Bx3N^a1hMaVhb)4!)HcGQ5f8;pQ&Y*H(|bamFts$gK4+o%UVL}_4Ja#3YWBT z_mVkTHscAhIHA24wAZ0-vg-{r(2z#~{PpVFKmGI%>sES5*ui87g23#v#ba$izt2D=8tzPR%}7gk_H3bE z*~Ytt7@{uV2TY!!hhK*aUi!Pu+f|o0e3!qu2&Ze6mxb>_1J@T#5$a~Yc ziEz>}M8E8=$xl`9j6)du$UB$qKYuuAJAJagLh9_k)F>ZtRJKCfHETh7*Uh4KDEaQa zcUKG;kNP}2hb3^KiKSDw73~ck7Nuy=vrBsT!WrI$ z4`xq(e|A;Cv9lZs#PhtzCE63A0nmT>vdjorm;CKqXuG$89V*-nXu*CAjThA#4BA&x zZhX@Dgnxfec@kpRV;K`p{Pv)S1?@R$y-#T*FN>S7_(NRWTYW<|u8X7{AI$P%EaT~2 z-*ECWC1(HR=m`+ojqfp7q_NF!82>(m5Alr)8&2>MeK`7d<2eXy>Q@h{#KV} z+`DGtn(f;@8uKI6D+1oq1&e-yFa4QY3kADoyqh7w;D#^wa}^^Mf&mNA(5*4CkV&m{ zR*;GEUU6MLmFy*BM6EjGd@W7JZq>6OK7ARe2HxA$4Qt061fx(Gu7&CLZ*Hzuz{$+U z%n;WiPT2h?cvJuuIATK5@6)F`;K4#d8l1*O`|b@1b<@5C{pJQ6?|60$r^me=3V6rQ zf1-F?$Zr0f(Gal}jcPbC<9sk_>ryBu5&_*?2|QkDrn%e3)(1ZLInAoTHYtmw53xl^ z4?3-#5K@#z8Q5kr6RGIGv;-%F){SvKj+&7qmD7YG9?u)+NIB16xm*owZ>aVuwhbkn?$78D{I--y!AL=AoVJrJ<{l&$UH~kZ= zZUv7=zJNxxgc3$ZCzkpLD@uT6BT%|=`t}EdXU|cS?cEtCd^e^PbZqBSPz|um{$HoO z?(V&QCL2ye{TCf4@e&N2FsTP8C&%}FwEx-$f?bllQko@zPkY~!N2R(AfuczqaWZvUl==Sq3D#JW~dBKCYp-aO&@PC#=!Thk5_Bb}Q+?-x zCOwGX`YsQnImii5ttp)iko<_SX%QaRA@2WO{94yU2Hdgz&ef#y&-C>4?a4ATGc)y` z;#^&t;cwTAI=Unu7gxt%L6_uVfKK{fWlJGVQIeEo(DGQ>{h?90nxAd8B6(O2Y<2VM z4dSr&cTiY9!z4@sSkuEYXTWvJn1aq$$d0(KfP#ho-Smb4Xv|G?V?qF?;<^WS=FoxlH z+&Zkm&bhZ%tP4rJbu$p>>-P+cxl4upgYkcfGS{!2*LUl!Q=~{5poA)@Q|#?l93`?@ z7+~(Bt5l&o!SL2qw8J6$5B$(l0QaAw8Lzaxjb_-R80Yj9tGZEG)5_p>jze3h+E>8|$ML#6%X?Z62r=50$_P+T>o`>PW zyNoqtnM63r#w<)mWyG5ptWpziFSI8wm-H# zq`266FRu^K2nFNTDQN!6^aKEfBIJd3#DQ4coBU^0r{`r9XRUL5IN4AVPCkFWsihzU z{I3;KS&Szb%3G;vSf^z5c~NQHPLbljP5_3;rscfmMt-H8=k6 zPs4<*`Bhm%O}*!gTkJK<9W`Gh+72=VZs2y||E*e7wMF50uP9J_k_W74K=#J}AnN}= zBSi?Sb6HmDmFug2Und%bHm@8t|M#W;c@_#e zV{= z(ukncj7UkhGzdtybdCrJ($Ywbv~+{yNH<7#cQZo`!^F4mU%c=0Jny&vm^}x_W*>Xj zy7pREoY#3)evqLf9Fa?nz5ajhBcItgB7I9G!qY{eVTe`a$$#FXv9WY~`SbamrO=Fx zJ6um0>%pRV8J~Lo?Jz;iPfW_`-EL+OeLqmf95>9!G@!une+L)%28^%Z?%umH(c+7n zTc49d`|N7|@0k7btsLcGd0XbSiH!Wqe4qUEy49n`%gd|d88MuV;zPtGrwp(ch}XB;&n07Yk+VMCSQ6%rzg z2ZT=A0^9bd%R_>_z*+vcZr|3_(4^thPe@A><8XrVUEeS&k0pyN~w5eEEU_B$iuiaWk#D0N=!{m1mE?vL(#S8 zKRI4m4Gj%9w+Sn2kTo0DX}Syz>Bd1Y&SZAuo2Nubh&EncMa9O}7VHP;5Q9To@W=B_ zo?C-@lT`;!X<%uxzqy3)~XwCNX_xgxg zE$5?mJgY@o1e~Yq>8m60cR`}IBKj>KYxR{Tj~pkXwTD%1Eu62PL_|dJ^m7i|9#%p6 zA;+VmIda(B7(D;=Z&Vf3XfYqkftjy&41(@$?2h~e-@bjD#%1xmX9k{CxjK|K+S=Os zd{h%GkN*}Cb$GP&&&UO zWPHS>fVP2(k>vhBejLn5S8QtzT}S#GL54KLEvLt!c-- zDk9O-;?E8sGhiQ5_4JE7=D3=0SD6bU$glh?&-cfgR9ed5Z5#3?DNvd^|x6y-ER4H1$NZL0+wH!7!<#DA9N;NSon zS{6-VvxI~R1a}F<&g$*c>U<_S?f2X2gs6efcT@SFhG>V@s#5!`%{57KjLfi zaIX!CHp$-H;fyA~S!CChcUxN~*@fzlfZ+p?JVoouyn~L&wllJmctqiM;uZ?ah&N5%V>Gz?e)xKmb{NwAe)ZcvZ8$ zrRDIUffL^a;_5oD^!6`OSsfj#i!TRLTQnD3oSa}sOjhG^WU65G3&F9id>I+ltVGBR zq@%q9U?5ITk7J;Ev|;W?L_(yfsH&(6du5?;rVHoGKL!{8EiEj%x;s%N6s;geCo3Ep4 zRmKqix*%ZsK9{SRUR%B^S8@K(seD!mR#9&%c{%lMgb~KjE(EWBfB1|i9-yUPj^Gp_ zKbs6YQ{7%gZBDLh_jh^>kE^X6A!txTLk9XG3X#`ui&V^#+fzA5d6T z0ce{#I+g>j4{K~R57FyfVgNm-n4&B?CNgqj(&6m#wEj%)3B%3Z9JQVArg!!*A12Ia zKAF?k!#Km@I9OpYVv1k@36oN*-g`7gTCDI_3^nj zZh31Adj+2r)~#2t(~v=R<5E)}gAQQgM~bHaDT-l>kG6wM-n3MC46H)QbRXvJ?X3y} zQ)d6YHa`FE(7S}USzF4?)cIv~b$KP*a+I0*bLELS)Z1|1^AISOHWaF-Ec>07&OPu^ z^(q}TIds33D9+S`tKFZH9F4+W6QBqBr=p{MHeXFSP~m_^Vw+_g?&hpq{a`IAgE;D7 zS1{}nn`QNSL2mBBY)jL$=#Y-8>PQlgK`(yePw4p3Z1r|*EO$lH z*4C`+)(q5y?Pn1nR(rhjaC~cgc2>{Gi2BjP4+qtLT@P&QYiddiYmsW@w8|GEUMDx) zrputZ);n8627h~Y{-I1g7$IfS$$`Fm_inM9q)|+nIbT6C;HJ}4_BIrR@LzVV%S!;UUr4rCka%PUr*LgDnw_LFnyuv-}#Jykr@0l-0sN)FyG!)@QGrTCbRL zz@P1x`{CBg@t1p)m0`^M<^6)Z0WR{DDa4(VSx{f!&=g58uh#{n!Y>~cJ^6yP{CEfc zOzQ+yX>Jy3SyU2sSh?Pl_%v}Zj8Vd;Q`BY{9)EC|%y-KF{CZGXnUR6vA+AY19M3;LScy1vYG_Clxlj&-dFw3=BT!16(=djdOFA2QjXFS@0t*TP6vQ z!5NO1+zVy!T)MO$uN6JUv!{G)K*-Vw`TJNHe@L~F#$_Jri3neukJqv$Vi zl;n?@G00krG2ksa?)_dKyz&>1yiE4iDBw)^Fr%TwVeDJKx{;6oEQQVcq}ap5fkCTr z=!v`7S@N@HHynmIFelS{HVfJfURIPCz}*fC3Y(Zdj*HrHio@Xg6HhACu&u*Julf8! zv4jD_XiB0ReN2kbEixh)kqcd2$^3Sb16mBh#l`tww)IDdByElF$&&6=2;x>DtyeF!1&9ttGpqq=6C;s1_A#l13ja zpEr3TNZVI>y1P8w-6KAR%i5Olq!d0c980}0s&{1Ee9K>De*&E|-Xm{i{$c~q{YXzw zr>2A^KwUe{*D0eFRjzLx?jFhZ)|7u}Y-|#pnpCt)Vm^ z{uiG{`tNV?NQ}6?|3}d*=+~b`Ur$2XGp{eMpIi&SP>tY;XnEffj|>V9d>0ZG)z>tN znobB)XpU}ovbBvnA|$NtqEOK<6XwhoFB8oD&5It%l$al*3XIQ;{ZIx=awKe)TG`UQ zAd62MopW4n42tWd3Aox!CWHDstJ1FXC_T8{M-IlTWPrcnACU168*iAj`aKVBjG`}4 z%4q+Zrc;&PzHNWE@M|kNPxWH9#)h&l&~h-P0g4Zpl?%~0-1(mK&Is<(u>}2{RA%(v zIKPTyf7+FMy3E2r)lucB)S$jIpJt2qCHC|v!#80y;$jveAhRQ89zI_WFl7fxv=KGu zqvS&@>;@*Ft=aA+0~L)**4Fn0HqOt*-05H64uMDK*E<4I@V@ZkWGO|$a5aMg9J`2S zOMNxt>u1-7&0gPiU3OJJ*Bo?|lJ^mB4h#JF@BYK}e zl!)mWCGzs~-)nuE+|&Nju}O4HZSk>4eAxMxKcMHFiwEFWZbN`F`{*R#Pxkb5sdIsO z14fP{SmM$Xaa=lORN%I;Z}Q)yA6Cc$p1x5#hprKtmX?|bbSHg`8y^o)P|y5*h9#t) zl2{9&!J$d$A8G%IiTZYU0OX1DZ3-5C9gQerTg#jzfrHJwJK5)uzTL)q-s)3I%rl+?uM*t8#XhgbrF+TZcwW%j6F zn=ZANAWN;iz0FMvPH?Ehve|rKFzU{DYxVZv(eW|sZ_oLu(tPMrgD(MQ{GkpED=5yb zRI0lFL3bRQavAYljXdtjHNRYa?(auFPH5g?rgI%4As9Okrm5l3|?n z7%s3iD{I=I-r=rEC-vgH;Tk7Acy_xzpnD zADg!pNnNUHoeT`bUflun-Teq+AJ-sXlnkUgUAy<(k&{z&Zb$V+(Zz*F(X>N} z<|6) z)w(8_o~DlFVjF!WQd#qGRSE4R`k_boZN}{n(u@ai57%DF59b%T2!1(PT2K zQEwzAZw3frV)r1ld?r+_IxU{RJO}HstFcuO=#6xUCz$`)P7u8Ov0(nXEU%G<{`>ci z3`h|XkzPc<6r!owuX4R0Zz%7fpFP*ZX764SQsVn2IFGVsr{w@&{6dRe@(H1L#>3WQ zgeky_#n08cTo0Ag;m|70uk&D8kC8DH>Tz#I5XecO3|lHIZFb|Hx>9VPl(j|2G#L+% zWM{8MUQJnId-flN%p>pJL@b0fAZ@E&SHvJnYfBS30lITiteu_Rb0<3oZ3%C~*>_Qv zXQ4cHYxeRs-%jS|nx9!B^+xU=ODC-unhT{JK8c-?+Xvi#$Mly6o&RxB)SBU;u@ zcCX??CD$7kmY@JG&nT6nkissy*fXHK1urct-OIFTp=2H0tvc>7Wj>EUa}2CL@k5_I zUdB>t_Tp07|1p$;rAYn!CpAKyL4pp>&L>!$>+aaoqOmj4++F`m=?-tQ0gmf|hqMZ|VPCK_2QPiZxer($s_xZUwOw zt5HX0!^CjSwyIIJU-swrR~4iG7{R38Z~AQF|C#^#-Tib6TJe4nB^7p!S2mCqb}vIf zqTcKVKs{SN|IxucO?T|8vt%glq0UCwEr431M0jB2EGhIY0k}c7>kbQRmj3rO*6Yi| zQ&ZU1mZb&C)N;Mve%asLA9}rlyZu1q!!A(}?7IMn;(P-^xyy%1+M)@HNxmQ0qnbIR zC*o$!eI1`J|3azTwTADp^$jlxaV52WDa@+e4o~j(+H@j@=wF36(FCcVS0QT|);?>0+Vr3CXvTf(InNL;Yeg5h zK%&ha$l**aslRmOEdlaFk2=ClmUq>R1&N711 z_^;-Do}-w90yPIG_|?|8$yVfVmW~O9QN6}+Mi^oI9xFR>TFOV|8DYc4FImc5hgeGQ zRo9pQ>^)NQHif#>MqQ53q%;Z$8`7I)ovgF=?kCw$ObVh$Z0PkX&-she6X!~GaI?oM zBjqjWXJJ!o-3#dXtwj;%l^dK+i&crBmu5yZy4 zyk-yG6rSP5jgp3vi2FsW_8s`ac9>sx@N^c`tsrd=iR{h+BbZ+9`7|62n91h+f(7l{ zpS23T8(5rwq7G+tgj3r3k0S%FC^*Gn#5Pbzlm`2~<{IKdfNzQ5rpaw<6(J zDa2PU=HEZsI$dV69vR0r>y;t%$)3ib$ujEUy9L`Gj_s%yBX0@SiktmPiv%qumY}*i zvWk-@M{m%Sjza>Gq_9$fx3;!LUS8gMsV7h$)I$s)N-uWM!4(7~zIS!&PYr(YGXXwK z{DG!fjFn1;#|$1_yYK9poy@cBv_U@*KX|sDFrgLH&Fs!++?q>~lbM5;laWzLdpnN* zN*0=MPQyDGm|WGP(Ef2#;DT98`+|9$Hnl7d5-pZ@8uDA?Pn8t1!)dl^a;bGl*+=g~ z65WeVcQq8d2&LvrV555_(ryKPi)!r&9gHMKJbRHkdpIKQa7C#1!Q<^ZSzl@m!*Fmn z=u7a`D$r4*d8&xe&^R2pJImtjHQ*oVlsc>Tte=J!7c2TeMHDC%S3Zp%1qKmgUPOqZ2ExWjqR zSj^OnN#+}2B&Wro+{&Me!+E_QlRGgt&_Sx0)6j$RGjTZ2W?W*T&4G!o?z4{??e84e zWTcrzE-sXnRFZI3fCvxDuXA;__p<_Xev&GJTRskh$%PPx>XmC}%988Ek}E*woqM`10 z=hj@IPPqPFQios-vJ)G) zlei>el~rt}rfV;uPebm(?3C{>U!p#DOnuT}+Om=f;G30rDc)RMttkKXWGoHW7pY8P zF@EJA3E}ZFOib_FMg_4!uBZoe*f^fj`yCl6R#eS#hDzV+NT>F)pN4I*vv^)1E#8Js z^@|XPZqpFsfbg8mm!rJy>Y6|;hFeo#N*nWDw5zA5@_>IKrMlgu!R)TtLWmUfZAjOz z5U0__4sHTvrWd>A>8oQv9p&WlO9h4SpdblZsBX&(;qUvtpQ7;pTJKVQfZ>~|uLM$n zF5?eKba91$UHs)!G?RX^5+ZZ|#3TCHCTDRb=!)cgOlv67u3(MHQKE+TLC;nNd^GXNvB-T0lgi$E9mR%^Td!|xa?8@_pF%z z@W>a#Je7g+Mj5E8zRH@$yiCy}(V0dUV!XZw${jC5|7Z*i7-?!~cuiM-?2B7kGVUZj zST4W5ney(_#~EG7V}V|NBu(f?#vkWnysWI6g_-*LKU`g1-)VJwy1GW3>=utfH^UPd z)?D0oVlorBv{KApQU$mwx~e#;tfhB$MVyL?iRMB&wG&TIiGo!pBEg5$(n&43^}DqkLS(-~xP-2-$>&f^o0vcBcquYZC0qUrH*1wY z^n?1gO^wQr)8mAp*Bn+^y!1@uS8-b1WAhaJKamS-SuE26dG|V=toG9n;QsQ5;ynDO z_*_ty&r4%HhwD~Leb8sK*XU|6Ped)3uc3erEMq1VqC=hX^hBKh&=RHRg3>orbrVErg{|m!P(i!;jlMs zntkRy>Lc~m!5jSN1F19xLkC+lgpWKpCW*2g{~^VSd@Q7Y-zEevAA73!Y%=4){pYwO?&m^i`j}!V{LvB9hN6N(6t4Ni#{{}6 z821kUSB;E!`SN_b`Zb>u@;@f~mLIv!Uv1^hDeBLHGaiiTX$@5f^0ZqS8RDqFqkCfg zk4n5g2Ui5#66VfUraR6(d$iP` zsK5k)Ld`*{?|S#AJJJmsK6PCmrlq_NH7o{_rBcu$pon;;=ES$|Bo2=D=*>y4w;vl~S+bXpVZjd~imU9|pIZrpyrz@?CQn+DqFw!vw65K$ zPlnt};-&Pb^_-sQQ8yrwSbYg|-=B`R^4b{Uk1`d)N=;Pnt46pgzs|a8CA4A^;Qc(j z$RgGGH`WUeHdM!M&(#(K^sNPfHXCQ&rw4GpgwDRNJz{)LE^b;{JI7q(d)YslAMn#A z`mfjzLhrdwh9_R&Otg*iY`UqG?f`<}lKTlrPD$hUPan=zxf5lLUf|@}+1US@Z2&*+ z>JbPif2jEn?M;FNaUZQLgC6x)YDl_)8StbyBg~hng#kpDL}N_e>gro z0txB$NE7b@**m993W+YnwVBQ4p;+DJ#l;iZ8Ggt!g#)ydW8sqX$#z+tt^MJ|_st?y^E=`uObwcevr>YQuMr}m zKok`H8tEt*|8>0(0{)EAy#1>d@L+kd`?k|Nwki3B@+rW&U*3eC>WUhW8$ zQ--*#ZS=)+tmJw4QRwwiwm7e5#~kCKH^AlBy=>_TDbl@XK>ZUa4r4Lc4|e!1xJdvN z`4Z1qJ=O)jenobl_#}!An0f(0JEXYCXArz>@(};A^pJlg);S!2;F23+lW`mW_~6QH3(jGFQPmGXxQlp>fi|QFDlaKrdb}( z+cCp8H8mwCCr?AljvaL%`?ZF=5GeZh<)`x7;N@jU^#6juB!B3g>#N&WXY9=-uz8gf zY-+5THx>oO#NgrRptjQhIKJM$4D!E-uz*i>@Q zf1e#ND-CwNcb5~xXH3XyIA!SRgc$!F9aw)7G!m9a|G`_>;Qc9*$uv=h=grgqwT1uw z?e&NtxQJCw0#$ibEt@*eQGn~`xxkwgU4B3?@GpncdgxBY{$*5-a8baqq7q+O9{v#;#pW z*7+`mJIcdz_fJpx&FFfMbt~-quUnSy7 zX<%>sy`rP7-Qs^;wy84E`}Z%@8pp=g2~=iEON<2Urb-eLsF?P|*5ssR>+0)Uyss@0 z*51U$W^!Ff32yGemFf%1SK+SdWB4K!8P%chtWqQa_V$t6d#`PO zC5faT(ht=BAq*q3M|q&#=Uh`7g)xBMRu+cv@nhua25fsUHABF~Ozp#8HQehR&lS1g z5c)qACnu|@4ii#b1Z=@axPG|zJ~6S|Dgc$mEQnwRGlU)VKYrZ!d$CC#x=scHz+6)E zo`Wf)r&}YZz1s%>_K1)dNl8VOkeDdqJ9W?(&+dC@vbwrTiu>~bbUhtRNVzqbS#8!8 z-r%~OpO@b-U}b1%Xd`dq;BffmE>TZ3BjrQ>_UNz`k`CzWFDp?DD!A2{9Wo*^df z>Gy2_-oVffJrZXD^McLIzGmRFvP?}5O(;2((gk}?QKwtO%F4>8{rHoLlht|82{lY_ zSZ}Hz5hoW{5>Ij8zz|WMQ)4t)jg6ll!=T)K`1*BTMa9lm>HI%FmH-PtBm=p>3Or;1 z!1)J2BZ1!adli2$hwBE;&d$u1GZ&T)Y^Jd@MMfOt4D?)vhW1d39po*Wt&s3lh&BC|CK zvO94-MM^^*9gk>hZki%(df=XynHdlOzm?2uM7MK19j}Jy=mAu>qx2`#S{Bk72(YA> zrpqJ$!U*R&(jHK26d`{_=5NX70Ci4 z@Vvf$C~|vozJ6$EnwD3eih*iF8+?jH0ssl=$~Nc~a&s(?T51#Wgx?u(7C{jInp1dj zaYUKj9t{mu;|abKv2J{=qvdvX+Pckx+bT^1uH}1mi2$OVtAqW09&YZ6ZyYa7HWKlR zi$7d_pP6X=Wfb#hhF(tb;&0!^ z{-ZB8&*c$_-+)^cFpf(7 zo?7XIZ_SaDc*2co7{}}Q!v$O0z`2*lmH}%$m+RLEEMRkbhC?QpcmbV;Fm0)2_~$*Q zE!Z9%zrSd_0`>{YMyAcWK$}TfDE~oM?R<)XgaSAGMF%oOmGk-w=rOejKmVVEg53#u zG3@B5z>i?0pwp7L7&d~IXRMiGKZ*$KYEl!TQ*M$YvV)8p8pnEko*$@Z>#&XkZ z6RP7`zpDD_Q-6F<3<=f)6Mf+k`C<*9fbj$D%#WW0Dk>@ptV8&2)kl1|T(+kWZ{!Tu zKY!#Wcno;1=_hNOishKu2J?bdGP0v~P^;VNO5KHn=;B5q#Gr0sev^akHEL=ot+C)X z=!%e(PyjhQJ1f8deP-L>D#k3(#tf_Ox60ztY~un7K-WQEf)0^<$_6OFj9#G5Y6G?nBjWSoLx^ZxNOTlk*WY@g@kPg;E)^9O zC&wTE#a>Kt8_!Q2GlVQuq{?{jb_Up4shGR&$^D5@ASyYi;V#yA?@-px)yL|R8hk$C9GFo?Wm-g8uPixdmc z0s^Ss?_VJn78XCkEiEnmXmLRBsIB>zH8cjmuoB$410)j<=Nb%xFVEbde7Mk%uQJlo zIOW5Ld>7hJ!x<8n%E*octH0)kEnkE7M`q)%R#wF1K7Fcc<9p6?Gu>QosOlgcfBa`F zJt2W@XJSHYs9Y}y<^8Gd^I4yqn%d7S2oI0)=U)$C$5(m0`1R#q;ej^;F(ekEJZ#ak z)mC<-P{f$bsdbvL14Bj4XT@aR7$ylixz5PJL7+ze{B~@v?W2f0IUOrNlq>h68xRlq z$GpUTGn^;(4E7CeNyQvop+xANG!Rz6Wcj2IB=bfwtv9$^%F4>gHQfLpr%qv=l5fVA zoO1<4LYqZ8y~kOfT>*M~Sj*EHc}Jj|HE?bjcM5`cLAFs=N^M zubiImgLVMSj1W>&|2?nr9+0*6s(HJOLacxI9%dET-OKSKvBq)V)YWP*rP5}6Ys+p3 z1PP$PruYdg(YbWaUo2kNui+C1bi6iFcB~h65h>VU_i0gJ<0Aoo=JZ3NYyxmpZ&-4& zFOKK=u0&kcexqVmZ2aDwFkrU-ym?gvRZasd_ln+Uaqh)0HeEi$pH;&1^F{kzrOn48mUO@pF zp6G*-Bva82VWwz64;s%4?m~je8#KC%nmpuH{ZG;7TaAtK@$4ZXA=_J9fcB3j5`Qo| z{^!q)9@OVl{kPeO_-IVa65oKG-BU>KHpm+~YNDq7*pG%spNf)l=*C;h6OISgGBTSw zJ*o=_^;6TDFi=2V1Ax11`mgmeBK~z3Mq=>)Y|ab;7}($|UyG*y0`>I94j)WJI234a zhyLMXDbp679BC|;GpQx`{eBSu=TaL&?WT6+3>2e7v^`|086!{b!oHPTYD%v?Mw2m$ z=C(`5+{_xWzLoBCwnLuhQ0kCP97TRy^_`j7>z0+36`$en*giJY%u#m~2tXm1q*1Wf zdmQQymC^9(zIMcTvGg)v+Bm%5dy8mViNAyQ!+LweRIw>RYSg?UD5x`Dau?`yOC`k# z+VO2Z<5HAY@mQf87jstYcRWClPBeYgHP}u5Zes1o$&(d^{*3w^9sWUP!w>Y2#@q2w8|6E;K{w3zS z#Q~7(KEg1+p4CtAW&&WUC#43LQez0p9_{4MvWRWW)#=OF1_`FRs)uH8-Hzd*WQ=jP zp%ivI5Z|K`ZWjPOl<&WLcg!K+%AzUoCdg>(aK2uDha5at#qB>|=Ol>PJ=n?JSh#W} z#aUV5BVYYSPv=LaY0c_eigE|792(UB4Lv+Fr#=9o*g*C{F`tUvLEJJP7@)cw4)Mc0 zv<`gdviXE%IvEj#$l7kZ?Tk?Ewzz>wN)q$%>wYMYM4#^;BEJtpdf0JI*7*+CQzhTn*B0>L;`Gl7~VWLqtT1e+08e7bGa4N3}RgD^aO z+U0SzO#?`bYFxia5J67^Ify8mA0zJKg(KLA*4q(V!)bCmP70qMWNuyHB7DAKZbYW9 z8$?^(AyPH(j%GygU}P9b&WnldsRrF zR5GeQ3T_2`%dyM~OuoNfM{Tg0f#<%V{6n0uJpAX%&(&^KAAteNl7rlWg1ZEF$v9xE ztEQ<8dV24YgCIU07+Pm=c5EB$A>tt2p2lCd?o{}UO+d)ut(ENY`rl2QAfh_h5=c4xe z_uyh@;yNuo`_iY%Z9R>zFvE!XW3hP}zTZs4Pd|P_a|Sr7l;syuQ&WHS;J(Ms5E9`Zx5F6^Xi^ELeiKd0{(eEBG$Vvv z_=0x-kG|bDWSFW-wdx_eA9vZFR&TQu7$)wmuvk1@_TclK55b(oK1}#Lrey&zNZd`$ z{Jtvl4>8fh{aZ_$(9NPmIuL+Y1lQoRXWoG<$vc^+~BsN9&)#tsjzAF?4(T`}Fi$eXfdcy}y}Oo`!y)?AMd%`%;wJ%tW^%ir1#3OyYC<$zxC+%C(QSg7%?9_xMs^?Q5E=i! zyv@FsR|lU-3TkUf_S>A#V(vdepeMP?eDH|d;RFSSsFBVyY||yFA2?-)c92``X+A6G zG$bI5n61n4joQy&?6FFyok!7;(p##TT!O5chfP)^##PrT<9>M5YDX}F((gOSY_%j( zPe^-m5{TM*ZYCB&ZYIq%9U!HablTPhcUd6RiHQ?!7evLL$4l<3Yu@ZCZ1S@5&bUeU0H_i!#QMf&sV+% z+|pEUXe%jRUb9}-ROYzZ37xUnWRhnP;4>fRH>kA#|5*d0t45dcYcI{_W4*O-=~_fW!?XO9{w z63dNR6iBFaj$8`zHjCFec7GZ-`?ZBQl$PEDMHHi-*Vo0sJ_f$`TrjNH6Y};eZO(G{ z>gu`J^hP7Z1Ad*%i;0!o4RhsP7tByc23@Qr;%d&c{9b8jY8)OKRMr4+5KGM7o^2GP zE-hRXOiM-mgFL^yJ|@A)Raab^n%iQJ$kmAZC&N64mnVYJ@~?8L_L zOO1A@Y;gV5<4KfZ6qH`ro?mN)F(@MVOi42c$jFnq^q&xPC7vdv`F?|7RO5J(WbTAL zO~+Z>*Kp4Xs80Wg>gZ)fBUqS!|KM!rpjipcgrN}bsQ(IVA+0Xd?;AQqi_Ij9dl`5Y zsvfupGM|k^oBZZu;Bk|;`zUFyHgq-Eo+GI^$Fjj==ssd@=gl}f+WCgvZjhDi$;$BsBbhhbnqiD??;iBKoy;KC ze||bxXc-UrXI-T$y&7HbQDQ$)H7_6`z^6`$ANyt%E&z;CGn*{T0`hZIKrZhzKO|3jx|>(JnPyzC%hi@9Y>g9l@N+Bq8qkyfA@OEyouY2SNuBwE_od)?EAVRMF$t8l z4v=}Wl~FtkWf^h-2>TD?vU754blp~{Xc-v3RCR`e5&ADt^snp_@+|)(DSQnwd|h%$ zf2E~7r!$q_}lSxh<>3Q=sQ*y4*zPC2P-N(tHZ?tDOnI zHi?oPJ`RCF=0%9}jtoEo+@1v7;|2>bH6?At8@zJe_w@|vgDvP!{vGQA(Ty%ab68kO z@Q9<+IViIRisQ+c#|jN83jtk3j(@!qUIt5K0_fCyzL4RYX>K5$evg0=8?bJeIYhWf zgj#MY2c&cs`xBK|CPw!x7r!sPu)wr2z8SP}Y_(J^;kqg>HF8A76j$^kqJS5w&2`1( zuEUBB#;X!`%AuOOp=7)Xx=q(g0dxU(JUZWs>M;%{a=RE2`5Lf5AWcr~T>RN+|CQrw zSF{ooe}f9*g^JzLHK(D$7VDHEUHrbb^g?WYmCC6nqcPSVhFvl;jTIhO4}>U+&55h+als_9 zDaPl^aa9^7OD2F^d$n7a1S#4ykh{#ft`!b{@+O>Fpv+`b)m@te^>XJCR|-QbpK-J9 zD+@g5$zuv&mU$Lq!4!0Rm3T@bo*~yjpozgzNHDJ)Ad-b;W-{4tR`$H(de)e`&~SM) zPe2-SH$>1y+;W=f-mAjK>x)A{m-a{cA*#0o<5pScC!wrdf)Sj&RbQpr*-U?#wS8%nk=>{sPwDw` zd2_nh_E_%^zQVNMKx zYrf)B3=&UVf#A~v2Lk)0crO(vm%n{09#hv*m7{;Jj71FkZsNJ$Af2s=mf_?=i&cG# z|Lk39Aw;3zkZ=7dZ*Yc$=dkCMB&9If+1{jGCZd0`7_P*jhb|Emo-Vx7~YQsG#+h_qXV|k zTCDborPg2jAw0ZD6hDd~#oBN#nbGZ+xoN%_Iyr$rq8>~f;E$#8y);Yg#hG}o9F?r=y&@~w}w-z6f3qL3$}Qc1-6 z`Ubn&YYZa3Zg**>S5c}PA{}1>trQI>rJ#R@R9r>x20dW@6-F6xyhwKl@$=C%q*;H{|qpSJ?==I|Vo1@BVw z?;=@B z9LI-WhmI4T4{z+U>vS>%zXa=i>(ml(4Dyvr;E zlq7i39UZJ6+gbC%NlaY7E2qbHX=9#q@laEp-jE^}lP_|{Ho8|^eouE7#_P^OQ7c*b zE6l7?3%hs`v9!lz=mO_KDw;U0(1V;G`s?01?NGyzyv$08uWi$3?_Bk`RXD$g4;a0( zvT!mn^zH&_xdlNl9XV(Rq}e-Bs9+%K=()SUe0Sn2Uw30=JN(n;i?4TApkrt zLCcbp*~CuN-MMYFS)h_C(jsqXydcJTTAWT$%jk_#`S+1{W#x&F8D_%=vtJ?fg*J>F zDw%G`Wi|n{*&TWoye@fxnMs`GX(b#K@zRzFs>}S>sc&wx*8dcF8fiK-3eSZXCJuEF z!SKB(+d0p@nqBr7QrY#MsnRY`cDZTJF1&WYj)Vw!>Hj~n-a4SE@a-EHMM>$Dn1D3W zU6Ym)0VyfzQbJnBCfy-OsW9noloX^(x=R=x0s{sP7~AjoJa7D-@B1Hrox{$#?{i<* z^{Mxr)S5LLsapZgH~_ey$FWT+!EE$%t9m!rzk-xb`M}IT!OoQ>%-i0<&?mxn@u=_- z6V?YpcBF9Zi|M>H8`ylB4;f71%*%~#t|Q;j^VLoG0D|!U;#l)fbnL_buk(yIi>AX)p#*zNVtZPKH0R zWLu7J)eo)oOMO(AAX)*%$==*n`LRLVbsPbgeAfWrh833He?jtV!`CF{w)wPXvLB)0 zc;^)@Eq#Cg(#Mv|+tfaRrh%J^hWq_?sw@YDT?U2I7m*R$ohnE!GsaPFa{`sxUp4lx zZaaaBUL=KDZk%EPCy=r)fg2m^hp2x7yI;A7oh5PWT0idn3=6w|^9bxAzxeYp<0fzC zaN~sR^Q6NYw?CO8Z$%xMg-L9>2$CZrmzSCQE^}7iRk=l!!sn!I`gDp0UHLf4_GLX~bqVPGV z=Q@2He}}~`$4%3s=rLPUv@m$&0x%)4f52@`lFD90xSL9Bt9pm#M%v7!Wylyy26U(C zONVl2Z4QMFYshZd76iGKc^I?g3<>1=UJQQ3RUeKre`*R~B@9GxToF`itTERMVt-yr z0@B+Eob)Zj%Ie0s5IsTAz^$Z($VGbEj1G~*+s+=VnVF^&Nza^-4qgiW7ZtfMz$MT2 z(?ngwScNuPnp)7R4L@C7O?}}+KQ(-e7xCFr6KR^G>1T&EBf!;X#30BiYb->A7k#22 zR;{zYdVd7}P**f7Hf`}4Y}lJ(!ML>h-G^RWD4q?${P04c>kPGy(wks$0n&OZ@))+n znCk5e)8j_>m9mS&7TBuW_3xHIlEoUPFqs0F3usR1J2dMk&{g5DPw=Z=BVG9))<3w2 zA0+K!Kkd6Z!f8^z(@$k(_R&czi(f)H;p$K;KsX!Aa~U5U?}@Tjkp8yNc{eUO3=1&) z2&3d}$gcd4=9Ofq2B~7^PVn#s21jIk(8(pu0f;;VIhT^z%8x{_>1Q>t4v=9bH_16y zX?f6%=CIqYzWQcZp9k_i z5r&(~VP}-Z`nI70L14XbX6lM1I*#t~$FQm{9bMD17z0kXho5q>%7s3GxH@tfdMRd4da#9QgeI>U#hXIjMKXi$`+yy?1Rh&GVb%kb0xZmCCnr@vgYblln5{!bCyW z7y%Xko4GN2|8I)5->}6-CZ{{5FZrK!VTRU+xCgT!1-SR$s*YHA1)d} z(UU7Hx-x=wL?ZA^mO9K18 z9sLO-e!|~oe!V?h^u333cjC_2;CsF6GzV8fq6k5=HaDHz7_SVF<4#v`?Tb*whgg37 zk;WnJS|d>*8$r*Ev6jcalTU={<&Y#KaXoNgLPVBp&Fd{4hX)C}(~+C2FB@d=wk|)o zv!TsMfBWydLeO26RA>g)q3*n5wWc# zj=YwRro~r3X&iqF6|(LF84zck(-0_$gSk6HI0@T81ttN3T2 zHx>~QkwMWvf(N~y@g~+Cp&cQ!7v=F{kx)*T4D~_Be~m}cvyqH4Mq1j#QBdml2j)C@ z90DH(*oU|o>d;S=G`>6x2FlI&V%a?SpM$V6ndUm z`19vOxtpHs6x$d>G<`G}pjq5WYRn0P_PxHPHLS%e>1^Si0sBJM(~uXcEC(|%oI*D4 zq~X`0RU~qbfc5>aufOO{ItH-o{3c?{44^B%<9ToCS=gDdzoewC;n#ZDJIpTX$(!&n zO5efk=u^87$K#fdf1Gz<$8Zf-`_nS?8lQ+UuGJ>urWX?@AE0z$66Z=Yn;qR6WO34$ zAcMSMuF@`El@1yc{yQTE1d4)AT0ZvZdaX z7!Lo9sLG>mE*E`XI2e|*+yCuXVv?b_F$=2_I@Y4sd1H;tk9I^Ni-j0OYl416R@->| zEA+OmhGv4@F1HNzoUPZnCG^z$>=|4}h36H1!vfOIPJ;;ao7g&*pWwQwW$k#i5#&IW z_KOW}YSKif&FlAcaHsv|y6G&XH;x5xLfz_nZP@c?oGc+*$vb#?xbQ}H6U5ZCNWW2& zA8b->RcR214;!w8*>!b(o&f=ys2G*m)W}KD;$NDY;k=?;p%=<2Hw0KbO;a5xW}%Pb znTPoWX0-`5cVOL-=j-#~CmRSoO&8wAlyzBV+(du8b%=_$7%T;kp`T)hMGbk2Hjhp(VxgVXIAEdVPk(q0CGet;H;<0pu9^O=_V z0UC7qMG`9DC0aAYLBD0~sCAE#9{bah??c>hh@LwCm#~J{IiEB5rv$C2{H`ty8N+A? z$3oV%6lhEcZUkfusv8R8!6!oFP+84EO}|U0R+b69g7+p^>BA6VwK6W%;CXjfNYaR=Hx>XS6=`xI+D4WWapvqbt%}S| zH)GgCjfU9;dS!hx2U|6V%Jo$63AG}{k(?r#CA=F~ai?0?JEtP9hvxw`9xwI%8)xHB zi7EH`LOS-mjS>El;6eunC6Ih_`zIUx<3VTCf%Ts)j;Y1Gh&a-lKdhzdJ=hXgQ|LS@ z;$5T1DqHC2c#`tc)Qa8RXhlhM32L#rmknHzmTabF%b{_HrSqK(Epk1y=|(Z-Dqaf=@a-=x)Y($2XGSzA~g zo@%}qS(r%MqyJ_TUb{KGE{j3OAEEX(H14LP;tzAdA@^#cidhTl>O!fgFjND8_#oXl zcYZ0u(obe)_O~E}cZosrWJQ?wYRNhZfpO@q`FR^}&=7r@DAS^@E)Z zMI!83*_6i9RbS}{@*4&1IisnJb%3(zk&1*s6(*rEy6R=KZ6V|88Y?fWkKv|SQcruU z_x9+PrkSt=O31SA1?#xLIA-8~VJ-jm6%!=YC?NcDHGn;ce^aP_hC7_mUXe!0Z9pt? z6@&*`a#15NZyu_6&@EZn%NMJ|v5-!r&7RXfcbpjRS*eSL1|bow_s+S>1ruvhY8X>~~x8gLPrv|oI= z^yhGCd0AlW$vP>w4#P13@L!?#XSA!>1?lVUZEclZUoJ)_Foh=>goJ#&>bvSu0!Yf& zvsLIeb9IfNAirmR_AjPUE>q7#3NGy$MNVTzIl>qoy!P`Wn=&-u|6m=ftR-cOs72JL z>5ql6QUC<6e$;e1MlAP{sPSRY)h`!$aDM^|LH|69Dn=u!p;1Wb9r-)f=c6eEh>zXp zLJly_>8VN>rTP34KXzPJUbJ>0{0pT5zx#5V*VLMnwTE$7-MN~U7T-H2Dc=)7!xu2 zYe0F+yx#AA5ZM9WcNYnCUe;Tm7bv{bTEx%6#G$g7xG?lsY>ayp04OASG~9KLm-M>? z(b8*=OTR}t0co+X9}lO@?$4C(_Ad4jk)(b7^}AOff!4M_P(YQjq_j$(%(d*4-vu8& zi#Rz~CA|$Gj@t_-<<_l^_gnuw#V!;qjwe|RemzuF9Gr+~ zF8QRs)e70GL#C!s>C;D4lbcaaj2Au2URMUYgnN459ikNL3t{otilvQ&Zm&L)_FALf zjD`-hsiB?QXf7_!Wzb=NvyltGjSu70LO;K3IeDM$%Fj?I1n>rbx1XEu`#zK6B&ZWQ z4I?;z@9@NXZR11SVeeXg)BZ$OLTiJN8~&eA4$^KIUdjXmPGzvzPmpt^9Ff#svVR#j zOHEYeA{oO%DO?_;W1p)|> zHDscE?jJk*GmHp{>o;3jK&vh<$2(!Nl)N8h4ry`o6Lwn5Z+5wVFY+sXeE9U1YupQ3 zj(}C^c9%J4oWxXJaWr0&QMfz_v_$2UtE-7=w*exUJ+fyETf@G)T}O5c&Ob)cGaKASbk}CGYhO*jmXG6tGD;6 z`3MwQ+tOL*-HPE-sD#f_ot-ayFNbKu#wHbyJs@UTaazZZz|>Va)`jqznbE}7dDmaz zWcWpH_C~%)7%J1JZ6!xOSn|nzelcz)RB=HO17_s2q`~hqWJnkokK=Z!z?Ow?+LsuO z?ziZ*&O4>I=hMB!M}B?UbhcLZTzGn?e(c)cqclDH^F}@3ZS9y3gDNi*Av#+a__g$+|CMHH5K{zY);&j=b4t0_6Oxl{)ZF!$a50=$LR)u?lf%D9mIaX!# zNZkWYEJrwl<4NfEjZ|iH6w~FVoC4~i(j36%#@H`w46%WjTBnNs;;KcHm|dFlH^sQ3 ztwY#4I;J`i&dhII@gk46k3ZM8hwHvX$U;lHEFsYjp#gFT)N{vW(_nc!A}Nk{OqmU@ zFcPXhM?enpq=!CH$s7bl{>i#D)o?=B}v3)bXlhRgkX$JF!I@VowKc*%+yp}tG|)zf+x$LX+h~xge~7UxVau7 zWZL>CWiD;38JP(T3@4eM9KAXhXoYel(vWlnCdNpUo z6>VQqHx)hCQn4(3$rC@ZP>b3+x+S?sUa`Ge7$kz6`6tqCHz_*W;yZ+K>$%!XyWR5D zmt#XK*8hK6dm_AGJ+$cRYPvdj%rs0hc!`%KlF(ahrPmt{0&J}nzM^0CIO)>1mWRH4 zd_TP_FASmY0)%2>h3UCR3CL@6(E+6EBvF#*y66HDM~{wD!=ml&&B%zT=BcFfG&7O_ znAnX@jlfL#To-{b*_;GBwBFP*3)igg&l(A)E?+EBo6m6wGz35Pz-O8L_)A<5~FnQt;JYJT)+cxb4H?#6Nx zzM@$4(`R)vl|pN`C;n{ZGHi20KS@A|#0qtUMs>!=FurhnLkLI0ew~Dv=M%-VW|QGM zI24nTxLvW+kT11+x~mb;7NR)!*K$1 z7AZRJmwljWbUf=O3Hs

cc1$v!^^X2v5)0w2x9xIh#Mu%F&3J@^drsnAihBS0=J<#)d zW7R_b7E{c%;EX7MBiIljAd6_iz;R|~e{xd%ZK+n{Ra8Ul(MG$sGb9_LxMG@Ke%_k2 z80)4$iFz-D6bUS|i}M{LE!@SS?&ZLS zv7x0e-`5xL_;dTox0YaC9`I=IjVKW@z<@3VCdPQ3Y;JZh2H*B-N05Ts`i3kuGgcR+ zqzeUeW*9|8aPpEt+uQRHNe91C+Gfk*+?m(GJClSuHH6}K(BOw=JXc9X?XC-s$tbyz z7QS-|v1KccEBtG!(&O~{w7L(&21vbpJ7`e3!_b{H%R>Cl5VbO)x@C~x?vScF>;+)6 zTf8|P#US9PUgqUl_T2Opio><3CZPl)dtfRV3l7k)5g?`m5j5dlurH!wlu-SF`YZ*w z2ecXer|upi(s}XqCu0V3%!JwWHn7V*9}XmrdFa+oZu{2 z(iC{m7QZ@qWwHKh-QlpK)+iP4^1TtsS`EY^Y}c=^>`yGO{EYFN)+109zI@fnO)h_< zSjW7fBRwCw+Ps_}@KV1;jQS_!7niOSGIAKTCZ%7<_9RT0tVz@>yNPsC(j@l3y~Lo4 zaQddE-yc}rQbSkKZlE#V;1@u~%C`EnZTZPwR3Si4F27IVC-~7ri~t4vkY^kF`IHn; z`ZAbz!*c213EoD&5AC6i068FHP5~gbn%V>*bjLwM2!K+VS3%X5X1M#8*^9-_`x1@B zjKOY=2v0>}1XP?NXLbDdrhuu?xfV75^LC$AG{Uj(FH9VF96vo0gCx!xbws5(`byy`ZrTED zv9KiE3m7iNN*n%70jVLVDU7q~5_->`!Sd~fuDG1XRqNhQ8yGvvS*Ida%Z)~!_Vxft z^$GwTcjDUU_nvvEUo||0C8ESUox1HO({OT1$6ZSx0O+0e!o(ykQ&3X~#m+W=skaB_*AvWKo^m>>%=+ug8h#dUcJKr6%^dX50$xbs{gy)sDw;mO+E zLj>r_kMUqmUdrU~q?7rzj;M2)FjwgPEB|i3OuBl(2%R3Gx~ZYovbvS4|1~8yh*M>_ zO_(!Sc(~u-wXsy>W3&>Es8>@$%~I>x)g-Og|=-zYsPx-$f*8_1OuZle(=a;h@2U{^hG{54~$m zorL4lf(JI4Jf}ly7@-RU>j6qz@2h4H<+?^AL{Sx|0O-dkR=^x(-kZmc<|h9#KksOA zf;JdLu*Tyzr5WG}D0-dIUr+t}8=;5t^7ZSzwO-ogUCPi0PfrRx9tWBzeDYE%c&Hi$ zpx4f*d>RB1`t5pu@~+Fk&c%_SCbbh}i`$eY@1z4{o|glc3!(qUFe)o-2=kU?t272q zO%x2GMgrJ~E1#*x5XvCpETv5xNizXH+PI?E>^1L`s&KLLF>?MaC81$Ek`^Tu~vO=SKxLBZbBAnTbwc_YTc7StWcl?sQHMRVKQ@Rk4=+0>M zpm$2NPaDTl1PbTp0C~Abq61A*w1d`oqNpmTm-5&r(}D!=Gow8SNE!-2Xma3(2zr{( zv?!S77!v=!h&*;5=~O68DQIvJJri*0_{&ZWJ63k{vn0Fj(((o-4Fzn04p;$@rhx4V zinST5U%!=ixBM3?I;M(EO5>J#Enn+Xp5O8A7ZOka_mrR_Ku(}DP`gnP`bQQ3KGBG4 z1F%GuD55jJ2c|1V=obS2IBSos4I=2dn;dML>V17eIp~lQbKUEza-#;CPcgGpR@SC1Z zN!@PONQN3DW*d1m8h3@fVbF)~N!QBjL|g1sPiyRZ00Y>ay^l{q_HSW=LN(#fg_pS# zM;;1OLQC2n{k+pFNW_4wemW0ggy!dDjfRbNgctCAGv_52005yEW|fNfTItz;=Xw6T zvj$$602x970C5bYBeVxJ&E`AembMXkQnuMge~S*Zq_n1Ok(%Oc`tV|kDi%Ly0oxk< zH(=8-P`TFik0jVwK>lTMKFJ&UwhNY?1ll1D2gYKuWxdNpliP*mC9|Eb&gsXW%0B6!eON=pk{qI=YIhlIArnoa>i>8o{yVHL9#)? zr|do}R};a9^|1>WpoP0-9QZ4C%`v^2SD-bP7emr?i?*^Milsh!&E4kUySk?EaZ?}` z|6=F#G&8nF(f6jTY_)@gI`Qj&@s#`PnLt`!z}Z>G4x0$mv&y2C2?T0GA#ST;7dcg^ z=}F;N!^AL_^`HlnSzU4=p7w@q&V-=L7=ySPtN~5^%I@aMb_J^z4V9EG93uon;>qWkf%BfUebU zLFnO&)<`D~6tlG14IT@GwzQq^uYJ7%`#pf4c6{CPCM=cs?#jxQ_J--gtGGKl^Vvij zFWPO%_#R$lfWzl5=>`Xk<~YyyV=KFEVjqZ}P53!n-5kMGvvPc(1behOi@m|Q?9(fG zEu&N6Y%o&8F@{SB8B^D$*`W6n3@XU!6LJEatZPrs6j0s*aLqpqXXn&FU}EU}_u^`q-sKY^e;#EgpmYs889ul%q94?%f>S@2 zdJ{)P%i$V-jt z1prj6HGYYEF_fh^wcLvf?4&McA&JgO8cjyQRX6sl<+f$1Y0>0Vyph{RSmiiQM zdDRUhW{a`G$I|lkCld#g0*DT1QGnU?n}F5M@dSWWLO@7WL3-^Gp(S=ZdP+-p6KBw0 zcr+jHNdb7X-iX=wL$X(&I#r7teoMegn}%tTd;I*3;;3~ zV!;=T$EX*yImdto!+n9iv~rZM5MP;&K;fQ!rfm#~epWMuF2xS>oN8 zzw5_&TH`{u)IHitWVd6@B=$6PINKYR6v~R5Wv-?_UHpxIY3EGd7StZ`e{``M_Gsqe ztAokc<;K5WgXHytqdRjN^k%H2`Z(8zsL$w*G@+B3gZU8VMWTq9WuRnu@rZ4Psd@kJ zcBAOu*B4+&4NSD8o96>trJ+mC0Ne%DQK@cqs<~xFDmKpqi9CJDC!zd>HV!ptV(a#= z;crIY#GLjfjlSFWqg-eWXgcp$fm-E&(Er?6f@kTJCd`GER2G|^HI6vBb2Uf9N~k?) zqG8mWUzGHsVAB?2QE&hzDLX(}3+Y8cn`95w8aD*e#yl(BhC;X7v_~rg)S#zM0Oi{b zPQ*O^_n(KrMSkqGD)%G5WLQ>VRQ^?C)zvXWLjx9N!Z?#b-dkyBEtzJ+vu9WfWmOVS zX>qd@`kc8Su5<>+&298EI^+s{Ow9A=3EciA*ISSGzkF%jTXr48-ajq;B~W2z0FIQc z>UCthRW;+6z43?+E~@t9x3+Sr{gHYW-47s01B6;Bvc)D9O`H>oI|WQP_}ZAIG?agaQRZ~} z{fQY_Q`irq8`HZ^?j?u~OvJ)mxln`8bryLT?X?a$LDf%Q{NyIuY8dXQyY9Wq#?#I_ ziC6vTa!npiF22_q8=vPRd&>=ga-5rt$IqFOsMHaWU{HO!8>aCh2^C6*hYpF2gs z&=)RIR%LXXd_0m~;i{M?$F(Vs*Y0^KOTJhbma*D$-aN}AR(45BonDfE@N>|^9H!>) z(gG=$F>2R*p#NGOg?P&Dvb%|=CFLGeHqpWLL!=E;oHG87Ptvnm-{`FnM+deVn~ZF9 z_`IoaAwPfGO*rN#Qc?iOky4)DR|))(TJXx{QV$BD9imqA z&iBWnD=Yz7q0$~1`T5N)Q`>P((yWEpM=;P}fPWICoQi_w@>4)TEe@8;N%c%*Wyu?x zzZEj^DqmAXD>E4_BL&Prsa?Du+79($WjPFW%hE@7ej-91SD4y*5+U}`^3NLuC;J^> zoGQ3-ZrFXhh?-Pc|L8xyctGGH;`0M&JB^sgl=IudhJ15 z7_%0(*2=;hvNk!xtF-`5=P&loR3-bpBK+HhXzX6+YPfIJllz8qM3h?o3!O~itCo^< z@ISe$@~Q(tm*jVZgbVqz{jK4v)@CV~if&yS<%#2497rdhPtm`)nRFnOZpFQ>a#Xu4 zd;g7t-tyZvHd?O&uF3!LQgWR;K266mc4MkG$A(@HBeCaypLp0uc+yunK_|c%;V0x? zFuxYt-MT4kd(i)!IiB9>S_=!xWo#y4D11V9rK0tRB%J`q;~Zb%uATPC&r$ME^uPPC z1)9Nc-dxo$sra6_bBIbA8D?6&^nF#~`aArK9Qo}q?(6}A{F7K-pI_Lf)B9Z8^8N=c zDX^`Kakod;gi@XvZH8luAD9y{Gz<))$jE?y@xpM+hzNksO9BKd3si$NKfxDEz^e$^ z$Pa;P?0hWjj$|zDR{qTK(|fy!{;a)a>GH2^l}2`|3>6qQt!U>h z^Xpw^OiY?$?uPF)RJpq^ppR1x#L8}_Xb+ohE%=sGpwl9;EnmAKZDTZ2vl>;_%g2uxn&Vi9_$8 zY`fy9b%dLZ#8Ks1$HhGk+T>xB=7)7%E)}Io!&jwS;n3IF_AYJwuE6dHz#|}5G)D&k zpT*R?BL(~0OL4N!YkB>e&K=JfA-ko(N5O*wb*mF+^gDK)^3^>!Iu~KcGezK`apLfN z#pF8@0*GQUBB$bE?_;4rFphsnP$!;`#KceMMoPh|(!Fi|5gYlpx z{nNywm;33HG>%Mwolp*6Ij^j+A3e=3&$Ga&&0QUY+f98G0X?AHKe9U3pi_d<7D|6$ z=h_!qoeTS@fC<7H^t?#L+aZyL$;{~8&-~>g_MV+eNtjADhB2Nc#;kH`?&YUo0Gv|J zCqOynfusSWNBkx^W9CTcKuq!YSrLa&U_8p)eBK*+Www+ULv8oX9{RDy{FD&(Te{EN z>;%#fibJRXn($VL@|j6&IaC#_)(V#V#8^hR6Cif7BS@-7lUUZP713~oA-(4>6BGkU{zU3TC2AP?JIPaR_U!NdT;HTL3YiAVT)0*Cz3t?t*=Mg`@6QCE%#z{#&R5 zfAdz100BYIoq%K3*iA)6dG*3pIqk7NEAB$m9^cdsWSgo?UYtb~*9ej)bBEl#+PW;l znP>-#jiVO6p>Jxz^D>c=gjmK`Y8iDN-+*FSkm9ey1ii#-5vr);60H$h{}6l1#aP5P zqGbQuix0bfHsee(AyBH#@7kY!b5>SR1h`YAB zn0???H7yn~3jv)`7fIIC(NHMVLY!il`ipB+gqAB{)f51#N{8`A!Bd65bo;PgH;-eN} zqg|w|zp_Zvt_uYz08H_RR2JCd-*nAd5?VDUb))njPl$*XH(@0l3DU@jfx z6bk-isJcMFp0C_&>D!2{-|du5yOLY8cPDjvj_u2?Bxgn ziX8vxo5|q9l`uJDZ6vo-n=W?x<_(>(_21Wn#zMq%vtq5zw#!s43I{x3pHaT9#0Ul; zJ2_pvY7+PIaxebTxTNj;6@5)Y^p2ag?;4ZxIt`tgmSFA9<=m9W9u_qBja;TaRf1k+ z_vh>hPaCP*u44BysG@ZQnL}fEelTj|xo4xNMQ1Wt(F>Kj?cZ%}cv(Uo<$P{&-jLrq zm7Bt>GggVmmn43cQwS*6C+eM70u&2)pzUxGH6juiG-TqL-w9BeaT@xmX^GgfFJMq~HhU2PRn2W7w=0S=nUw1G=Nhohap)kjT&&65M2>roP z?lwJg|1T|*_qUxBL>-3s`crV*<=MlFE-i67bcHTqtMSc%jx*-rrkJ?b=%zQ1OMqn=uRNEmbCnVk>S0O^QD0F7rLo-TUduDA0E#q3(gD z0#I#!J|{qKnyH(sw}*~AqI!X&mPX9KhhKfW_tEYRS>0OwdYC~3HgaN_wfQ?;>}Bm$ zw1(=y2Z(a1u8f8{={w5o;l#v+hp3q;{NFhF3lr`Kt5a?lnr5H!>Ga;(`$DQ}{ z7J`_>w}OSX=N>2F=(}I zcjw+=?a$gjuPBOF_PW$PkMj|EYBPGgw+?S9msV~q)MX#7-c^Zm>1)F_(D~SlE7zy* zZuaO%^$4W@vf&Hf{YztbN#_-D+QA>9`Dy%__d9SGPgK^5sFA2-?W?iHSNHjuq@h~h zJrm<;{|9Mr9u0N>{*NaWq6uSZn?e|CkrXo#gY09=nx(NMM92)Gw2Wma*-3`%OVU^> zB(hA_l%=s$WGOLYD@v(+uj&1HpYuDv-|wIA_uIM8ajV?7dcCgabzP6`IdmsgEmx@B z2CvaPNYBH&7Kszk)jQ!Vv&6_1GtWj5j8g3Y4XBOnT&k3a!+O(?2s-kpwDhKAJRBS+a@QRDH05Ga(Uyc{H^pXd;QJD2Q(`pdqzaY#OXpKA6QcV=FL6ibhYp|JIf~;`6v)|9BpOBy^ z;pe_~sd_vtw%0l*0XTLG&c{aO2$(QnLKvwG-aj&&L2HED}wYedU#7NVqUsy};9-h-^BzIx?N6(*(xx9Pa^aHgA+EadU zt|yGNzijmKzPA-EiZuF3BctHp$vi`$qoq9TxtMeAUg-U^m{2L36&Y1)SV=aanPQ6l(8*Bf^H6f``z z&bRaq?6>Fgml7#vsR{lmU?$L7fpDAO1XI)C_1c@W)0lEl6sg%q7ox7Epo*nuwT8u| z&nX41pV#`ad&ex-of(r?3o}N&3qpxWMB4&vzDVwA4F%mFCA$Pk2>zC6&m)n;w0hm) zyI)iIuT1)%d7Ce99accBPc`@ELk&bHlwZ=VS=?j55QlEd4cK<7EFfA84iGwbRP{Dr z>crd+vggW3Ba-%dpf*?ae#bh*&IfB|7#_i+*o)!n8xi9Rr4uV&L#8W~ay=PQZb`Mb zVSk=d4kz)HcA%hD4MBk!L+TTh>@?))%&SG3+;XlNZ;9O_o=D#L1(Epyd~L zSZ!&tT8u?}co~b3J*F*tf^6yb<&<^O2MnrZD@4wB%-|=+(1{esV@$*jvD6X zC5|Gmr%RDtVfbv~+2~$ub5SI;uj{NYzLKP0Yk5q6nrVW*t0PmSe3*#oK;ESH1~TY-7DED7OG z4S9|*7A3Bc%hGE&-zU}RTq6Aaz8e=)E%Cx~>DM!34Y&ws-oFLmR?^loO{{2Z(XB_! z(Ud&w+d+X`in(P&5yqdz4Z?%*6m&=J;KuU#o=GLPNO?u0-BExX?;6LH^T;I-PfseV zSlhSb&Gi`P>lb%%V>4c)W~pwYoTwONiT9?k{t6h5C<{=MahZtBHM74bE5C~RS$LIKy9M#x!g_e5bUW7f ze9k#S@$--zD-sTqUch>@K66PGa;T`f%eOPDl1&y3O^1JKO6*wlc$5MLysJ^P{6f~7 zCY7}x#gD#Uw7eJnIO3W4yl8Tji=?DSEcweei6dWMlPw=k1Yv$}SW#z3y_&v^$=)(Q zbR?mw`oW33P8Zuh)hz{gU9N8Eov4M|$EtdnJ55&o9vvnX`j3=vdlx|1 zT+H;JD>0=`orWRfVe2HXxE-T8rJq=vmr;n~I_sqmDBTPhrQy`B@e;1_twMYZqMk*P z?1q~w<%(J7d9aeqgof6QUc2vINi77PEA!yi@dDRo@vqm3MQ$+Vaj9%)yM_2D;p=s@8r) zh+i*PQT8|^bzC?qshkrAxJkShi2mTs{EBf$-9{UZ?k;)js?DGnzaNKIi5mA?>!pW%@z(F#lf$EqYMu5GF_Y2WbbXQ+xtT73 zlRXHH@#AunvUp3+!4$E(o|DA&DD%yg=%$bxb#2*5U+z!1YdLj1+ALli&o);6xxW>| zGdzX22G9P(yo`qLsvI^EC53buV&5;{p#%YTRz?2;tD*Ef0B8e5v4tfb>onr7Mu)G< zl-D~W7L#=zH6Ps>vX!;iw2^rvWK3-IiS*prxhfcqpV;Zt!zLT|pz_2lCbRq|QPXg~ zv~4rb7_>q5%z=UCiZKQWx)f?NvJ?KMKIsbEoPce-fYPcgJ|_lO_fVJGOdgSe6NDpf zbkH4zmF~o>s41{Q?w6HU#5R#g@Lv{_A z5V-RGvF=d(yID@`M617`hRtE*O}u^&TnCqS?mIA-W-OE{$E<-l&uc=T z!C|e(fESP>sl3(NPJwwpuQbf3Vvj{fO)n{)WN?hKK2lEiOdGccF9-n z0&rE^)|C!5iMT)HdfC#Q=jYmSzP$K&MTcZ!ErK@#KfD}+IU8iyh0jW>a0}+LqNwI^ zqFLmmT23$hhbeX|j-N7ioY1x5;76V!@)(`y(7_zsPRD2EbBn=DB!ql0fiCl5c2 zhh>GXr~ANe>QCWr2tOqwsvIGHB(hGbTaXk!M~k)Op-U$CNZ&JDU{9~YBy+vh)l_nz zrq+(6yEEn)!IR@;!7b9vw%8wnM!QRo5E)>=iFiOz9YeaNllO4;P-z#l< zSkHFv-W?&C!pm{>v$WuYY^jv{FEnGXtp2u%cx(5sP9@R=No(G?pWAh^UI1*K->Po3 zZ}J~Xi{6Wa-zrS65Dlt&Z602Sf_p2|2dR*ze4NEVs*NIo+vsT zP`nqmfn~NK{q7dg=r{eu8h2EkU>uUvU`Y~GS;tPP5ztnqLl)>ER{=Isjz}m(MUiuI z0X~9)r9^ffN8)ab{lD;J+etzGdyO?=H`>B#6Ot1OI zy9Z~(xSk~i)*mzOjcpj$_=cg+|3&87IquSZ-TO*6J^nz-FAir?6#wDRu%24A^Y)=R zU_GtZGZi)Ttw5*j;j$!+65oaS*+(xW5r1VS|Jz5GQiGoOwRWtf}zS8`)Tb_SR8{}g}Z7eW<2PUh=)rX2LT z>)wUpq4z?E7-KAcW{l`X3jbb%;SqxdTnnO*6?1%$-54EWP{AQXuELom^j}$I>dnHp zuIdF2<=l|f3ytEj-Olg*x~&MO$S+yaWUPG*IYd0kjcjm7FfXkAcAoysoczLl%PQk` z&bMcVIjAanq3p-Hd zuAX8TzTsd+N7J@<6-O(w_J57lz#9*7@RRl#jxO`t5-MvrTX^saQk^fYC?3gkwAwto zibLnT+B^H<)p#>4r|<&Ga@EI_5zs%4@p#dmmT?YA8g#eg&mSVpRv~O%JK26JH7{6v z4C*Z+QT+dbhb6t(gXjOCOa{QX13Fb!gH%-j_t6t4>EMD`rVSxfI4z6TTKzh?8`*P# z*_r#m>H_sB0S!yRLgK5$ssY_3605$Z`qDh*TIbh`4>h0Uw26oUL?k({MzlcRlC~t$ zDhx5LzSpdXN~oii3ra><%X)-a6q2+rfwV%VzWKs&+peD@A*jKMbkrUOZOpsfNK#aq z9Q36L9>ZuPNy1>zq7ap-TJhhJR#W79dIZwQx>;B7?^Cj6>rZ6B!`_FwG6Kfa{Q5oH zLIsbXX^FqiMwD>M#)PW@!77&BpKra2kQPdY0@jpH`L;!qcEEbV3vHqua1qIKbmL%3 zmBro<3Xk_Gv&wy5W?dY&xr%J zlR^w32Mu4D90}Vda3-FN6Y+mOBh&Wn?Cr;g+#p#Z{S`%YsY(^}yc7@_!xE`5-_Y>q zPhsA^ZmyiG)rz>26LHDUGQ!^$=@<=77%4c;%Nk?xW-YyH!n*Zgcuh23X*-tPV4sWd zwjczF3GDY!?7h4Pmx=jA3aZEdG@A!wuNCmwb3|M*d?x@~hP)+QS1?mdlbbbXON980 zu^IfNYg7ua=VZQZInZHO5{7d7XrAEgbqTYcWR8J)` z#KVa~`!<-23%b+nYkfO22l3`f`-vnXUVD(hSB0oOTZK>p`AHfv*26v;igceW*aR`> z?a|UQ_A?*uyQ9Q9F*_EbX_wsJ`TkJnrt{^Au5KnqeBtfOe_qmQ7nE_R{%Kvdc^A$Z zz+dAEpOv*L=AHu%0XoR#-?wvJKbaC-g~`-p6 zFEfGS9I@;k;giL;MVd~m$^2Cm|NYigidP_AM%S{O->c6-3R%_``uL2@{wqrr-nOZ! z3l#_JgGMPE(Phf~q$ho^^TmPZkug5}{Il7EzspXS>B;qnKOAcOHJeZp^J!@#J|=YU z!pi91aa$MZWBbM=<-BE2EV~4FG(UzxfzR;cD|2$&aSS(%9dY#^Qh&E)Rs-N znDAS4e<@{Kp@W3>gY*31d|d8cTrCLhbR=m7qtJm3loH9eKE!29+3M9E#fw*3O+lGS zrNLZL1-M~H9>Txvt|;j=u*4;tUeO*X>0zUC^UcUS7^qPuXM#?hdDcm$I{nl;Nh?1% z-ls9?Z?sKX;FxKSbSurI*Tyytak+B{msCmFyq)ceHAQ5JMTx`@>Ztj^G?~&RaB{5(> z$l=fuuj~<>?c%bx=yW7~7L$Rmpig4T+juf!LWex4Cb)ZeYliswe^hi9?I4>2Q($gV z1XkRvKK>vf50hBN3AjL3{F%gu-H*BHd9LDppDzEREgThZ2+4cK zFE5(jf$>S>U3R}C_e>7*(joffNA|05xN4~Y^XNkA*;G490 z|HckU@*~sSkUke(3GK3s@x1L=T@^)-8Bzf&>zN4i`MPDBzVa3N^@Uct?ZKkhReJUMNEaQalN$R?0@t5*zVZ9#NFFwJo_!4zjB0d`SseF~gl^zS4 z%`z6UzC@TwF^Kavk`X=FRn~-+@tSG>x?LvNZ@Ykggr=OF>rd9;%;c}try=gt)#&3f zu?~OF)Yv*&`#TkOVIrIY=*!PSH8QWe?L(tkU-}U+Fx^bC)Qq2;l26Y%Z}f4J=U#RV zr(v{}MF30sKzr^sUKh8nD#Xy)<@#Wh2rt&59#2b!F@h5uZ7s+KCT+USUezAWFpn1I zB6!~NB19(>ubqz8yQKRD6hqOGDOB?UCO>}=ZNCV;zc=Q|IWiUH(|FSR&VGhb8WHp; z&cQ!2`$jIXNhK`?fB}+JX^WfI;HM&ZPG_t-y}EGm@2%h{RSOTQHvW__BxDWmb_Xs| zB-q^^RALHqO6>m$?10+?bQrm%##jeo2JKW<&D5D_RlX2-_O)#Km8S7`cr0shBIj42g4{n2BHRVoZPG zG^d;_8ghTJH6apx9w~cFVL=HmOF)}TrCFH`H|xqFw4SHJ+%$=Rf6y#{#WbTMbCp#u zpBXSL=%~yWsY#~DBWB;v+gg5?u?=LrIOjFO1K87qqGh{FXOq<#;}OxmS59{XN!txa z1vGD=6m`1qtu|CgTSr@qeY9B1z`?KwbBzuWa=h5-D0S`>8k?3-`kmY+jUGU$xG&ssg$~ z?GwVd-q0BFd?ztDu27Pt(6qlFk4)5W0byl>Po<-!B16OZvE9YUzP}$Dqt|K|WtM*q z@19)B5}xd6c{}+|&!;W8t&i?QSEfn2AW7WZ*mloPl*OFvgN@9ShWjW7WDrm16cNWw zSIg+X#?0f0U8fao%*03c`c%Gmj4Lc;o#=OnX?IB4H|lzCmw!(FXu*6zu%Bsvx90DN z)3>kx9yP5!=p)cY@5phfoo+n&uzscZYpl$~BfXg9rfeaAid~l1Cr3puiZC1P55wYn zW+h^B?gmrdo>BL^jru2420vJO8wq|$HscX(E*n6hK z*J+#H-JA)E3I~b zSo^Q**$pZYW-^wVvZPYV$UL22jsq8Kj}VOGKE8Y$S4pP!TN&a70FB=I+uQe8jVb+s}>t18o~IRvOF3OR(;k9ANV=HY_#MVM90!aY>}3M^qk4F88IHg9t#Wu-Y}N0Dz1W2N~=<9!d*OL94! zNU+Vq0ZL{}$1`955uSC<~%NKk|dZ62&-4^xxR6ZGg7Z+@~ z4nFzfxJL$W)N9Tbu0^Re_)B$S9t06QAE(p4%@0aV-fLE$j4QZ4spVcjd| zHwghNnzuxwm$GZnrHgMb+7FA1eG={q`^&X?V?V^>sK5*2U75i5-TcR;A=gz&Lb2Ii zZMd55L?15ZdZK>Y+0lE9oZcG6EL()OFQuu-LXf0RfgiQj<11FX&f5eOP^WD>0zy9xDzOhplZl&QU~ z4er$YNRkZLR1l`6B0e-ZrhiLs*6wHe86#u)oHjvE!eERJlVYhAk^x0fN-PJJgc=CB zxUpHZn>+!qVm~=ALaHHCrFZV|>ygCGA~vvLZk}Rd8gZXx7lIedM@DS}6vhMP z))oIxI7F~G7)d=0;-@m6{Ts-?=?9?EdHzft*5i|!TOySkm2c-Kk%Y3!J&m?^p1g|A z&7fz|td8C^@7>G9HwrDOm&<4C$uw8_I4!>_5_D!{)yA23X-P@5gjSDNK0=A59Jw~M zSgrN0{gPP9rDaCu#SOR5k8`hxU58SQ{E1#T_AQIH2-1nOE~?8vu29UoZvAIkUNKU* zVP@l6RdO@=?mpB4jHws4xKovG*0i=DuAH=mfS)$GZ(rXgA{X^Y)Rma53J4D}si0TQ z_9JqRzT|OVB?rE@gWWWlNjr}T^5S}I=lvdQjCG6?Mq9h~8Tv{x{ZTd{rTx7jcWA9h z7>v=Zk~}=DokyZUE^G`>a*g4dSPNdYTr;zlcxoXEe1|vW=FaAcbZ4KIU=Ayn{_R3| zp-Xi~K`;Y!AW4jZ4azZ$pJo}Z3?nm(KEH9Bz70BltZJ84$c>vh0BT3MWV zO(l_^xC@jLzd;6dka>+)g4vb||7r|;0hxNK1G6#24Qw5w?p;%Pb!!3KhU=U0O4P5M zS#B(Ij{gJZQL%2KN`jELl8Dpnc+vj(y&yOHJmi(2xtNJGbR^Ofr+zm0UarGLv2b$JzW-JN>kz9E)Zd>#nu3H8GwoSt{}op+>%;=j3bhSz>3Wm-0w&9$N$niocHTlvUeAL z=kN8iRU!}KKtXm`H`X!kEd)E_PK;T`a3tdR>TF{sOpD{RosSyh9}@9QPi3q?@aY02dSKPHw97#s@oyC6OzB<2BaNfn)3 z)^53_NTV0)0Wi;6$Sn_)rZZ<&d8;8dD-U81tVlIR<;og$+q*j_5i#k7)Q@D;i}tE; zf$b1xgfN+%6iy@hhwp6wu{nX_W<%{svchCL-BZ2fUX8?Flh{0P1$$64)V&-bKXuOj$im!{El#0Xrwd@4cLRMB>X z9U-S(#*XiUW7;o?i1Deym(F7RE_y{L`c#Us*n9@67+&0Z1S7Gmbrw_7ve{tdI_)MA zKh)gt>_ftt|1Q92RygROU~v_m*x5Fsm1>qon+pC(`EpT;m6BbtjLqG0ebyTtqXBy_ zvIUW0Bs0TvBKqyj!!+K&Q}iakBdJm>t+H7Upnl@byE=lU$@iWA7UaxtZU0MIzdMY- z2orKf>NvY@-;~Q=?bY>u>y2A}S=LqsOqBnR9F;q8=rB0;2^=bBp0~C;dkf}ecNE(6 z*WW{S?PM5nhse~v*Fx?W#vUKO*qwbvetc|wByRCa;Fs0K#*=l6Jr|ocE?`bw9nT%2 zI!4k#R=vd?l@o-@viqEZYQ&|Oqsb^oJvqJRDI+U%PD4>AJ5>WPbUSc@BkmI+&4FBe zrHrOVh)%i~bxBdg)|G%8)CO&F&6GPqKZyj`fgxk!?iXss&CX89lmd_g1~V~&{>>*E z9Fs8q7+^CtRUtmuMl+JDs~nFm{}Cv)I+9uBzQZ^3gjA_lXuL|5=S%C@q-A|v<&s`O z`vvX#>pOM!3%kAzOd>k>+Z{a*i;R> zusiA_1Z%-Myd{Om4Xt`Yo-K*WKWPsjhz{t7uL82wjrsT_jNbk9`1sn(SEfu@kqz)2 z!cJIWfjnuqzMm;y7`edidGx9VPxn5&qThGJXFu zeyfvjYrfp}TR4fP1Mgk9CaHc+rm`udonbH3ANJ8{^CEA9nWmVgU;o`PeST7m((yu8 z8|5Zjc|l>L){Wl=T?>sL+mTPlt;X3Z+KeYTlpiah&)L9Yy!c3jc~yMdaZy)0EAdnH z$6^!Xl@fD*-!(6joLyi@XoMd4>rysmKp~1AhOS(|nv?6z){vJA`?)l&Kba}YvJc)i*rwYEM1$yNU)C)v3Xhvm>DCjNTciNL^iSm{IBHv*$?s_ z(Jw&9=<5xWamj~Gz%z5FTe5*^KFBg8ZW?kGx6sEAO?WFvGR4?nxc~$QHWdi^{8!ru zpq3Pi1#mQ+g|X(wTb#cmjdsk0PNJ#fdLwCkz%4~myW={ypz(NbO2B~ zm7l~AKCE_880UjOs`9Pg_Z2o!H8&;F2ub>CCY@;zsBS9bF&%V&eoCFctFEJ?V{Iz? zMsm|u{G9B5yo~6kfzp%1!Q22rTQ{&F=p$A-{~+kNT~O<@w){~7Qr336Upy7$WfL|H z{lp{v;&UBy5t|T=G3J*rtuE-=F&Bi|l+!aW;KF@!*(t zk=(+tE72Zp5$DMT;G@g#F1F#q0oZ!8uJ{3PG7;y!Pwy~#xO)?DzyTRkSKLwMI>S8a zpyq!Mbn>Q$@Lb)>+crB!>&dF|2Orr422hs2ut-s?BcRj>S>MZfwwdpDdi2btQK@-iTXUv*#H3jU5jxh!dX{ge4wcU?E$&$M}7N{@TZ!;O`bWQ7~H^xDD)8bx?FoB=9(P?#$s zpXpOM$@kdK_pw9yUvI@Uew};T!vdZv`_}0hOP{T6MlF0Q^PVE}GF2QUYno!s4+YAZ zj9y;(fY$XmbRg$Fq)RS;?t0YR?}2Jux(5B$uAPUr-$jD8#5Xe~nW?a_$&Ec&!2w>6 zPfoVr(1^0_LdaEKV+TCyh?0Ozl`Up2ZE3b~RaVRPxYb?{EB~^apmLoc@7WLKG?m~} z6OPuy;`Utq@d^v%b^*}U(OMAaWK26SWhMDHiF?V^-H}Ctq*_5t>VQEcvM z0Y4Bw9q0ZeF}bt8LkPDbLE^d8eX$L0Np^E52FQR8K{}alB`!}ULaeLiG<+F;@P@RH^@?A2ZftMU0XNsw=Jt_Tv@;w+3p43L9L78H+mUEq@D;kn$$ zluO27_TXXHg5f$w{RD^a$$NgUixxXA4BL7-0}_XC`eJ0SL{Dd5uUK(>s^VvPzB{{m z<5d%vGnto64N4UJ6KQZ;K(mJ`-u99x)zVvX9T!At^|g*m$@nAj3I*i5@XizaaR;s~ zsvc%4eM$x~l`L}~uO)+{s{GO$5F?y`Q^k@o;tQ?W#lASw#eU{f=#LoF)l7=*+=qcI zkZaWI)6G|VuE*i*D(z(ZF&~U%&RwJF2)%m#8BzH$Gb*$zUYey)>`>lt2IZ*GNsI>%}1s*E3&qTz&qCxbB@F7;YLb>N?K)5q6@bS106ANlR}u zjKtHpL06)%M3-IMTl)v}Ico<+8?xGZicS{F2P^S1Qkrrr>M?g=SE8VXS;5OJ3Efq? z;(WD;u+%);9CZ3+)nc?+8!>?>_iP)p&-re6u6C_6BtY8v`SS_%PBc`*sW0p=9d z*Dy?Xv$ai~m}5Vbi1lGTN;x#0Sq!vd2_|2o=)iuJultoqtfKwro*Y;C@epl481O|! zA+*3DI?^3LvXDQHRfsJRsvMk9GLZ3tFFSty40?3psDCoBz!v=Pj39m4e#GiZaJ7J4y4j1bh9fOI5q^RkX`C*o z54V$>!Z&BgSB88wbTw*NHo$Hwg$Gw+hz(CI!JvWk`PlY2z2+eGV;YmDlvs9?Xc9#S zMwc6Fcvo{4!zWh>dbUj#=o8A93ZB;Fi-QCkH*7(tlKb0GI`wSXR>@ntPRlNQ5+4OC zTWE|W<<}%#Th-KZ-)_D^ZCcec9o;dx26^JP^||5hz_~l4vekN_nl-73XkRpOa_q(zD|oEc<(TM0lqSxh8piHYh+m-7I4Gu%BIokFWt_Hnmf9 zx7w}(rcz~nd9s!m;izVHQ&yGR)YQS#gxSX}0PAyg%wk6OF(I0nSH1w_W;#lMnJOFh z`w(z$A=~3meQ7L;L{+r5EI-hB)Ur7|VEaEHBq1S@5g592oGaLrup3Tpe!(D+FTHuLK8@ksUa z8+z+AokY9bc`l9u=K22kuv(PXFi5r%3alg+_`a6XEkXA5e`JmYMw4B2rbyB+$_w6w z{L=zSdLKQ6a=GJ*!OD%4C$v8`Ixh~bGN~CWT@W42O+R6+Gps$DaChj!>rv1jN^y%> zG&y64R*)LB1$eSfwqQ3kb+5M8w=^xRhUJ!=w4B)!~BIKYe#TR7B@(1sF?;?ED^3qFP z$r*%S<}p=9YUV(JX_LoB+3YMt^Fevzi5Fm8* zx-ffVOrIVN1JpR78$=fp)Uk-!zDbD}d2v5S8`XzY`R-aj`#VCBUE(y`Wf8e!) zg61-~hM>JQ8miF0f1jO9#V&|G8Y3N^fAmV6^+q$iY1k$wlF9`*aLw>3atqo^NA zatuu>-H}W)1iLw;fr69VN#E_(Hd{icEOrJiY*4UjLByYNJIc1D`d{eg!NRzi?31Vb zNv`~?T%|~FcyQvYgo>#bDG-MBk~eyM=P7vNVDtclc(-bg6-6)4+@A-eOz~M&1Cr-X z^A4oi>DWH_NAePYcd#GT?&_`hjXb$!bc|s={^$7Vvep)I$<*Kj+NN%d-Nk-F?W>Hc zR%nR-x1QOk|9WNzjJ7xz2^a|zYPcKPkg<`qS!?!dF1>>3;OP$DF%W$D@`1mp=9?`* zvv}%PcC|E_I#X6iQ+c*@c;&=ZZUr%+*D(9C9EmH(!pDDBAmkvWq09(rxgFnl9uTJ! z2M@BPw@D`_!%SGMhXswqOp5T@3JxYRqMLvBygGqq=>TlS%9p;n|KwS=EDHB-_&iQ6 zlxkka34#$gTT*GQXz75wBswbV#ZiVUM;2?#|HlX0F6*SnbM^119@z;`^*`N@&;cz& zcF~c5q*V%J%ayAs*?`g>PE!AV``eef=6JjmouUJ9qZ~Y;EqH}yh>cg>1*>5YOqjPp~r8 ziF9kjvaB<%vb8^6KGLAKcWZn~c_}!&N-L&2>&mvIl)SEG(Ti>wP~X-z;iKdIs?42UE<75cgl5A zq?tlKRRCUI1&-F1A^y7)1IY@^1}g}y0w&-^Rj={WW5Rnc-nOfKQc-;$Ib?49rFQxqqz5fy(z~CU@@musgyxC24hM*xVcWgO){OpNy#Q zcdM554rcB99sk9o>#oB^gUPb5M%W0aRWpmFS8`=%aZzVBO{;K`mg zOCuUVb_oc8g-v@_IxwgF6FG}n{Gby2c-m^mPu%uZwcCw{Kve{)ZMIaV8>UgPPcLmf zkZ}ZHT%|y^3PS1s>6?A>NRxE*%~VCk`h*e0{X7bysx6YKRG&MdcLms6Qz6y7r2@3c zdWp3+4ST2-8NSB|#k#}03u9q8R%+gkz0ZSYDebohv}+_O*!|93U&QW43_=#0O{U5~ z`g+Y2m4?Kftzz4G5l^*8wd=v~s*fLmb_7C9ls#htpihNG!0pAvX24Ge-yxhF-l#MH zw=5%3IxW34DS7X~%V=0rL4aI`+v0o-Kw-i|?uPf1;GH`q5K=cFNV+vG8jMcaq@|SM zY7}B;y8^7WKw#n~eq{Z1koNWJ*CP;XzqCSBYh%*{N1Qi9AqEf(_O zSLVCpcxnDvo`f$c=PhZo#xmE36NA5QN2*$UWG$%by#jlHmf!ku!8_da!w(uSp8dQS zb0x;y4F&_TB`M31qE{7P zED|SesFa;NR&xbB0&ey3+vO^gq|=<^=#%l1Z1cvIMVX4W8wL5>vCBwkyzZL}urJu| zWM-D}sJ1HTZ7RqY!0hs{rOS4>ZwpHBf?y$}<`0XrvZ@YRyKg(&-E5U9aAh z3pdUM_68Yf^rpxnXEmp0Z{8CZn6;X^S7h>}uHLi}XOVK!W-*Am29WW$t%lf^=#kgl zl@oMOW3-8h_fH0#v34sohG7=}pPEF!QlKNM(6!s6yLfQ@(KV|qPG`5g$I$@$*%RIBA%D_WD8pDO{lp< zRK%4ENm^dX`_@%Z#@R_RdT}*FcLG1ehvDr;r z_s5Y=y3Yxp(n*J$F4YbH{vZ;dnf5y3gpA+S(yPJ=#89)d7F-|IA`c${+v&cnswt^? z{{KD0?U!K-D&GP5s@j{e9{3UEg8=zmX4*eHO^KX>@BeHR+FkP7as}WikpI$x;Pmo* zSLWuz75Y9s4fTFI$chnyqO)vrFUlh_lQc%(yx*3UejkzGk3OXeyqW zb!1f73eAQ<1?oqg02v^jA8Dzjp!8YTKjKKuDo5sbV(i)-)i?6*o_q3>oqvG=I>Z0e zogf&_EVz>OV7dJbTyXw2?^HV!WQI}TuyR{GQB|o-h)%Qu`UQrFPK?1wKy7rWAZZuu z3|o#pwV}M-#e?B3I>=NC}5{2vDq>YCE2i3oK(c!)T!YA96v+UgZPRe;n}OcQz}4aY}zjFLFzY}lfpQJwO# z$_;mI8R5>}8;jlpZaK<{jVoK*cH?+n2-iO1;rPP0|DJh|){ltJ>DNCVuw8+IaNVPv z%#*%jnuT@)VW2`-8@ZR@bG5ZmSLXVQMlbe>0Z|vN*}wDt4%?iKPjN@|Ah|rKR94*s5mFWtB`iss`r+CW%S&|0DOJ_FEQC9t4A0JeLxuiKZ$~|0&SZ4 zrL@fmhGEA9(k>k~$}JLXHyTh`auBX6(K^t(DO~C1PA|LB<%HNrXtN^q>yp_4y(^`E zB$A42d`8ztejN(lXhIqhaRqI+k%pD+OB|)58vW!DKjm(WLx1noosUoCqO&&nD}M`f zZ)%jB+xHdCycU~Eyruvj;279#Uz~gZZ216EYah1ve4x#^+qwG!EB(=}JjP`AL9|$k0 z%~NerG#iPHbI_FVm46xB;1>*HYQR}ACQb1Cq3%vVga-(!EZrv$yAGj^Nx5vKwQyluI=+8s1 zXv#)IyT;$Sm=#alzE1T%fzmoQl%EKMF7XK&nB1Zvr{c7@PiSNaWca(b!nW z#(>K2sZMB@0j{3Yp*TMH zdDY|_Z~IZNTNt)C!w>q0^cHC}+ex+OaWay`*Nva6|gIDm4gCjYvl3cj}+@~ncup< zJ&t_+iu9+P*4Vt?*SXJ?9%<=~@><`B%2Y}g#1%C)G1->Fo6b)!zIyIQf6i0b@aBo; zv1OHC#Ng&m2HEm@hKSym%Z-(nMwTN4y42T14Ylscn`b3$DMQYiUP$-2fAHCm$Wt*P z6)_7>GwnV;k#tBVfs^2h=5R3t-_Q;(bRNz=`(*phbqpkOXlzAiW`;Moe5s@J8(F{n zClv)S3os-glF&@0@P63IO|1KYrGEtelsrU^IXu#9XOc+gC7ig>=TB;exa;5VwKbCh zVhHMcmt3XNWhzA5CH@nW*fW+*hqTM$5jkI^m40?vTlX8bbO!9ek8;%bS~Gak;qI#h zVhD~w2xroyH^EJa*ZW9je#C68C17%@|Em~5Ee;`zCx<5 z6T`3*9I}Z$dGW^qBNDW%K9^9EkLNOI85((g{;65feBz5_{HncI^0T96 zIpME4mj@ovqj6-*Q~|?ECPjt36-7hlbFh_fy(5b+s#MR5JG zv<&QV;bg09bz4z~Ol6ci^>G`FJ4wiAMFbx~tZX4+g#*K~~E_&;8=t#;*q*39) zKL^gJ+ikS>=P?{3SF^5o8HB#{h;J)>`r+QupW3!vDf*73>h`^Zode5Q>i4kyy423G zs(5LCGh%^>jfdZ+=DoEsp*qPnX||(3U)S$#(?_2a5v~mXIbfSN7KLR?IrF~6H$Iof z1i%=16^aJLm`K3Q;@DI!9`(5NQr31b9;4Di#kT+l4SR&GP<74JCWZM99_(@`dt0b& zUpoz!UXH8^d;pqcz7tv70_uZ}dM&h_p%ckA8J zE*sd9dSXhl%}xx31#2(A*5+YP_tJ)#+?rlcdJW%t@~voI8A6$G3`ls{;zEJoA4@jn zJc%fPkPU(tm)7XWleuRjAZ*giUyGjMs?<#7S^ z|ImDF{$KO)A&I3VEtymkAAyj|H{k4$jCo;*8q$w*6Sg$2Y0^Zj0A-^Nf~H(U0Q%X4b z)kO10wdA!6_ft|hboWuDQN3HgbK!Wle0XZe|LEOSR{no5hfU6$n6;SptLI7B5EC5F zX4b_>?XC-Z4GoM!eO^7?5Et5pc3Rrs>>HGm%AdOyc0+))^y8)G*+7?{0_!vXa`R;P z_Q&~!jj+ZIH|pd+ZQa1XY1)l`)s%*QI>51JK1lufZie&-JCb>-mp^!oEC=Q&d_&cLuPW^GjD89lU9mY3FXZsQ ztfBAeC*FE&=Xm>*A-m|xzZrVNnPjkpA12sGn}uJhLKIb}1fi_^#Xsc`xhV?LumTzjxsB}vzM`oX`5aCTiP;e;~Di+2JLojF3K#&t6 zNHTa&uz+h5KyJW|IpMX}V2H;&uFxzY>tPp0N|<}33@-Wp+JQ;VSx&%wviJS0iPRp~ zcbVZwW_ej{Q#H<6Akk-zdJSA0X)1HLB4W6CRoC)@IDm{NZDJljFeX#8D7YXqHrduT z>?}1pZLf1>h199Yani!#Q+KcA!7E?aG6(LY&!9pG; z*rB*`9e^2Mg}YNXn-47ykJf|CGnQw``8_TsGhS~=_-ggs`^KxJ`E8z`8GawF;~qaB zS6c2<;XUm&b30?f)$|W{<>w;*$|r|-v4;k00NMqYrK*xk+-hZ|h`fToqK$>UcO_=G zcV)j(DLoWdM&ILALhth9Cg^8TEiN{Nd}k=(N`sPWgs`~NXOgDeJIfu!h8(r;#~V;5 zVhu90Sw?qHjAmmz_H6v!#_>*X2^{=dhFCVCV(VJkg3miN&nMqhb7|^VsP_^4 zR}}r;4b%EPs8M&mXLb-9!W~_Oh~_ihotVs8H-n)>@9XOJ`jPUL=b_5ui%+!R9i?qu z1G+%(!e!O?=0-B{bdY^CI-Zk*9nHa>BE-HJm4gAfonys8!7Nrm{J=((_F!M79soT< zgzFID=jio0>*M#g?FjVh-SL|~5QI_Oo@^ZI>qK1PUvO&_^wH(Q5A#R`0J-iEsdx6s zB@=Ee)?ip%mX3v-gtDF%Hc`$_)!WpGaZqF!STi^-70vG#&^2yZe59~Zc7F)jz26dK z=7`nPZrTh&X5!$tp6RE*E_7n6Qkz8oSw@B{_3m8Q3|R-@OJXO_0`Fgmi0cz1t)x)D zJN#$#;U5FiV@pZvBpC$&$`?T|E-?>ux#`Pf>_%G#(v*ozE1FwgTHLr4h*b{8P`j z$GEYb0RaAMj5T`K$_WOz^svOz93cvrJJLvt2^De4)1P>{m=J#w3X?5k)BygZjZjX+ zp5=HF@vof$YjNR8yDVnVM`&qJ4d+yyMbfXYOqsgxcjc&fmIy%j0R#HM+?%g1fxPK6UD~tO}JNrAzc7pStYH%30!35mhBOtzFdNCOmGZ_Q zVPi8F7e4j={xo_a)>i_MTx5FS$zkFY+d3CI-TjFtNklo=)v|^WWT@`*_UeMB(~jni ze?Q4(|Lv^5eAB$(Q(N3}jY}k;ldngXk&lM^(wqT#08IkpA3@hH6~Kxdft(PLFOLVQ zctVM~#cd1GcC~fMc~BA1%9g6c0rX#lDnC{xYu**rUDd;I@vdE}?vz0s`qndRTprlG zM+u4a-5#0G1;o>A-!z7L!L?@@KOf~!Zv@u=ih0swvp?Ot;oKm7o(uMuI{sl-ZNEX6 z<;W!P{~_P*^F1QOvI7@nFj;`Ir8mliPB+4$zZZ*?94_A)@zx z$C|d00pxtpZkWD!%IAz6HAe8@+;WRfvH32(qp~FwW_Y|foGhIfd;)KN1)sY1!uzDZxc^GsnrDnSGgSWDX% zIG5%N+d;uh#J(&A*zhALw_X7dlxa+@7q`)wr(3{GMzVm=1ameK3yK9THWq7aAaYCl zNc;U>(yb18t$?b-Z=kL{32+K<$N=`dCSbp3SCc_uu*BtEy>SNQI;_y2`#eH9b!pkQ z2e89;Z8>i6qSg0oPkb5h71T@l+Nwji#zOaEi*JyuIY6E(FCCl1t^Ab`SS%P*v!c(k z)Bw&R?60`|R0TVkt{BFJp(<)rC(N6WkzE%%?whdt$<1RY`MFpK@4Hl*;dc4N%}S{pA1R zy#U%72*Bej>~H!>Ox&k+FJFEKt|w4`-vbctq#bA+x^&0v4xES`ZnG-I9a@q$5))&8 z7O2vj?bGI%%QiEbdSwC}3)qFjl2w*iD#tkvEt6XY*Z!i)`pHeQTHSxTK18WVHpvA} z-0zPSslL;nP^pc58xwTMp9V15SM;D!d>w~nJpvPv*YkmfQ$vs(e@B-_MEv#)Q{XsX zbdUsh3+&VW4=INXao`;Gdy&LAp8PC(cB}? z*f#YydO1GhOPf9?O55$gecIMqXBw5qCqjK+fz%XAj4$Q1GK>lb+$Cm%RQVd^R^3SgbgOW-zr|#U;Q_>)M zk?t!T&x%iIXlS_kiuATooCz^?hNQ>7@c3z9s=oNSeT3oYKSH1OREwr2a%#S)GnDcW zn72>!C~BR?oIOgz1rwBvc~=QHi-R}74rFf{)a6bqLP9uhPi}XKDEZrcBSmE3X$D)j(!GIIc&L7n& za+G!@1wJESiF_2O5s7$knj5SzJ^<3dOZi)zn6tUyupb84whUP9&439L2#>;`Z@9Hv zi$sn*jvj!I34F4EFAuomWJw@u0s8uiMX(YTbQeR+Fy6UQDdXzgb1xR-WDk!M9yAd7 z9;YBXnE+S3%pa(ANA-{NN`D>l{)Ehvg{tTU;H{FTr)sya@an8zbpFqUS4y{GHrD)9 zn7N>8hBfded&M3Uy$Vm|h?e7SQr+TFZyhNA)eHX+8h`Y323PdJGlAbxa?(GGz}62F&ypaeS{V=c{a`gB*9R%dSmzZ3*8p%}O82TokvHhxJ{ zb6*Y0=V_}S&YRXh{M)H-GG+c|0#q$X-pzz2Zk8X48i*xg#~)#R3DZj6rP7YNivUXi zUA-1Ne^I;zQ9aLsm<41%rQ>$G$`TV+ptourkXWEv#$vzO+|AGzf1bOuq-MA8dfQk# zcHxD-Zc3=WIE!(%$~_3>#@@)w-_Lr}R#Gsp^S{kak||$2bd3s}?&Kl^xtq*x7%p!U z9a04~>rd=M?i4P_i15*Imx2i&RA@NN;<8q5ko!U_gIda2^S}mBzrl!%weM+P2VR^ZzXcKd#Bh znfX6j@Qa+k{-Xt-x$5}8Xu)+J*97=p5UTguG_0MfTdfau3I{HdM{;l)j{i#z{w!u)4MY~K$V8nZ(rI=XJc;?cnu$A zXbgak%^ z%7HNUQSjkJ`GOT?&fE)oCPX5s(!GDu%<$ddnVq@|X?cYm17U`DinGB1&aa?mWGqt{ z{Lha*%y5`X^5)~y94_MOQ}b@63yDiAGcDK4@81@?QWzdWHZlo=1_#pZb^2@hJc`yI zV0`&}`BU7sJN_RPhza2XY!E>j3+T6Vq33mt(euTsI>>1-TgL_00BfikjJG-tS%+82YVX3jIH+04U?i|R%B#A z_R?mz$Y9$dS)BNj;Xd$g2!nQlwwwXrz^g|wu#>cftw1}9nnR=J=0RoXpeyXSU4dtb zMTVHQLUbjL93!lfz-0r{!wG0qU16Nz5!wWVMp9nupifMm`t=`RdixQ|TH-tK7M)_bne+mFrHJ3j%#JmA+WuS*Wv-eTAFa4rRK( z=XX+U9SBCWfbq^xxnSf-kO?KmEl5zq$yqIT$>a^U@<(8-j}6lROUFmxn34!TdkN?(91DQ7(;JJl^2UDL zOt`!zD9Czh-COV8JD_j$2=$qXINu_cO}%Hjbc_`cT$X91r1U#U2$#whVfPs)yw8b1QBWq8KW zw~l^k73ytamM#nTMU-zNIC~gk;Ll~fyIzu{bpX8(oOS@-GDD*usR9{QO)WQ2xJFzT z)tnxV1rQe)Z_~q|bVpH(XSx0AAZ1Vgadd!HH;G(ny<_v1Lrciu(*70C1ou6FsF{G4 zLPZp80m5GjHh;)>%(|ErA6hI%mD=t2u#&l$6diXeT27@HxEFTdL*h0s=^KOiFpYBv z9^|#D$g1%i6Mwabn=PG81)ULgd^yVnTu_hvCxTFL5Qm4?alkwwL$;J6#kI;0&p?*i1Tqk5TEM+BYq zQgNG|IXK`8>)g0NQv?#-9iZk@SzX{62O0*5`@%!OwRZ&ll#Fmu1)eZ*_4$#o?Vo|a zKmm0*3eEs#+z#4#og39edhodc!A0?XolDvv&6I=1EReI91YRt%8HZ$eGf3}y=sz<# zEp75t#NQ1Ph?329o#ZLkH4>gp-F&k3K+WK9VZ8mRs3<;uB@fS{i+#H3u=ctTKsM-e z;Tth5$tEp|_^FSCqdo!H0PdtJ}q2(;n+w+9=^?x;7gFAWrSl`n#}qrRAt6D)zD1R1H9x zS^_kvH_QmeUV|gwCBP)WTnB?VSQ6N4N=(>;y}*K))-;d6xZPJ7SW!nR8+z%EH+H`2 ze8-48g|p|F2w#@$yXtKdO5pXY>sN=1MjgW*G)6w_+wpPu)2e+zljrb(;Fk%kZ^pTA zT0s+QI)hN|SMUQKt>NJ(W^~=;fd%Q7Yh>X&dYxmj81jk)6_~%yOB^X-FCRtXyyU>@ zM>*T}h?uCnAui}o$?8dZ$u@($-C45_gX^+ICIj<>- z6{ZpC(+pejV4Tmk*A#QaxtDjwzlVd@fBGNm=g$wh7r+toxP=*TlgNtzEp~(w1<;HX z+wl;+>+uDxK|_ThBK^z&0-#5MWoS-mNyR|q=gWZO{r@5`$A5?;Nuv^goo}$ohEh7R ztjlw$k^{iT!tKB`b1GZ*h=ZD{AX9S{*gsXFl(i?;0V<6aNt-aA@YVqLIaP`sdsYJ= zRhVZWgg2g@tG-<5*5nAB3o}F( zza{1LK)cS5%$Xt$mcFE8)Lu9{IPAaDACP-#fIS1uyj}B2*FYn`R=d!o)Rsp|a{@7=T6%Z>i&VSbtOu(}= zdAT(tTjtT+Nq68L1pI+b>`pzd-~c#WTHlvtFCYiB7q~mffD7FBpNxwC{EW@)XwMW-Ga)g`R`f9dOah??ln`Q@kx)`Q zL2P3swD1^2=dpgmomp){EX&iblxrA$)g))T@0#fxGZjnJAjZo-BXe`lo;njmQzZao zHJ95X*nq4i_~~sy!G*WQYKDesk$7^9=V}{Ik)AAenb!P zIi0AO0<1E;l3!xxfV|Z<9s>s@@`0orS2qw4%PzuQTF7abq~FKCz_B;-BoHX% zF2>mYJxDb#xb>&9%JVS9y<9;IG5JBQ6)8|oh3ig%t8JoGg*x>W$WfJ(!AD?(jRj3V z*$2=Kh)jquF!!VRcmYEUu(OCrz&+pw+=GCXDwMQA42F{lF&R~6SRQxCG!L6ft zeqq7S^he-zZ@zAO3{zhA%VPv!esw5cufvoV*0LP=+cnh6b=0ZGuwbCzlmEBHZ9biS zUIvugw=gK6X(NI4HmLQIKw%8FgqmYd3SJw=roV5ZoC1~t(FhCioIiW^cCI53!S%GX zU&3orK{kOYF8f;YhJIiEl!(U>!IMjy9>cJ(Y0qw{$}W;e(df=Rvd%p68F_&N_A53% z*NPs&)NE%Kft4X(1-M5E9)mN)DwW6#SwQQ zb7@CG@q1C`*D6fM;OSC{RR)7-eQ`PsE#ptJX}pW0wj7w{TH@DLQct$jVfzR2pyHjf ze!2zONc*Q-vJqPex56G|tz5O6R#8+}OhV^&y?4xcXRcJ&WyH|`JtzJAXkfdK{UbXq z-}ANi?w!2-da%g$-TD6S0*TKz&|gLh>Q5$RmeoH;U2l}BgV@Bn=FXBjIO~dGn|&T_ zNjmW>*?M(>93PMm^@bdm7ho47U_Dz>tUgS-&r4O#Eah@0H$avf<5r$9^rMq!9{u^O zW;B9JY<(GC`w=#vd%nWfZRVw#wJ)C`PBJb3+F74rC!oXXWt-Reu*OQI*)eJNCB)ar>qsS&ab|i|ga* z6L|uD=y=7Eoj4Na(*v>L(<%f$3#I%C*`K}hisJOFM*)N2JzNQcV#n-!k^lc~S>OWV z&;D=Af(NG)kH3j4Tr6tQ8g8z$DsH9Q2@W>`jivVMI9I2li=9*J^UoNB=74RdH{d*L z0o|pf<`^w%as(qBprr9Ym?swCOO)JGt2m<@tBfWufym_h5YCikJmrqjyFs!!psN-P zn=IWRD@pNVEOaWrxITXk5#MpX^i;iF=o#laQ`d=kwWQM9Fe?jw3ej9Z_0yA@H^pe- ztXBRCy?2MQKTKSJW&I`d0#qU90kh;n#L#?i8C!j{zD@`i-id4zq#Swfg_=GS+6VNO4&Q=2W&!&&5ztGoTg7ay zu4zn1alP&zvy=T*+VQ8|Q-b?MDK}+XL(#E7sNeL7TX|h3cZmw{C=-|q-ju-_i{yr`h@1NhzNV^+=Z43JV@y+1ZSYeF+dHmH5ZXxGJg-w zUV2cqQ4`%;U_fH<PXOrg>f759rWRE3cF8%Gz1|XkT zU4i8w%a<6IR#&hKr1!?*Q@n^^zXzN}>@I;AXX7$1?Cmi=DepAL4PXaUnnMc$Vi0N1 zqE(?pd$8qkg8|M*l>^~wUOsRP6Us&chcTlEA0Kgdl>qM`2k6~>m)o3vJISDFef+$8 z3P{(1Hc11q{fZpdwA}3OG>C3|x78lS#A$s|J4AQsXY#Yc5TOiDnG6z;HpH##gAK>9 zuYM06Smu*zPMzcjjGiM&FCXP)vf(!^B0F*tfcl}`M?;{)Z8+pbFo{03>qXO2xc^1n zCjo2go;`7vznwl-&-(bh-SS#qfoI9^tt!vm8i4@W5B7u(a&kETcnsqC4BO9KO0buh zV;8M!*UM5sgax904h(phN;_`@|8B4i;mqoRA83o0M@X0(2;5Yt{; z5|g&)ZJ543Hmq6QJ6`CV(>2(#2VN*?{W0mst>~vymGz$;D8Js_lz7R(@G>mCD7(~o ze|Qah$Rx5$Ls&BsIdLSmM5E6g$t8~6pZUFaS23#Y)k>0TzO&`RgY82^&ByV>ALz9J zYvyx`@}DoB6FYQS{%*vgS|{x$`;3}n*wmI8H1T6-GXsD9;BWZf$9<3fJVN!RA3|1s z?>LIT;z^QqpWORZ&y-X@dz$U;rdhe)lP^8TC3tINAvDRp2f=z=UP;$ayqG}3ekRoO7xredc|cLk>J$j!r|UOCRWehj7DlaD&3~7 z4`@HgBH-8szMp)-GjZEK9{!sB@q_5HYb>KJ-LOaZEzlwQ+mRD*lMU`Wq%mX{LK%>$ zv`YT@n|&`HYBXLO_%^UibKzoySJ`lC+1=#6ZJd$r^7 z`9EU3*^`@jrF)=v^!br6!b3q94*8U`-+50jJuA?pTv+KhW1DfIBjWzKb)1VOx1Cz} z{Vqa__{=vF4zwjzC{R?InasG4BrCf=)NLC1>0l{7*L5zXfv0hzc_kq#EPbHE9omMqx| ze^$=H0)on7D=&RNQc-A311wADG}wq96GOy-_17hBk-NInAhi`F%dEU#0OaU0H;_CW zU(sfEgB~CRam2XzuSMi2;re00nuw@hsFUzsKx8kWFTtJO1}` zzeyMIQk=2QoSIomY)@C(yutO2_;xtt+FTp1JC_dDyJw%BWNANPb`D4}y-5 zvg*w5=fP0^$oN@{AgsX7VHL4FZnt=-Jd`+$=;cHO7wC5^wIn=HB$)7 zvAW&?sA)3Zj9pL=tekyjR0J(D3=F$oVA5zP>q4!NK`$j_tAjTVSWVj>k&A5I#yb}C z;KX%nF+^cI9TqfH5UVNg)vide1k(#%>|N*ln4Flf`AvEnZqCVs@i1`S%Dpdb$a{C_ zVm1WW^>scZQcPk_-xNLt-Y)pXFN(Y$_ji4uSO0d>-@Cg-0x_AslSNh~$e9KDd94t) z&s1w=q`mL@o#p%ZrmaH@r;*QFXWiEg_J$r?Tbjv6J|9!%6_?hcWTNhKb^!`!WH_`> zKed<`>ca-49JP_W^cmVg*SFUSoOM22<=vR>_EbE$=fNah(4gp{HSxL)n4bK{#6+F^ zOy}(EqX{x0C!_zvjdMn7HW@cCW}VcPfONXG03FYbL+U%G8iJ$$k9TE19$L&=xEru5 zj`4psz9cvuP=@}&rfPiYscn7&^=jKk&ES_(k>TtSmA5Xjz6#?DV~x~jV0gnxH()Gk zQFZ$6-8U|ICNa|D7L4)R^@oESe?MZ%{N5;rtqAUvQvTR%pXdCUwh{Q9xb!4w@W%@) zb)x{DHT2Zzi5UZOy=xhIs%RFIOnn;v+_P!B{p6?ppAy?m+l)4U_vMo!P4YIIKmA=k zf3ax|vEATKxoJcC@&)QSWL+$CNQLN9;mnE9Y{jGz^B63_mD_WAxV==Ru#;|rcFN%K zX;YzaZ2tSwMe%Zn$*8CVl-AUyIhnq_LIwWfh6I(VN*y*1OXXfW)0V!zY}A%+5TL&G zaz^i3Rax3KAKl3GsxIQhf|5}Ha!v7mkh9N+UNXyg*~v7=0E5}63X$=@#w!neEbjNG zQ!S#f^|Dw@OH z0@r#ibaK_@m*wdEQnLj;S=y)HWZo;6ipYViEh`@*#ohE`8e8Emv>zVhdrq_J!U1`x zxH7NDcpG~B#-%?h0yoH5QyQ%Ny_ujN))$mdLy?>A{aZQ6z?9Z`lX?BSRW9Neo*Y~C zwU9qMd&px$TbNVi+mApfBQB6=vH5*UO9}9>$&+8*L+Fxt-Ibxx)nh9zbZa_A;{l}F zme3G0Bc|#=n1!h5lVKWC&d}(aW5-gQm{M(N5gz4Pc{oF*Z@wNdM-rY}fOl-ZHb>ZY ziAqBir9q53XS{j}XJ$D^M;iUE3{|A3F6VQ9Smu*ur1UAu!JfrmYsR<0g+ej;cNtd0 zmc8Rp-|Gn`^=#pJ^n;Z@`;( zLhK6vsku|RZEJ{;tA`D{(aKQWOlTf?dH)1ObYsz2+(OhM7(;`lW(+DrJ*W7_(Ej&p zWELL1J*++Ris)m1S)yEwJaB;Z|qNvS~{Or0HV;eFt4LmB^9<+!#627ZdQ30=wh(s&^zhf6?paI^Kq#lZBcL3a zgsjUX%5t6|I1bKS$+%})tHukmCSqA$7woS+~<+A42P#@mkQYp#Va)e0M|hj_K+)w#t&w_qzH; z-kbOByJ~~$2&&qyy&lg*krEpT$w0Kw*mXEg5ykQJ z4bf0eJdm<2fKVO}DHBfW&`=uouH@f*Kv6R4NqkGtHKcrUxYU)C_@y?TKkx+)!|;9A z*E-jmevc#GQa4w-I?FmzXHYSlN%rG*&~I+#__I0O?%Y+Vt)`nW#3C>cK-k1M?ye6^ z*g**;9TsER-0tIjz(&Ak$*o+nZ`{u6px9Dk;$t^wb%UV)!iNBb#Qn95jQEDKHMPXI z&I*B{>a&Mdjc%IQ*|Fm^i zmeMvZVrcpBXHVUeYpSCIUk9NsjHsnAcTgghbR;Q7VyGh{3g^RohRrvkr8LI}-<14v z8go1tlWnE$oGU-71uG^Q-{|wPP`7;R3uBmx!a_3%(c$7SbL`B0V9Zxcatp!S`(_Ib zax#8*4GY!1R|*e!;2IX~WF^cr-XA?cWFb*d43ytiQiWcc9c}PFd}0FXizN&}JL77@ zJ~&^eQ2G1Id8EAiZx#2!cc0sq8opAu8yvs=G%21+y*RkB>J~kpyt>q zKV5>5O99Ws`nn0qzZbG6CpoyQ1=D?sm|0A4>ge_R$~A`m#7JC}K+s_pj@_ikx_RS7 z<<$e!lnGi4eip58Bd7H8lS2>^WZuxOS}i~?yEkSgih0IhDkV{3ChNheSnXHAh%#Nj z@;U`3a*oygD((Vo_4-1dP+uPUk9KM*HSE}$iypC;5Q3e8`kacV`A$Q5=%QZlmI+lu zP~Yz7jTyASs}4KzOmu^?s)Di6df)&Vq$6)kf&;@(DJHnH(_w$G<5;}3M^ATq#@fEW zAq_$;noGbNVxP(?~`{&I7t zM9h}l9Tyxu6sPcEVwtIVKqDB_fL5J9rWcEV+7e8M@cjBXdapER zmZ|j!g0KtjwG{8%@cbUA^T$`ogA6l8=dt=<-d0d_%B9MwE_}_gG_qyE(D2vF%a0F! zWj*^N*M~96&x?R&LScyCPw3aY+%>gNWfIOl1?6+#Jry2;Rj6sB1Cho~&=FUb^AcXU z8WVl9n3}w=vb`TkIV)$>LH)jkuz>lysKqu_TI1)^Xs4uN#+l0la&tFqUxK#TgxjCGW?XtA9q;>*mEvvKFw+6cHvJCRb2g zZO?D5G&)X*<=tW%Fz$I*WYv`~UT*w6+)+If5&=!j{mMOrmk?Bk!yaw1pb{&3>VNFc zZ8?Mtp1gRlD`!q)6xHFNd9U*|>x_ZJIPDBmKGY*B!e28EEdnc5BrkH$HA1vGzcvWd z&JB;PnSBWBpT$IqmxF74s&I6=>F?Yf7m?0Mv@7!z(`Tg3WiJuu$(5KPWMSty-$Vj! zMz0iA<`yDPfjoKB05w!w{>G7$7Ro{`TVNcS9p zU)jh;Zy%!6Gw~xX)6-lW)}{t*!{8QWSc5fQYleT_;h^S=OY2U?UOp6VRW$RczUSZj zIlOw`c0N|!qEYput@FZm(2xc>!0yf!nfeyPCqa{%Z-Uy3?W}EGFJJS1qGUflma$C) zt0Ea)5?&3|_*2A<140NU-a427j#qzF7aegUA<7o|RkInsE!Pb1aj+$%U$rGvgR17Aeq@zyhO~<22>*Lf0dH)5)phSiBzc=3r_NPXcPsZD!m)kli6X8k-jKPWIvqXkW@q`VA2 zN|4Vo+=esH$WditUtUNqNotJR0h9 zY*K5-6|3V$Wc!7XDYBP0tJl&q(rd%Q4(1f-$ zNW$!Pi0)>!V;J^l0c32yngWEzeT$J6Bj!J~1}$TBDxdM(=adl^zM{M{^TM1FP~m3$C4$Pm z2sm+f6AnADs4l3{ludM0kAXUgjf>e&f&S&eiF$lloA}*psDif>$^_|F-K&|<@DAe} z=dk>R(ju!_26vLU?PhL#(m`OgB|N9HAibDw_g9^_pR3&^QNFMu94kbTC#ha6deXu0 z;{&E@(;sX|qnj816AN=-Y?wxY{5rM!`@C zm*)68*LNw;fM(YgIGA`K-s6M1|Mbq$46 zlaU>(N3-F@~jH16N%r2fwfeS9O9q2~|-q#5kY+gU5_{{7@V;*pj(hRwz_=76wNd?&A!NrXt>}?qR88-w-Dpw*_ zZoi8yY#$-pIAc)BST4`$B2-~pMal=d0_Kw5+wXu%CVuAua~qNY8)@xwb#3BNq;)WQ ziivj29H#FaCxi^}##SEezLtX!_v$Z7TK=g_yz;X8yGHEEPbQ4mj}M$;e?!(nuGH;8 zs>!-aYEL}IQ8y{pe}4`t5_9BHOT*6e69(sO3A>A}@Q`DT@i+{G_x!}}vs;WOsW77b zG!JUYvnv=Ae>X!F%6&DogI4qYXO`=6{7q-B8cj7TCB9{{YaVdNH)6}o0yn!S?M$pB zCbA^l%Nc6X(>%a_%fkY6+CfG!LcPdR?p_#z(g{lP8mbD_&FR-5>c0>el&Y}aa`TC3 z?cT1yV9kB!`DQ|5m!DZPwVH*|bAM^~vJC>WvK&(vQ1-;%ar*1mp3f%qTY-y~^cd=1 zZ-U(AKcy{xCj-w6R|;dH;Xfo$*!Tu3^-oV59J~Go&ZbOZk{?$aw)!wrX>PBLS zUOZjen{&pEhp#G>zss1|LZ8CRkr;c~1CQ?CSc3c&7O7e~awVb_4i|V>4~eS`=SV-J zW{azg#9=g?A4RlOgrW=VhEs6TFTo3j-mfTX6HvRqfZ5>Tq(t!Tlf zF?N!XSa3u+JZggs9-oG_l^QW&p^h?PEW%J0esZXzy7OID(C#FUsk;9WhY3eO z)t2sA#m=+h9dXii161aOi8n{Hk&Z2)!3xKsd=?8P-y5D*rcox>L7y7cS85c4h3d3a zP-#|o#9>Y(3Q52l3stnA;F~G;($wMvGeegO0)?GgWA~gyyQzmcs!N|u{cudm7OLoD z-gg%pS=P!t%7f*~B)GPeay}nzhAUBrr6?|T75V34tStAaCn!6lrctGnZTM`f4D6F9 zj3KeQqfJP~RDI_%B;0P*} z_W$4{afyV#puzp)OgkViz;ozhNc%-6`Ec-8uZUHQ$^Ue^4E6ZzP$nGLH`W5y%?M~+ zaBWpE8h4&8b?$)+NaX18xI?p=sc2Hz^(z4tUDp1~>ixLI2U1R^9UJ5ObBtPDxV6E#pdE@<7hgT`on|#2mgTABhd}nqDHHI(u-d8%q<&Kqt57Vpd45kw zR8i2G$Ljaq_Bddg7_MwxYX(!0oneetGgLxqqY4$BNMOc7)rKH)=VS?1T|8Jj1(K0> zwP=Fdr&;`A|6R!c}KJoPw*W>r7NL`wjLBUeyFr!d0B9mV-1d|8M1T~N`npzk+X zC6Oqs>xL1`3@lf?9)S5iJL3FIBP50ah0}^C7C(RdH5;NCK6lPcoLl_TL)USJHCA&A zu;302bg{?gKvB3PSGmoD&846UukI_U*6$^*mb5$%GQwd#?kORTXVhJ`5NmXiJ2+WR zK0RH#Pjv2p&|`Q5wEiI$J*uPu{@xlA{;OCEJh}z0{^BG>ly}0QGaSRkNNK2mP#Pxr zQA>E%iKym*dh4s3G1Uhdt~k_8`n}j)`fBsjLsuj;UoAa!Q`r{U*n^PCy6m)80XCJB zv>Cu}`%B834*1Bp9eO%NN5b^SsAWu*!h~JFr$I~=_$ndag2+>ALEHi;MF}XlN}CqM z*=>#Vo!K+OdXGQr#fm8H?|+F3NcZ#m)%|wsi_!f-(1EO(%XnoSK(|6aoSxcUZxzZg zmwWgzB_XTi<3!b$Rlg}e{9P)dv;MKT_PM9fJUBRhqj4A+3EJD(2m+0y5mV|6rjT{5 zrvUfsq* z-JX?G*iF#1RNG0~iI$3-6EpLzIN_`Z=EJqpsaSq;j#r9cy~Dx+8z`U}26TO zajp%&P*NDWHj%w?13bf?{r&U^=1wat1MdX76RHx1tq}LnjcL-zbq4RADzn;*Y#=cZ z7Z=gcCiP(<(XGo<7_NI=xe$ts1-3^v6BJ)=@p4Nks*7K4RMqr(Y@r<^cr!+&Uo)Z8 zmAK9-`sCx)7UAs#})>m8?%Nz@Z_v{S?1 z4M>no{EKReE!*T6K2AGYH4}1%r%K@11UhIYVFm-~=fR#hBUVm**oFsCI2KAr$|0Q; zK8ppny{G3=tmqKF6`$$`vxQ=3&SDivIktq0x^dPX_XC9g0mVh$UoXa%-+W z=WzDd8fZh!V1t)~(=@;Si0cmgUIDA}MOiyePkzli_77bCw8(`)F>Dr8Q-&xpjv^=5 zcDyd7)_yC#`Gu65Qr1E@lhX1$N+uZov6Q|rXZOzQ#_h9h15Y{6g1LIxs|W?$lHtU& zA1=(>Mngex-2!>#6QFD(CS&-EcN(Atvs?Hv=Yy)H_8Plm}vEw%gWIF zvW}5o+7_-w`KLXn))S!~&AK*Ih2`Hm)97kOU!B8}iE-Sotpmi%_d`zhf=`G$l)3jd zH*N|;HvU}&;vY`2BCHuD^%-4o9Zu@!ByL7|T*>CWvPAyk)W41e?^?*E>r*n|hGwg+ zH3cp<{m@QdSZWK}{#;)rGvpV!V-! zEs;R8!upm5Yj%vvJR0h?2Nn zl}}pStU`n9Tt#e(PFran+OuC^h_X7LUhA?)kAGF6DyZ?I+ih;X7-bI z2ks!&WZXILsLk9c?6}rD@UpA}F05&~XF+U>{Xzu*uvsBDMHcwixdYD6^>Mot$EAZS z8tFAg%>x$&^&V4$6rH^Kw`_uP*D?#Bb1P7bRM^>v5B+3sACRu^R~j9ctSP9QQYHvV z2E(0xZX^=Gi4Q00FRpMj_Oe=|ee8{d66L7vmZ#jxrMT$UrZRf_;LJn#Ojq%8R($Ds z?9TU2zgk)|+*cUFIEU^*k`*+O3V)o`rwm;s{eFga7JVYpK~jNCvFRX!yePakuT~Ds z3cPPpil_{cUVB)HbUqHS0L$2?@aO?C%WFR)2-gw;h9v^@Q;|#A5L+nXGFo(ex;XZn zPDwEQfZ`KD*ev0)h4Ns1jFmd;iJv*qT02SsB_O&i4jpd5D$E`{yv@<&E%n4)(M&^UrPuraOVH zF~%RKMVxC?u4hmtursbM*HR@<`nN$6p=*-lE*G2J51n;64xC#yo-9s}jkdrj33n46QX^9|T?{EH zxOr~mK*`UB2h3$XJfPG_QTs?bEu=Vli~><$v_3!kgG`c+`v7?~kskBV!<~Mlh1AyA zP}up%)DZ0HD!%%GIbS-xHSzM)HF%g8DxX7p-quRXU*J=mG{E zVRAZe@iYAm3kiZ~|n z=;eB(MU?DegY9@0hjt4whv!Ve)nx4cn#L-L{CHfD4*T~}+uBlh`o>r=Aqd}$Ul1=B zr}N`lB^mbOIi3kxJTDD-kRL)}cN>Hc7WKfgN`#4!*!DK*k=h1bsQlLEd3(k^LQrwLqjpvhhJ==j;ttkFs=~% z);7kdaKR#p?^kV?dK16g$l#|l=Qm1skeHwpb;LS4 zKeHfCgC4SIaoldxxp`o_!h)Cw#`Oia@+TkkW2)+`V`PDxP5^w1^|+lx+GB|cwNa3k zTDo2ZEVf{X#-oyZ@z3IysQSNB{tG#S+UYy0cYn2u%<}GiD46k(T|`#5TptXw2qw&o z6q)*OfBtT{_}1g|{)_WzKJFNA=2etTR3>ygP+-D4|1-p^{0LVmWG*Sb!4Ub(QN($M zcIwm^@rOnzrXCcjz6PrH&)ceYa1%&GKX9YB3S_(nhn=1MuVm%LX=Qq+fc zB~Ot#S$<)WNAfUd6p-$>qe|7X=f(k0VjfLSjcl_ zc5EPg%ulMEBL)tmzE6(5N_F`o?knk8Bu;=6E5LWni21i6d1ugP@@Obh2`c1KLn-Q5 znpKw-stvfeQ`=)a&te}8;lq1I;>kMNAI{@cWIl_sW$xW zV@<7JZ>05X(9B?C2XD-^iIhPS1mLTd~uw&Gcs`_suMREYM@Ioi_mgMA= za$MGof9uS5w6WqJKpS1#TEZosQKHxHylC_SVzdHS{~I5t{2$7`JRHjR|JRZz z8ZAsI(=O4_f|i*|C8;dg8-tj!QwTFiq6Ht6icF|MWS*$OpRomQpSo;aRG0NMQH+L{Fz-iRcG;nu>xQ>e=3S^Y( zDB8HvDa0A=sz>Z$B^7mklZR>j_h}PrQGKl_cq^)QJq9RBY6uB7kGzRzUaVWJk#Ej{ zUTX_vuYbvV&8hZNDkfBR?94|PwfIKnFogOx(YADCmEJ1=U{Hhc)z?z-r&z-9t`OwC zW*ip2gC_jVOJLHPv+l|p>WUOwCh1+GD|-a8i+Kdc2F=OzY5+k?*3 zN3adZ@C(RH3HF|-K+;+DowQ`0)PH{Y;2JkuQ%5M*b<6`8@uE|=ocuDcAkkGSvDJTW zYyW(G?fI`JTHhe0C^XM^`npo3ea`YOSF`Y6KXaif3=d`J>P>i>usoEAC14HU6uhpy z*(?UWi&%M^hNo%5tZt^{oSWISB^iGE1b*uZBg^!1K9~-)BsdFyR^_c5$HLe4zmDzi zB-a?_O>t5-W>u62cxT`K#P%h6+0t50W`T1#U6jfIg~=p6ycL@ZX7{2%lk~*T{((LoPBhLP=)jaT}aF| zW8?1IXl%3Vnn{ok1^zalbMA$Y`6hK6xvt`544HS+-Cm?6B1Nbm*~by?b7;u zt*bb)rd$tdx%RGs;Vhr)g}(WS+#D7{KEj(z4Tg!iP&^I>7w$&pGhar;fvuNf*28q! zqNmE+Mzi?=2q4N*Yg|_e8$&`{+}-npjG|U&)MuKLU))tfIxLPu0g1b4IpQO<3qO+~ z-(26tx+hqU*ct+?k@O%H!5-e*0Tiq92||z4FGdG3#E|%uo*<|8o3dl0m8{9>0we9ia7+U;lWyNCwxwK8Ne`YC z9xP(8mc{E@k6l9#>AYY0JLDkHeDajc((IX*og$C&J4?~Mz1LvTQvhhW3Gy(H-ik)@ zp6$h@1zXC?+6s6Vt+;85q7Y{{b!7-+pOC42yGEhz9AOo=ja=cBcKTxyGCbDQ=1SIf zG}fLoeD1@Z+jV#}tmCPOw|9`VebO}77=bBk4h+rFX#bCK{Y2L3Be1NT$Jc<$Ee^Y_ z`@w|L)TZoYE6=Z&qN-d(-np)wgfr7yGdQF;3G6*qprsb;f>1ePOL>H9ZTiEbT*qMp z_7_Hc2BWVRk47E_DztkNqhptOADEFYq7w^-%tRFBT&JP6R^>R{%DDZvx9Ggt93HEb zf_$IRU;<~*;X?F7MQF)Qk+gwNBnu@|TwV%YPp(qwWe($KF>g+SuAzja>lOXU&qzrG zAwLubE*?jHC@mw!)^9!U2rPOL0lLOt@OR1Re?B6_4Wve3hF7(Fv!13=;3L9eT`-N3 zdxtE(b8l6CSH*ZwweR1tYvF_tJcwn-%3)WTYmJP1m9od5Ne7D=awyJm?2r-~B)jiZtB?ClB&C#-f^?p<7Zx6;_^qa6{@xZQ?{s@WLf2rz z9>TmX#5NFN8a*VTH_(}&WJSR2zE@xV5}-^3SGF*U&K%ytz$}fz)Mf;wo z{blVh@=_+pFCPmS$E)O=CSD0U-IG5uHBwUBgX=r+j|A2zXK*%9G-rTo(u5R-(wZ^5 zJf3U}o}9X^!1EuO1c^T11}`+W9eB(F2WV(`il>!ABJ&aaITjX4WvmY%)0f5R4U5Tu zE#aak>Sgsiu&KgIx2`G9hPdWex7>5OLT;=mo}N40CR6eEOc&9_1E`oMqim=#>60r_lx?04w@#(fh?Fy>ND|oQIySlxZ7GWr^VR@>GeN9 zB4(m--S@&_wOivT@7D9C&g402^N+i$`F?Jnq!R&X_fRV)!mb9;-oKkmC8IjDgOn*K zXYxK;@;KM$)XRkbnJ8~#j3|O(*l+?PQO%wFXTBac&q1eg2YiLI2Ap=%!dC&JoENo)WkZ^(6 z6{5tL8*_AxzSh=TC6AI-&TRGkM}1Xmc4}cQkA7GmaGw7IvN&PLnzf%Nr-;<0VfxH} zw7LqHBg!QudC&AwRp*?FcyycLNU0itH$mE_eFN_6!kuZbMbz14qw{U#D7@A_h1(0- z?Y!4w6e_H}FWWHR60o|p+57Slzosp4TWC=*{TR21wlH}mR)@;3((+PR*~v1=m6rA( z|7t8(HuQWcZl`HrMblEjq~+{i13nN(drpZkbi#gxnYmeW7RC;X-;mN(>rf+{=MEN zIN28louC316TLpa&t{D1GtXCs5#&WkUNJrOG*}ct`wK{xSKd%T5G~hJ<--5!x>@0d zDDAA9uIt_fJUZp|AP&a95Hj2))+i+lxFTTl7@`yJcizYvswXxjyPIok?{Q2cqVzoOW;I`-TSrt+2hU9K!AXM;xD`;8t? z9f!vzF~I5a+!^i2XX0vyPBHW}B&$UnwPsF86xOWaoJU1mwfGD-uQh5p?$wh8Mf4fJ z{0Kn*Al9iZ@}jaa3l9_S{BYa3!hBj)pz;IukU*4NA1TQUMm7SUb2UGmU~2Y=AYU1p zc}0mL0=s;~mp3S4&9&6*M%q{D-(AFv^;stH)~F|Kl#tOlIb8{?E(KKDmvFBKqjXy_ zu!ZY`84XO4EqV>-P&FX5Up##J0^m+APEjL{Nf(AIA^+}(zR!YTPF>&U4cM7cpqp1c z8UZI%ZPr#XRjJ>4Ir{z`lCV7rj#=zu<&+YptgP*#H^sfV`lWeW=7B&GsBU1BsB)WB z=ib-aiuR+~skKDB+MBLnT20zYduH~x!FKBN9!gOfWv@C{X6h)kwSud&8T25#o47Q} zY1IR?WE~0a->W_nNI1m18Tvt;%}@n?{^-Q+r%;=cy$~?lc}`AlYIh*X3FglIswa*?@u8 zT9@Ki;Q9{f%B;7eNyaXB|l!hbc$5B_#YSR4>t_3`ugJv%gC{&YDY zxq8{>lWhK%R`=d91rF(-K&tqLy9>2b_~H4Qr0$_@+bvdWt=VQ@_zK9{Nyj_-CjmzG z4KIn4aJV&U@LU4A$~vCAvG4agG2Tf>(SzGBV~isa?-gR=@U+tfUneoGr)gUfU`;eD z%oyR)F9+6BA+)`ZjGC}GQ;uO+Z&=YZlM_)IS zE~V`D;up67nMI7k*ahXM*q5GoSC0=IRg2dsz4%}QTLU|+^QsO5HYWycHw+>;$I_7` z{csT)LrwBl`Ji4pl@L}qud zfm{ zMHuZ9=?EOyEn=B3*jGzev2n8Rt<8=CPZ(kA+vMe=i4pgfJsf&jax8y`$7j{8!W*i# zt5k%LZF`>U4(|9?T7j96z*=}H@ySiVsuz*CmD*zq{~MGFPS(301nl|!JS&LEzd=$T zAYdG^2~ZX$&mV0;Y|$5uR*1%drOYVg_?^ch<2(n^Q>2~MM@7i#jJ+7KGT|gSA&3^V zDqjytSx4LFuC=K^n6?j87SWc7>e#y4>!2saK_0{&c#Mf)pdg7Tb{r20#<4lvOCv{7 z>ySa0f-=ls@%~Wl`%utu^4$@G|yZ#Qex5pmYY?Z+krrX0u5|Ez%z3~dN! zg8#vw%bLtu9Sy@9bPwrX=qatcrG&;hz7zzuH__=mozZp#d96(Co7;16GFVejksL!t zkv|Y5oQ_q9Ns(l$}^ z1iu5`{rhM*4pXethGPP`6^N}TAuYD5X z+EDtRwT=(;bj)`djf8aDWxdP(X8yGn^Ryt4R8`qYX9~eO3pOUJeg&MCQ!wdl^h45F z%0to=vlg=}ZXBkRe_H!fr}RUqse;oheuD3$J~EGnQg5Me zZ5hoxBUy55_Qulcv8;x?)9+vzb%Gkf*MiuD1Uk~?z91NCfCLpN#No*AX$^IGv-OWb zUUIvkh^y}=_GaJabQ9m5$^?AkSXJfjF{wv-+Q`KjBS6<4?Vdqa_N`0UD zN3x2>%=+RByC}-K-z3jel$(|;e|oTG#n1Lf5>{lwn!V>7{IoT^4?ltXJrIps+?lK( z5PKD!G<{C!rO5Y#((tvrA4Tk z6sv9{C-okES6{c{V-|DQLGIl5)x&RKFR$X-a5k0fyDXZhE;&(KT_%D2sZMAQ~A zPNgMf%t{8MM7bX>W$G)?fC80ic?G^U?!jaKvQ;LBy5ELf zH#MjJ%g?9hP$K0KspO3ovWAM;2ysU(KM5V+oT`vn66s)vh|Y&zBN-Af60dkf03RTX zQY2^^=@+-A3)7TU|Ew?ukA#6o~paupr4oIL;Bw*_Pic`D!sg6MkMK1PH+ zyiYtx@JT3iFiHfcb=<4%J%(nGNVNvP&%Tzj90rkSFJHC!khYrM1U&{!gj@BOBh0}K zGRfkPm2GK`ef**R`Q9M4acN2erPzGXZJ}b6OPR*sv-MSd`TOrqq5oL;_hTO&ymhsJ z_dQXlarNIh@G!=Nh3{(t zF&&^YjcYN8F4lSV?PTUU7Cfxc`r*;r$<7&skXPpru$LrjuIaNvN_R#Sa-{f6xA=y- z$^ErhJ1|C2P)Ipr!qG}QEigwAS$pmAafa`D=^Ed$hf|&bE_`6u*aMJ|wRc?$Vt~7i z{6ST>o6tRhnySG-DvXSGT3OJ_6|gZ3>3*)qcfiG+!}iB??u~eH>*$zEZV4%^iTISy z3~r#HdZ?0b8T$`bz|U&=Ko$>1*?)YP)^rX zt-)-fQ|Nl>A0P9BqK=I&-GyuHH__@fXGF5Fs+Q77fc@+FioXolzfua2UFo0I3M(#2 zKeY?dJQ0lA)ryHjw?&s2S0Bvh;x?GX;Op|AUH_YOR+4Mo3zH+55F_D^_#BZ_SC^eU z76wk53Hq9ejb>opdmBv6(}loOErvr1BztL`ViQY^4f8=B^(l|Ak5)tz=@B4@`MDn9 z{V;?<0Bm3qms((HzvFb#@Qx?lqA`RdqYYXyEvI(Ob zun9Ek-)JkQ`A=>to+6#Lzv;=eUL;n1yXSJ7{gIQtJy}m<)xF5a%BSThMSHJZlj!Ot zd}P{O1NRcl7e93v7%h7`(?7#f6sNUdi(==>9(W~2*ZW`z?CDv~dUmh(1)Nr3y?-&! z|HFMsQPY8pC$i64(<^H_j@y4zwsc9X+t>6ug>P>9ru=HIT}_2&;nNl``q!F=r#*zq z>VTu?l_+wsuoh%DV44N7jo$;ZU>*HeiGpuQ0C8~@Y)|alTOhs#0j&vBCAJ1^5LzBr zmK2&ajnWPzFP$Cgm|s0zm|`@!sw|0*95^}@U;U*qOH{ey5bV!K^ATh!4E0Z|5&(E+ zBD=vu(&8oh9${lBY=!kh^ZImifR* zK8AF;TJCy?i7t3ztT~%5N36>ey1}TkMQ1tDAl(o?}bOim%ApUm;0o8Nf^V`jwHWEvoCjn;dK8qV1735hA-t~>%(eN< zItvs#3C<-gEV8LB9qt8;H&}*2H*^!6;yd+2M<+2m`9 zjqa6$Pbd!v?;gSodP^=Cv{PyjCb+P8aAf-H^tZp3sgpaT3%dxIsr3E{wu z`TrY>f?Tas!k5_>fmFUqq`<=nflZ5AG#7k7esZ@)yPKzy=@Vxlh4vOisqpwh&JMEF zIh3Yl!%mI?!u>NM1RF@rm4ImFbEoXhS%=hkaIC#f)WH5Xo3m=^`FMH+qKKI%T#|gz zJ>=ohR8%XxV~oC0IP8N5H+4Z0N;xwZZPK#GsZp)?HZ+cvR3n5-Cl+vb4Ms=lPRvE| zJxalWAyFOK>1~$|0MO<`8$uZb(HE(C?4%1g0L1#%d-;P@K`ds)auL z>>M}>P6lHV*v>J{azr-{{dW!TV@Lu>Z#k_m6rZx+a8i z)1(8i2a*(#N|y|t*>DVQj$c(XjUtG4p9(h%gtvSZY!t@_0GJDrN}76e^;ML^%w&b9 z65VPpWoo{pX_~i3qTEA_`-%6G zuF|eLb677dwG5=eJ|i#%<|hdtiWM>&BF)kiFQ?_y(rr`UR=oHBai{k!T*vQwkMANT@|)M{h_6XCXyKh ztyJn0-I@qcm^d9g5MiXn6ZJmmzZSrbSZ#g%V{)j?{AYRU*4qvd_^g?wi5h0A5_ya$ zU0vNWVic}de#dUQVN@n<@WD&d8Q-vk>2_S%@862rXI&GSU!y`uFJx&pGLr0t zt6OL)jSS3D8Jee#3N6`|9w7uea+)+Px!@6?(60n)SGG;z`RP}xG|$TdWY;?jwOlvO zY)z%ot*C#_y-tqmZBf?whVC8eIBsejZdb#68Fk{YHV~{TH^0$Smhix@%8=)+?)=i8 z4=4eoS$M4osl8ebhw-U{1uJGiu3d=O09jx-R zJcF6CfLoaRk22|<(*!Cz7$wPtj1W;+tq!BrgzvNEj9Vp`!FM7= zTu#@1pRMu4V@2pPnJuC6uEEf`m6fuMobCl1!)pRK_^cCtZM6s_{{!a)7XuKrb?^|U zpi&s!giX|0?Lt+|YP-7pLsBysOCN!CB`o^WER4{V8XOG)F6ZopC`a!%F%5FU-nLuT z_OTH455a*d_EC?M#_7`23`SXLFoQC9d!u!eFzEB}&fsq5`AgLR+hoAmBgl2E9@&8H zJKvxmE)5zOSX2;KYC)shRPfc?nv>QWy-B&o$v!bc0$X@T$#me(6Fd2-iS&Xr7%~wD zZjl3kvUi>(y6*_0~?bZfldk7OB7xd=7gNOK|HMejpF22Q3x-5V0;n_OM|Fxw{ZaL5aMoNJ5ps zK|{cFfSkD$_wPzt$Iu%SFJAp4ZRN9iZK<(kY-lw~gi;jq?_YkAO1K@7O4oDlW#u2U z=`tr5*@ws?&SJziAug|cUIX`jhz11#9hnMU1VJu@5m?4*6sRRwmQSU_MfrvSEUkmB z@-`E_R*Px1?zz&2(J7-oJjPCSeG9`n7#Dj8LDs!j?xUoNAO$h$s0h~X%spkKUg6UqO*=B;SdZn?#v)m@V9-{&~+_*69p+{_$moD-W?D0k|2awm|)_(-{ zQhO%Q3O2a+&o{t)+9 z=(zygy?_2x-P7%8&P(1A#-e+k1wM=piw0xEhps#$Y{12+1{ZtKYp*C_(QYFAZ~qi) zN5ixZ0(E}87PCGYCw};Gjh;FQhZLQxr#&^3BA_%|ZlST~Fgk`!wHSym)8W=Z59V?o zn?Py|h`P)yCTu?teXqsr>HI{{V69iBo&Vt7F_pyyZ#)P4(?AJR`EBeFJP*hag`?-=RNiyK`HSvGOu3W&L3HRfrEWY&K%r@9dOCBMhTEKFzKE0nd8!Jom3=jr_ zbuD{bMx31s{Q!S85$tvD^~`QUtdecW`R$TsP!zDv~0w?u$0R zD(8uAznwomtNBeOoL<1w!T?~(WFZgX$?xAa#6cfIdiB!#PJDQw{a-w-A+sTF>2luB zlIkm_?Qscc>I`^PU7rtBOig{Mnw>i1^*zj7-fw-{PdE*(qNu2T_Z@jCIGZ)rz5R+Mc@0R7uFnBtO!G|8dhlB z143F)NA=kn%-elkM6;WQ@{b8=k%HJwY*x@ZG9{ebn(HTUM`ygSQUW zqC&y^Wr2p$BGIWn}M7I}U3u7)9P)g>b=_9b$>d zPw>_Cu82l$Ll=m=m*HtDHYke9{zH9ZuqbY$+$Tv{y@>!KgCC!Zv)I;Yyk?x9RY!lQ zfG49S3+^tLOLX$d7fM}F@c~8z`Bwf{ThS0ZU;!PiwAMgakKJSrHUu#?>n$S7m_gri zA9coM?0Xvq%zeDi7AK9tUeyh{E*hJUJ}wDDec2CAcO7^?kA(6m|M`M#a;&q+e2!+56s(?a)a#y8C}X&;R&_=GO_slYcxmg56Wp&MG`5 zqn*9xk*>FGc%2*051?kMf-OY`8aEsp?fC&^9h@4mH@hiP>})}W9Z&^y7q^~})( z{$WFqS1s)31gAVP76kTxhcq^A4$20LnwLiAYh`QjW7NRlVHGM({0KAX+?%DVkZhz} zTE9H8{zP3Me9&;g%~Bdn4z)ydj4uwE1^NOBk1&dJ1_1gg)oEsJL9*uStcH$AJ$l4} z6H}>Jcd$%L^bzn!cy!g9B2$S!nc&v8g#3VA$^n3_vFVJK46uiS!Ql)T?s({v3D6OE zCf{*1c)vJK$(GyF>)1n3oSZt4TFgyHglE{fYptK8tFnd6#O=%_901UPo=P!t)GEZC z|BWcnP-5@B9%`q3s})0F4Q%c!Jt<6%fkXv=fjqPptTKY&(QwLcIOYyHxkzR!-AJg< zNr0@p4jdBBxmSfrxU{#YN`{jR161LyTKBLd4j+*co%)d{?AUnYpZaxt!&me1(qFAo zdsS~Li2Ti4===A z54Q{0+O@b#rG*(1DOYF{iJt_7VR`BnIrvNsEk~4nygD&0U^$`sja#Sos^4JPs{pKb zlTG;{y60??%F0Yk!}b3Agb=tZFI|qoqaksijqV~UxfXE6`dL!xVEN-0S?D~fLWc7% zC*RtcHo>QtaGSq+mpvi*?H&4s7QnWB)+;y`JpFW;e>*cj36l3-oSMWip{o5Z*hi!a z9y*Q1s&ajH@3IbAS3j-$8su3W?EdooA790v_X@Rsp3gn0a*$uRQehV|yU_%vUYpz|yY zXI@^%^ruiN2x&LR#urm!W(~`kBH(T3yX{Kw=nIo-H4*mqJ!ZzmTx0l3xOyi%{vbPl z&9NWMW+3+ISyNg2)G~xbIjq;;4y%>o(VFE_neOiK3~DOVjcW#b6n~<>a)07%s4YE#WIa8Ho4I%TvPf?BI271(6sT4QEYf> z^@~QiGgeO|`8;BzRg+?F5<$KXI4%L0!01oAT=P;u*pA4m58I0D5wT8l-DxGAH1-g5 z8nY9Vs<5)P=kgBrbrLT%zR)Xq+$5(P2rz4;7FFkZ3c@iPdJ$BHimcn7^EuS7Ht2BY9DL0Z$`frr-7Fg~`mv z^a$-VBV`*l_^h{)RY}5+UlH)f*Rctk8ax!=)#ueWNQ;9n30(%^-G~$ARXz>zq|RHI zX6ILU+IXqw@B(mAGN6;8$6k;-2}a=!d!LTphy{vK``mfV+~^@ecI>XLAy7n;E5}U& z6B~N3KZ=sKd#z?kF}Ge3Jt_q2zBM&W7nu@=Pip4-8{jy#O$A1q=uvElCXN?`f=A+2 z3{(k0Fm0==53%PB;!r-%U88GrY9MN0FGgu8^t+gN3E2#d_O(CdEupqynjIN=S9DAil%j=1lHT6siV#NkR_vMu($AL z%hHCv(t&t4>H5z6o3kk<4}EOE_%4Ut5@pJkECjvNJ>AgA!))ynpWmgknVtJsoQsPi zpen!b66NbtXy{9!f=Bf>0o728$+;N}M_?-8#&);pu?cNEZ@7G}-AAeS&^qSXv_dJ$ z{UVq!<`dQ$zwPth>r z`$kT~B6C|I?kT?!MGSu?~S0?yY@()&(2e2Xhzp)Zwaud3Fa`ecP+ z@Z8R{6v=+7yvd!I$ZNaqC26%3?>!g)Yjjupjs>}Z;z`%ita(a+Y zO95=ma>w-UM?d`KjPDqR+9e`L3Fn%BK}`Mcz5OMn;y73jv;#>OHe^8Rb3L8;rP%5a zd<~Id4iCxk5hZLcLVNtF=_M25IM%K^$!ww>i1XB>MK%Ce9tLVM7N@eNYcib1dahw< zHuhBOmNi`lYn4w)URHldy3-jOd=*_2AUOeo%+xs7S300Hu@l6yi=QK?v0m&@3V*7B zMBSy10>hHM`i)5$o~BxBA!{1CDSclH!rmC25%<6={r#8Lw5HJ~rW9%f9@S-V(xK=9 zztq9e<3R*u@0kcXs_xeH!J5e`$^l-sR2!yZqV5cfMW=20ce zW*KvY-D4a1`YDv%O?DA`(P{kQPjSkF<#jz&j-j`dR5J9DsZoy5RX$vp#{+DCHt0nz z7yVCcn5EWjKu~}|3C}a!T(j$%&0z)x|NJ_1KCgA>E)cmM%HdN{XHMYAXfRcNc}%bh zPQfp!rgWN-)02J!cK!xI$n=7q{SUlL-pZHjy;O09Op64zPk!@#ENuEm>M%-5*s8vS zW&7V8GS$9?`CML=L*nFAVc-mro;?=XQi;g}?-XWfS6&9%5j zc>Y>a`mBT}96>v9M6p>TKNVF}IzAN?NdHIWs`efpj=lD;aUba41BJNn=VmkYB_|W5 zOz7N=u4<3%dO~Hute>PuMAd_TDL=*>`Q6|?`6SFLq9qz~$j=cdsbsUX_D_5T&j^ii zU#ky}9t5pn$9_z@5cgm@(Vq{w=&+Ozn`*zzYWOlQKG11Q+yvh=50)wF+>aZ238eIw zb|Jz6|I}joKeIdnH3cpEV5IJs=%~9tDjY6Wo%qjZW@#6(!4BBQ{>v8>TK9sl=FPqX zMyLXf-zA%CP~yuYSJ$;Lg{)Cu4&@S!LsP7K3?AI+h42%8?`>i91JHHYU>W$P8ZPSH ze5xEV@%_hRlg1R7&o(Nx2a+-7#zfY&AxD_-Pq}56O_m1rlwKA;D>_9N(@7q+E^iq6 zX%t9Stc=SA|387mF+MWcl|{c~1D${uWE*@2vQ@(Fod(Bd!%rwNKxPX7@pSjDoN0(= zi^UmFm3+jMyNi+8t{Q4YkOHl9*DoG~0>0QEBS4)A5$@T=&h-;X}^ zMmMami#Bh-W)eO(Y&!h3uH~(MXt!gp!FGsQ>$=89!82?3(S)ePno9+Q(+!S|0e_qqm&1@@7K<4PE)3hj}%<-i&yKK%FA!j>h?w zQ7rwQp2v8HIIWiM-kCpDQS35O_Nk0wwRB>DVSXa+$yh=Bu#%_bj^1OF>7CgejiD3w zhHjl6DxN+&G$rekR%sic1Nqgn|H-e$uf>gdLV*?hd3JFIs0b!>I7O;5_^VcJ=FYwa z46S#c_ksME>aHrerz2bOrbPu$c9=M}-B^iPi5>F@lgLTf|9G#pLudEl-c{C7mt3?i zmTLpJ$v)sb3)(3^k#5LH5x*f2E^dK*6dEp?Dp46 z0gK%loT#;yphZA;thVc)hvuu`uNI}vY6Z-8XdzC|j1=26Nj2wXRc)5lA?3{)#7sR7+JNt)q zsKs1h2S#Neg^LsKoB51@#DNeAN$d%w>)H3_LSoVK2VlXt&Rfpa=R}H=#@3cIFZh9_ zr|zrktD_vZX)^Dhd5bUz&TZe>5&CPaHxqm0q&iH4@jI7Tc8kTF+BAS`>Z*ky-m*K zJT`m%A-zDV!{YzMX7o!5bQxUoq)<<%Cy(o5Ga=mo`ak3O13>kN8pLo7$bl}e2_ev$ zGaT3xwR1)PoyWP6n(v;D&OI!_E!0Dz`k8bH-6C?wUXbi%6z)3rEbbxcTl@~>rK>X5jbNY! zs$u;WeR+r8T5ybNToA4J*3U}zMf8GK9lIWP@E z>;^g+!_V(V1$@fcJc+5nWFxqz&r#Phpq;hFg^{wUCx5wGvm`^TAo)Wi`@nyC;LPoCWZv#ix3Iu z@k}_TDg$g-R4}CBQ0#MSNH4-5J`s&ueB4@V| z4{NJ$&R^JPKe~|K_B1Yf%x3NMUE{-gx9+98{3-iQlC<*nv-4?rXMe6_@#AwP2ic;V zvq>`Yt~nJMzb9UD%NwUZdCVq5vK)e zoWc7*k}XX8o?H$%96n;L=KILnpKK#rZ}i$wo*g#dOx(@f@0@!nqDXzo1ma%0o6cjs z<+UWM-*+50I6k@1+$r~2R8!87L}tkBd=taSc@rv;qe*207~t3olJ7g#@_KwaJ} zyl^6Ss129D+@qp*_F(Q-9HnUWI;(wkKH7ZMyO3WTD00JTM(uF?(diEVvZvMA$u2V_ z@iL0rsmijEIG3_ZMHNFUdZmr6uEWzimIsWwhg9Z&Un6C-N%a}%ZMO(mE&jH1wUb}s zQtT_g^84rgU%Q0Z87FaRti1dT2wfID=Mw|AJ-HS$OekBlxBJlyX76a6T`Ok%H@XH? z-IyATZZuBe(Yx{Lu~7mFN~4a5aIJ5u{xR>=z#f}~8d^fnp80`7n3KAQ<1!3{z|xB? zD|b2*Zd4ET#DiYhnDBS1{lu=nz05b_t?rNqL=0NN)(8xkHFeOjXNIm3jV~>|x>kmf)FCBwYI+XjN zl+=PCbyYzu8(igJE$7<`3y<`XVn$zEiXL)H%c|=biN&~1?yW1(A86~EB4YSXdgojZ zx}Mf8%b3_F9DewFTF8Lo#qv+{89(_6v1M;~FRLNxV7rJ>ji}+dCM})i!8V|LFy_{}VNM}?@;?i8f zeY@pJzwv}okVyJNC|dz|?PLIfCzWhFpbE*UtUMzK|0`^E*9x8mmp@c-OuBw;(AJL8 zX3V`*g?dOvhNXk*jh_YjL8HPY!ZZlxPiCt5%bC6^e-Q@t2sG1ZT>IXF|7jHuE#}#- z*Z;S?wN5DrHg`q@tYL-f%^Fx(9fUZne1s!Jf?JZ7pKR)zIn#L1#1B^H&DJ1KvToY- zfJ`syo~ENjL0u&6ZlDX(I{5{n6Yc^Lvo{5?pwUW9x^H>^5R17Bii$C@?Y}x;!4=X) zIBM5R_-`Gs@Zpdc%rb>e;M+d}2X?3WKDnguZ3+mfI%~XfZx7xe&>Vt9bTW`_n75tC za#lqCegIR0(NYcA$=g#@aop!PLatjrb`|~8N-I(CwdJX zlAlr7M!p&oS`h z!J%zFQRlH?G`N?+KB>eyau`yIj~WU?$o&sKL8WWb>z@6A*toLg%vW?@*eus71*7E9 zQ%gMwpTs8X;mzp^Vg>uhT|}lvco_dpeE`!QGV@eEd&=-jcGF&jkQZ(E7`!fgizN3^ zC};&OTTO^y`|2-X8+&aje=Y3ov*|^pR9>i^R&m9Bax+qrPlat)!oIpt*P@uYC+-cu z>5GJ8(zeL6l)Nidm+BvMR{d-_A-Rh2oy~i@r)4m5|B1op`*$tkTIbDq>e%R^A-lYk z->(m&PI-+EfKzh{@_F>+tx0zbGS}c7N@Sp^d|kVC@!bj+pO(ffMo({exAoVBz?-M% zr|%Un=TD#X^5KdMwB+mRY-*M&B4gZmkqX9oHtSI-&UBaJx51m%*qE@b?PSXE`|t^_f+f^kmO(f+{(S z3~c-NIn|6HYMvhu);4%QuTkd~_opyzSkR<4W25%A4IKqkF7b=xqs z;U1Kg!qGN(3A!Hm@w#y-NRaU)D-Z#z6G5undFJ@0~BlU*F|9jOeL|p&VG<%UB;4>yRTv0MrO%&$U zi}ht(CoZ(aj?z~xXD>_!t*b$l+w3B@#1hgb&{*U-YOF#Dxc4jU(k{s%x3uW3pWJ^1 z46Xk~t2`YZmif0Q!fEgxA*P(EPK`n`@u1l1KY{1{5}FYv!!## z#)+Nm4eRDoLDwzcX(F95m!q9_ERH z?Drih0o)2f_sSdK6^=A!C!6WkqF$8B#gYQOJP4-(328j3%3oJOfGKg0`bSg5NL=DR z7VikU4C@UziC*b!gJY<_b?!MnzB3IBlk7C#ai{RlrLEDhzEAp+x$M-PbrQkVe3TK`Fqo~2;l`SSP^|39s<-zPH|9g#O? zV1~S4l@Fl^Fy=ShJ1jb}u@*ye)Y?Q#-nvmPJd-ZK7gTxQMS>3;Rv}88(zfVV5JFz= z+dxK%@(#w3^5z=Dgu8+D4hHWYAd7h}4I$nc0d5UxaT4x$zWHZk0?91hTOZ=AR(b?Z zD2!!6l+*#DoxqOHD!!7Pc4fW2A$O^7M$$D(kJj&Kx4Qy_< zw^lWQAuy1mfS`06OpAx%f$%nCQ|g|PxA=WtWQLXP_H&=@63TY~B=Q~p=~t<~3w ziLTwwO660PrpYAj-(k0|%a+}2aSF*Px#!yc)8$j!_hJY0Po6FBXWucal6Os6%ys7y zsC_4)*(QV(;rVaD4f>iot59p>-l$@)^lJSXi%(WK=Gg#}V`$#(cK@^+3z65)9<-K+)qFxGqhZm@ zNQupYwA|tyfP@DZOyvu4&A@>V9E!A(z4v#+Q_>UJIfbR62Pu=W671J^Qo19~G&kP5 zld)`}{_$A8pKZ&`KufVzSN=_Ixe({n-2wU5_wzG9ydNexoR8N&5wcDov)cT^oOkfb zRIWe-v1iZf+10nZCbMgpHf}d&)ZHcnK54D_{vi)C5jB{*ziZ~xLgDPGP-tk1Eara4 zJ}c&Ns@{8B-c^V&Y{;JFyG{1^KW%SN_jt^NTCu#nlrnhpTPhQ|-U?KD+R%26KD<{Z*PN-&U>z91O^dM^2d^ z9QHMU4ytf)PJEgdKi4 zEH$5WC0OMo>=NH$&1c^f1b__3V?a-qg+Lu0K7v+XZr)Xz2R>92o{|Et^?Hh(sD9&h z!cj1pp+fVy-(~UbVvl-dkaEeQo99mmcs9&t%GVF z5l06+oqO@CDm_BdPZj+AF|>^L#H~GNp$YgbZ@Qoz9QTerY1D)vL8w=`_Cdn0etR&g zg>{s-(?)Myk(=Vueem(|Uwk5JQXT8UH^k^Uw88QX+ehGj9^S487<$VP=;#F!U(@df za4+lG!yfW}U-yMTs?8d@ghKC>BVdWJx931}uNt41`1-Ro;Q#iOG>GbhJN@L_BMv9+ z(ogU{inP8Hk-+vlejK4_cq*~=$tptnqLUdH&Okib5c1s97qZ##BSfTKPM%|*)EAn3 zU6@wA$B+z-In3-?On5OQXE(wNKs`FjleHbDqxok9AXpfk>)<;7s7GVqcT8eDw@+fy z-AhR@ZEV2WhJm;4b8g}nILt+L63; zKn+Ss8<*(l{N{oZ@*|?cBFS}*CQ;uncgvJ|J*DxaDvAJAG#|Wo`Jx2l5=#J*> zWb2;TbYxas9Y4=>Q;@xf152xM2BR)prCwV`aU;5-1{j9kaHOjvc;;dHQk2Qeyt(b> zaqw!nyI4R&c;M$06GYz|WR@MgR+BSt9D=UWa@x&)4UCiwzg2MaH;?RJT*1(1iw;G- z^#=R0_Q;akjfGjYW$twT%S3M?Cqo(jaW0}IUa6;k{bq5#J6R*iOzW_v$dnj+&m9H7 zcY;`?u(t$z!C37{uk_jOGZnvVEL%(hJO-$i4D+F${F|RpXATutB|G$z+_*PNNxr1s zqGW`5)iO!NbYMkDM%cS&bmGLPB{sgWZQna#rj@;`_8eUF`i6d413YO2wnV%-0VUJ3VS_qCX)L=yZrbo495+lr80IT$f#G z^MA=tj(DZDDc_Z~mTuzvNd#OXmTC7i?MB%ic0Ql#vY)p(aN1|uEL(Dx^dG6_R2C19 zRmwfUESA?KIcSr%sk{w6=V zNMxX$){tLJJcDoD$z~O-5$ly93zg`|0U!G2SivDt?w=2~>C<@rsWx|En+Mg(@5Ug_ zMkV|nYLDCK`tU@Q1IGYLQihif0--WU|60w3-Z`<)dRNF-{k?bQIklhr5raO1-c|jy z(Rl6QHfyS(dT2M!#DOzh9$*?e3L7ibEl#;#33O221RZve^%SB%G${!1U(4N?q>TWf zkeQu)F-u`)tAdwa@_WuF(#f9xkFH&?tU}kWo`gx4G11KHEWq=x?@A%&TU*i+Q3J;X zmDv3AQO~sDozu+L&^g`)>?7(W6en~m1>Wvy+SlI)%hoj91M|p($(Swz6%K7FUCSp# zfhGs2HW{Isd)$wKFyYl;aOCDf*@AuLdf?hqg5~@e??oqUMc^s$5w%XcN!SJMKSl&3 z6k|zr=j$85#yrym(J1H)00&{;ne}X_B!gwuj1k*++vCb}v9960$>g^+7~ZvVu+h8$ zE_rzG|03@_qng~?bzhnw#i%GCYEV%`snS#uP!SQ4GU*18-a#o!f=U-L0*Z>#iPC#X z2q@AaG^Mu?nuv{(L=X^E1kN4j+GDIU#yMl{ea<@j%lY!oG2UsJ zy7l$ndNy!Y=ADHQjg74gkk#7ooPBy${WmcEox^tQ%+5>RdOKLNXb`*uGxa9}9@kbB4fLyc)r6C4}9o&CO6qlP0L_u5);v*k&D1BumNKUfOMV;@M#POplt=pDT!8JrOpjU&(_$wqhOf$B0Nq_?0z4NxRvtM=p!!=-H&rK+EG40xQn`@v(I+i zCV?HjlCd(+_+_KNw)FCqNL}*k+)JiK@Pzuwv*YSz%=L-GR+9lU?NrYIkdfDjLSx)T z%rCu^c-!@NL0t@D^>}Q#$h_w^>TM@Q5Lv{EmRblA*v@ahFYS=9^h0P^7wptPn!F8+ z3Vm5S0(~`jLUYV^@jp~@)W(d{*LS6RQ=jc{*!*?)WJmm~?_`H(UD~p5Zz^lKl+>V- z-UJ@_ORjL894iTY8(iP%L0Z`hJ)>WFJxNu-^RY*pL`OKgf@W?vBAO+vdwWK5f^zt= zfi;WzYx1c3ArIASGknhd^`=n(Gxn^sY~9xuJi;p|X`S(MlGOQlE!4P|Y!&~LgA8O4>F1NOD)Sroi@GK05``u_$^CI4Up!TU1)W7^$J-1$= zbl~@|l!VPY{#$Tz-;lMdy%H&2k9rYl-Dal(I$(L#M4IP)_v4*(<}M|^A?34DVGbo* z!Fa_NhGXv8M4ISwJsd_vV#!KR*jzl3pEFeSd5)NI zNGUj>t!!ZS!ykxA^Sk2AeR7cA)Y(oJZ%9`W3{0vKy4(PgXe|TzG7F30{C;(iy~xp3 zLLeJuWo8`iE@YS+0?aCMa2!N^nyQ;r0VTT?9N#795ieDJ+~bD2qF|p8_Tzo-Sb+g zU*J{0vBtp^WW%1{pO-mZR;>osZ49owx>qbS=qYX=JtkJ4rU@rN&2s5R&~dDZm8 zfyz`W(>0#W&IeMUOrC97|HJB3r4$*oXc4e6qU`a%{URoIR!iuw=r^D~0kwE3LjskU zIj{~(dBF$3@%#)DCC1=9lLvd~vC!dl9?*sTM$z#MA9io^@oC6C;I7NfLo-yl(!+~h zxJXEBU#SYnO0M5Yg{p+Rs#n1n?st3V0I+q6I##lsb){kD@6U26L>0Z*aJ#g+HXgJs z(Pc7)l|i$kCD|tdJeOwgKir=`XP|ZVq!$? zj>E8`hQ{~)o58*lrmP_6{|(sJlFJ`%8~<})-^dO`_Wy3M@4bjDNE0j+{nudMnO=+c z#t}evcJ|KIpBQb1k`-+jZ?YUV{|kIy*yQ7Xn>xhF%=U*opJ`$H%l8FKHjirsW}jk5 z%oYkHW4bWWEz#Rx0GqwvHt-36;pP7UQj09xARJ0f_g&3rIl>S9l}e#V!qkLf5a+?2 z0#5$1sg$PXqJeirN{4hBvUaekgfggmLI!c9D! z3~)+ooyEq-Ej2$fjwHQ~Wm&f)Zs-14?QL*=xjSnh&dkA@&Om*a0Jo~grKbJd`}}# z9gg8&A9B+7E3p^dbmA;pn%!Tt^!6gAt?1x3V$8Ke+zf~-T3m1%hCI=l0T+EgfRrxV z6ZYBQ3`4QF#Kz{(2i2t^Z#``s-BT`bjTh;=h;2S#7u6};)2l?X(CY2!<6fWXIje2r z)Pg*@3JU%6NAmCe2XaK}7yF9Ykd+fL4( zVp}@1{?ME;9ExJE;Ti?3B*D|{F^!99=jzEKRXkaq7l#mq6YWjTe2x72LS@`0Wzx6W z%B!S!y-6Y5yPkjoJ0K6)U|29k@lW=D4~O{e2j3L2!JSSq7I+;t-19}YA4JF$pUna1 zm9ecd#8mQ+Ax5Xrr^&DZC^Pla=IQJW(*f(4Aq*c74+-ZstGF88oPS2M_XE>cax)zaRn3GqT+oy9k2<8%Gne+8q;rh?7nI`ZW$`G% zo+`fo|5A#7te@}s5~d;#w$XBV>fpv66Lf%ci`B%47CF#HlsNX6L2n~xUcl=LH zj6dJ(2_fhj-p-t9Xyc+zgD84%!W?7K3Y**{T%F|m*KFtx;;Ib1l|KMxr zL)M{KFAe$pRdSU=rsnDU5WJ3h0ZsROx&Rhdu;6ejJ7@?3&+y8fY6(FZ#I1 zgQtO7SV4D-2VGUM3;a?j8TeiO&A>kg+`TI3OuulM%K^Rzw{ZuQ`WMS?c(gDR=e(%%Deh9e%tNibOXg5r)Azr#KNCA)} zI!$E?*2=#nvH*An@m~u(ahZ$Sx6E(MK)JoM$h$KD>GSc_=8{aU>$=s5*9!S8%;J4y zY+*AD<-v3{f;Giw!+(oQbxaY;9ph)E{N~Nxg9LWjHpg-q$(4DVj_a7x^0p$1lg49f zz`VP@J<#ttCBb$dX|wyY2C{3};`QAh8SEAHHkbZCB@tu6q1^p;T_pG?x{crl4XORl zJ-zf|w+9Z|5gxY{U2U6ZD!%dFaG#tzQ1b`S24*LiJ9wB2cb`Wx54z|I^v2j!-WN?L z6y(%CVa573y*YReygzu>l2`ipO9tCe)lD4dUIfV40>bw5At>Om#-1r41sHvnN_z;04K~! z^zc-_1UR+$p#66ObnyH}fKF^C;XN$+uvdvy)jH(ho)ec9?>3Te37~~xnD78{Zg`;c zii1VAyLpmSgB7F}LO;awu?x19Wj^F&vb0dZAt0n(!4e36z}hsdsMGi7KfuYkQcTIE zo2V3Totq($1){-lBQ+8_7NW!5+q$`3&4~<*6!ZbIK*&J+1ZP_~w)}7>zb1>5B_wyA zjqZl3MhLZ>1FRPs0uSd-;ZVEh6Ir1)9#e=h^0zN3hS| z50(K5q^U)uA5gNtQZ5%&Icvi<>YMZOn-qx+9M5db9k{K~nwE18$rORUHQ)9t4n|WG zyhWen#PyvZOSB6|fUu-T8^Ibc>aRdTMB82Ta;8l+!8e;@)Tk!uO&q|DZTEYgWTw9F z{uZU{7R6HkbGkiBn%|9KY3VRtdxpG9cAj1yHkgVv2W9RZnS8#=j+?xO?P z;Pf)veB0Akp8**Vo~Rx2iXZ7IQPVjWxVwJ#WnLqZkhV77H=>y!J2E8*;q*{ebLHP; zO&V|_uYJ3V`_p37qKU3pZaR);7V&wuK0HC94?7N%2p^RL46zdW4ytG9e73l6j`<_EsJO{o*7t2Qy z#U4aPqCKAT5WX4ir!t|aWYm*63u25ZvC5vK5)Sv4GNxtA8lE?zwU!z{o8WP0hpC4Q zEV`8Rz^}z{yRg3GJt zmV0uAuRyfS4hbFZ;F;Gg!+8(;R$%Pk#y6qjmS0`1Lv&1*4Jb80G_wIU^06l;{%-Q$ zrnDxa<7VK?ocLJgaUx|o2Z`EHF^cs3K0-Qp9xZbLh#tdz{m&z$h={(ALU!8x7W(n! zmg8UH>O^zyE8IGmzBf98=+br`swA#NYpIyKz!xFrg@y4=vT|0BC=Qgrk5;>wf!Pt( zJkGT_@eG+!%E#Jahv-|vi!!rht5@svT6;+vG~!8iZ>2w1W@>4;P6DZ_N#CB#xb&k( zm)FMlR<(f(t*_Ye95UJ_(C|?U|4wMzreRx4TKe^rDm7RWdc%kYSx<-;Y<*p!^5gum zZvFJT8bFz@Wx!EA+L;Hu+a?cw@J&pr29 z^LX!pntIP))N&ioF?DO{S3&I?OZDo0PHhz+lfRg#z1Aie5UjZxIb8R({dMr?f0l!I zpG+s+$3deG?y;z{*s$)e?{ZnuS5w^v?Kz+dK-A^0rloR zxz_^w>g3DdRNZ{gCtTs%OEzj^s`K>Bu6Rqa;BF3Su;QzZgKx2fc5^bbt88gVp96PZ zmb&pQ4~iI|0XYFIEvP17E6sY4T(;OvN7o6{pMd}Ta?swoxvv< zv|4PLM=|E2KZkUMeeQW#^G%8Pivx(sj-@z&fAKb#er14*tKk0$1*(pYLOT4<*z8bjTj&gcdrUB*o~WmX{%8grHZB!S}F%NQk@C z@1gukxv2_*vDQAhsTsYVmi-@lHv4J<>VPlG?*NT-FViN@(@tTOc>^M&w00H7tO%=- z#~Ml~-#G2sBu(-1hRL#M2Bz}J7Gk)C_Ec;f?$p($jJ?v(`{R=&-2oOC2{ajZ`RYc$ z5?b=Evn1GBoXIi2rVUJp^!6gnb+iZ-u++e%99o28AN053cW`&P=3Y*3&Uf=p5M|LH zL%hFN{A4Q8d%GL+-E&PdEf4reHldO&B+O-#>)z<)`MiCC%*i0+ly0=i7$Ajl1cMYF zV7Xf?weMPK!n}v!Mro%;Olsv=Y$<(M1jh8XwU&33Q$uZCv)(29y?2r@BN(fVBVQJwR>Ap zX-o3T(J)jOi#tk$6{$r-RHYcqnbH?|ykL<>eAz!(xCdu!sExm^-wApeYo9rF=VO1v zK3s-14;kvUJ|2Dg5!*1gME!g;76y>-W*>op4J(4gv~g~TkvbWA%h@$*evQ4t`$}ZV%quQ-7|pzcD03^hkMm!73EDJA`7$uNR6OoXTt7@(o52 zkXd^(l33c*Pd)|x>~4@0FwEp++={3Yu7eZ3&oia*g+Z=C`xX1)NEd(rfJxj6ckO$i zrSs1Fgyo|JpwPp3`|o+@0sGmcDlu}*m2rrfc3F0r|7U))Y6n7IaM@VnFTS~;`QsPO z+YOp%aJecN@<4j1{eKeQ49N~)RQ;Fu<|`_V`Z(Lj3hY!Bj~F57kKW6e* zO<3ZwUe!uE_j^9C`X`N7&ZNp8aAXx7xNt)Sk&qsD;~UNl(aw5n-j8A2-!Ie$=doy?Af=?J$>7Ik9zip`U&ba!$boGU6Vk5;y((p&_5?JlGuwB)VhmATP(N}<-Z{o$ zcmkbA?*=flYc$Y~6qM~d3X10xh*I{v9JlOXCVxBGj<9OUMIV3KhFcOvs3e|7_c^UZuSZ8jsz58}YT>?C|f+ z?)X=};(M;mjoFsXhwrof^X~IpLOFDe5r!%sU5OrgQQ8s}&#G0}U@0>gobbD{rQQ(i zid>cbT)#-y)tkcy!1exXi%Ei4U|;#DSpaUk?fT-2DLP`-rY^|5XMq|AY0=uQ;F8)* z&yiP;aq=RAmHKwwXJ@7}ax_$54v~$mT?RDJCl9bu`-*bXoM5^sO#%p;2Kx9z(R4uO zC`0c?8j^n~YC<^8aGhYXg-YVOrxQ!5IpD$^yJ?U;NE-%{`E0+AUr#y3rxP``LybK@K#XUN*ZFao>Q&V zwSl0)!>oirNMHf622Rixr>)MTf9SF+GOpGL+qJ#aRx8)cE`3eE_vRRQzSz-U!fuIW z@bSChmv*%pqcff3Fvt=_bd-awwLrNEBr!@H0i71nvCnxORoqfQ%QCQ-x|VP8O<$TM ze4#^n+EDJPUHFe)gVO_$VFz;V3F%8b0|;SDxi`lK9oXRrez8wUXy^;9vWmS1F2kzz zkhrJI35`ObDRcL-rwsagY;RR3M2AX%kjga&tJ&Z;3apTfODA?oGmMqVmy1*t?!545 zK&%a#a&!&i$n-ZMg99*y;nxM+yUa zDbb`5dSjcTpfbA5N*My6j@Ab0aO1gC+BY}1Anzk7w`GpygaTW;o-dTUI-GxYS*8&M zol=6TBrj#1Jjdylst>BO0%t_qntP)1O!%xgUj8wQb)X3ag`NDR+`u*NA0 zMs1dwSg&4A! z&FJ#V;-OGf(6=oSTF?f~n}N)`4XmjtXTE#+Q6sQxu0!%j}4WJ zX@thWhx^rM*wS5?u`)bZazTw@HQ#v6e<>a(YI9AM`7-K_w{BQm02rqzK zw$L%a)H;osj_V?J2jB#$x3!gu4j=qTk`1WM8S6h8c|p26r8Da0XWqBX78URHPyzqA zjZ95m`K+2~<|?UVUf0}z(&ps+?GOAVx8B;m_l_rI*+gT{)e6(I0jYHy7%$ko!j?Pg zFv7npVK+^Nuqzpgs>h3j>61C~zklMlpWV>cmKmwq+}ZI8i$&H4g_&6q`c-Oz!YwH8 zulsc8GF{`=uZ?ZoUJv}_n%ZA1YES54SKy$tp)M};DQ4Uz2&O@KH2!59t%nOE_2_IH zq+iNGP6y8%AoXYk1*Xl^lQMe-%^bEl;>f&3jyPn&zG_+96!KU6Ul~c-+h&RIC5V3Z zm?6+&p!^n?%`YKH1S8RahdFFcQltlUoV-_s(=tur|ND+C(2_78I(nbLYRjP*iQ2z?)R=qZ6M8>y|5DWE=0dqeZ&3l?(E(eR8&6B*XzF4VHay1+ue_NomLeXJ-B3 zaO_t0jJ7gZ`>+^a8}Y5MOam+UATo4ge;%~K>Gp`h(GaNLTmy*d)To^9vwPsieRyB~ z`D~(iHNsWqyo7>Kiz34bO8k^kA#@_==68o;V2RHrrTq5x5rXj!mv$x(C+eymxTko3hPJatTd_e&tXIG!DQwm zxkT{KqY5Fm*eAw004p0*uXD~R4?BDTS`PLiFq>MAR_}pi(5Mknf|I^Os&C628~rnD zH-M-l-n~@gAL2oC*k^_NOXo+&;iDvOo zpKh}zlMtS}-9U4I%I&gmbYf!SNMvdAJL5-?Fv#J-{@G$$|H)jOcr!qmaT=q&lyvHU zXh{+F|4wjywi=B-cN^)`*y7XXdA=4x^5d9>qRh_T#`YnHr*Kb|lKHVydd8qy@&w~j z%DXNBQQRP&A&cI>JHN&FwW4~*ez`E%osQj!|E1>9cKErGL>*R^fS&JC-OW^j(pi9sPF5z_yZ$ZK${wY&f0Nt6!^Ut#|lni?MrN}ve zdE>R*r2#4I5V7x>fq%*KHx?Gr}%q{K9E6kV2vpTBS+;=FebyT0SJHUxua~nu7nC5sP7O4H_vYp=VrML zNz)M3l?Rg!(D2*s%0Yz7PPk~Q;%3ebm9}mJCxIcP#ZGmHzF7DYq|A;R4?p^`Lk}J8 zh=d>GpKkSa>3TKXuTp<+JGkkxAl@g0kAXi+Bpdt=p;)fjL0PmrTvXExJj~hP5}_Lp zRW)t}KyxVed#wns!qvQ{8;!3h(H{C>@t*tg3Xfx)-E4dE<%fI7*O!c*KhMnGwRbw2 zS)n_nNb4pmH~u(UD=x`QelK~kt7OtnzVn}#zJJidNZg+oN~j~e^>UbD{#GC&yh5=hueVZ1Z1C7v z`pTUlkW3iflSBmj7FW2&71GV1^LRY$m)G^Zl4Rz3uv)E354>)yqnS zt}QDI57D5xl}{1FQ?vff-R2i^nz+f~hSVfr)S)_Z~5V zZ!Xfug`4h|dmpK^%GF@P`y@sKEGKHa!4h9>Ff@X7kToyz{WF^4Z)-O_)>iWSyH1cu z@M%tLC%8`}ZSh|+=OqEsP@u(%T0^-ew{#&dvZm~9(P1_eCl1VaeBUt3$cJ}~^&Uj= zl#oEZ&z=vU37I`Aup8xdLH2vU9kMqYfPPj$kH$LQU2XuQ4-E?~^mc@TAQ9@S z+37&!4sBs&NZEQ#@LFu&fN1p>4$jGfgH!)k;NaFTW-jTY@A?rl<``dldr2L8%?L;A{`F6oVECd|{rBDM>RZrk>SmS##5i9(4jwsxMk}0Y{@^^3R z0X^V56}-t{Q(8&|!Un9+9}MasJAz0EJMsHf+g>j_5E3jzE=*3Q&f!rEw@ojM_p*%%1-CoQ-*GbT$rXYqW}5Ur0tm zdo)ZxAK8S^ytoA6c`*@Osq$r2S(69;S|OiM!GP608lo7}y~J*f%G&(hzeal+*w8I6LE^GZcD7>)njQ zSm)d4riz`3V;qGI6x@eHcd>p%Y&7a7M8A=%XC5-0H5tRi63HPXG-y!LLDcd@F$FPmv~FdPQ5T zz}%EQS+Uho;l4ebjb(adII!jL1Lown?1Szk1D$9T=tpPdN3rFdoV0Y|=rb(q8K7-r z>e(@~#lsHRV*tdb!Kw?4oVz&GwE{lf*Mce}MmrGR-4vqk?x(~!=nhZC_zIwb0*2|O z!VU=0hwD{5P=|;kxX~hUaLwVUJnW{e`!$Ny&D4oP&I&;F*kV((;&rvx#wwA*AF)3I zQ)PP4BGzTX*VT1#4M=0(=wFer6#}mNnFw1|3w;|HR=Ip2eOrO430;ss3c~?>+|ZUi z<>4$Wn|i{UiJ@y=1!!I|=OZ-Y#`@sNDDJk0c~5FhIn){E{p03LV~3vmU4?rx+~HR> z=^kw$Bubn8c(NDgG&(}#VgW;=WxM3AM4OS==I#l!@Di6I-*~UTwiT=H4QAbA$4+#vMB$@WD=vR64R3m+CBe9*v;&@h|)ozna#) zxRp-RotGb-59teDZ}Ey&KTE51&`$mRBZ_|3wchnfZ_L{D_tJ@N9u;S9%tX<>g*tE2 z7U}<-4g9rorco{X*{j;$l~ddQ9Cs0uIEOZgsa~}e7){zr{q^S-s7H+`@5DV+qZh!M zqr zH0VjHJAM7VcMl=x8^s$__3P!f_FoPO>jHBIAxCGYP5$A;%-9o{hkmP0ry~WspoSHE znG+=g*ZX=bwlkkpIZHOh-IWQ$aoOF0E*Ite)~2ej@N%Gr>?16TxHHGJ0WPa2fL`rH ze@fX@TKhS<;6L#Vj^KrB!;`?WOSNx?rPWC|TA-XL$`rHW(y?;{vic%ZPKLsRU7j_p>1aO4GB1+bn>M_Uba~A=v&{U=wh%|>H&D}H& zd$_eg%QZ(4rFd_K)u|}NGLRUBw*NA@YdIX-z4EILL0{&^z$J{rJP3je1#X!b(_?^r zFKzB`$_(tBWdcPVi;=X%ZFM2AF)H8tj$koOX=*tL-DiHC=+|fnIV%BECmvAH#}a0B zhn?)7;{hjg&Eb1iJ_~ya05%?=a@q|YvW#-qxNnXBk`(WLnaGs6RzwlsgDX#Sj2C{P z#B)jVYpMX8mH08a6b>j>Ym?u>OGGrpJf5cyA1RhWSEcXShMsnWpIsM>g5#ljvgnE> zZDorZ7Zz@9u#B>3&idu`1X1C7;iG1lWFTZi!9^4QVdB6)$oLiwv;y5xSPP@wcVk}% z;tBBUfyD7148w<^Q{A6|a)jO%`Z1y0{x)K`v#T1W4I=Q9U@nkaAGEhlo;ccC23N|& z4vr#|GFLzzU68*BX20P>@5`R;#hx^FJ=YS(Q9i)OYIJQXqZD7)2WNp9c>Ap;FGJ}^ z?XA&tQw0W;F^Cff;(+35YOurW&E|T_uU#9Udl;v7%&x5yWjiNE zqA@H;%$LmJ&1*fI{pt=DzU$$Qy<~^6>4L*!XU1y(ARD_KL%x2(m(*;ig5GX-gVHL(tS-&IuBbr#da^^_A2Esvf5YGfPg$?aI8hM`} z3qcI9zFbsE81;i*oDlyBrQuM5McdNqqF0=4kJ`p5Pmx;Y;US4D6B*5Wiwctg0t*={ zXhP%5W37}jjwAUw>^|}CJPQ_Y%^ch>k_}Q3G#C`I_ zx@2ot%}Zhc|0SCE#v@xezj3^W4Smj4rFPbMCs7kye6%459OVsluOY&1n9jcdB`a=w z1<3K2ZQ!HFA-iQ7i36pd1<>(!wAqT~((OdV>{iykGRW&l%V%R`sWe|rY?q2!qvDnJ z3bkf^6hI^4@P%n9%Vc$`|1EoZSaKIzc_Kqct!Tg=dP{GcvvwR2PBG!O~lKfQs|5rcYO3IXMWc}DN>Dv_Or`HZZuIWj<6>U$=uttRO2@64pnb0;wi-f z=wyg%BA{VGU)Nuv>ca(OJh%o&zu(gFC{9D_Ux~)L6j5&6chXu*h4Uc=G9(|R2Nf8m zsc=}-e#Y;Z9CZ+hGXu`07UX;h@ueXN_Aml~X=mjE)rrDq=da2QeQp9IM>(XsM6Rfe zRd)Wqwiow*6{U5{4L(SMCRz*JAN$scOAnyG-7{oIK-ed)(J5kcb2+6kiUQWh(@%WQ zNpEk~OhNd*gJxCf1{B0~PH**?JCPSI-eB;|+4ZYMz+9RR(p=X~QUx@HFWbo*7hwi~ zXaYqsjp0dBj=Pm;lOl@CYl-4n0J33Zwq9wA=9;P31dP97hqgyPuO9#U)Ecka#ZgJg z2y5Z&jS&_s_8=)&R6dd01Ke~Oec?mNU`5|pIBk*9s{$n!UYFtqwmd9t;h@3QNt$$C z01~0mXZ&md&O+(Glx}N1b#V{NWSNGPEiA9}a2_#2S#P5GPi%+R#Xh5m3dn^qW!d*Y zgMV-n>LUAj0o&O+;m7mM5Wl7TnLY&Z;_nwXAWh#VIlI;sHkT2LU>w}1xC?trwF2_7 zT=a4{rG*lm!0!f?-b)+(>CTI6I7)3D-MnUNYzW(|Re4g{Q5>lv`2W{7-DzGLLY z3q2nq&_tD&Nz=V)ae|}BF@*XxCS+F8tu4oSEg`_1@$*WTSIXt#_85T~)j#3K?v1&B9;;4W z`C|NJxLy;B@Wx~{ZCrga=(3mDEH z-JO-m_H8CIV%LMol+#NUm_*zqoKD&) z_3#-2KRaI~)A9^C22FweCyIo$*OZN~RQp{Hf= zNWiW_mrLHBZrTk7ss!M=e-X5efT(5<#_3JgNBL5}N?qC8pn!G{{LodH&c+e==PEF8 zykwf%khO(#D3 z4ur$K@V#c>4f9Ror1qu%1H_KMe@EHSKVJ6@@eyCm@J67SRbciz6@t*3lLg#*u&reX zN)Ot1QDC6iB3PukS#C$TwZrz=kp0twi0~Si3PD5AZgu*?*=!t`A`h{lWdt!Y#K46< zV-5;*NJ@37ukMH!WrOVVxZ!!#&Kq1{?Rf#5d@gLw*K5$0Vr^Ta)l)Tl z66su_FH2n>f3pw>UCa+bD2%^(xq6nE-{SDJ?MA7dkT6Li?I7~^VjLU2^KrDMEk2tT zi#3A8wD41~0$c0|7at$PItazz2rF%d{7TEwXk&d@BWIS9{~U|D9uuAn|*=1e^4 ze+M`|ShJzKGfu~(yBekARV}Uaels#r>C}<8DOZ+YZ}|3diMshW5}-&wmWX3)$!FpA zc<&QV+&1DPg6??&E|K{;yTGMQnu~{9o!#(Lcevr@HHotxe9bX#+M&VMcK0tmtGg#$ zsku#WYb&oU>)w&@e&uCuJk;Hp*&As)?!sv6Fj050yVq*B0vEKY>smgWk&aDNt+eUxgTD(8>nBF6D zTh4jtl7sv`xH)8yW4q5!*Dr^TB+P$L*z~Hv=ssld8rOs9Wfdn+>G%>k-NAY z$C2CbDlqdUa=$E!=NC(}DguC*$lmBSGFxUhGRxaw@Ow#$6OpN^2kHh`vPKS>MVIbw zzIw3$ZZR2el`fXE&B8s9Vs-Q$i~31>J9(G`x7<0YboW9SEG4FtNnOPT>&$7p`_(xo ze`g;MyZLdGr4z-IMQrS#^3MvW-hS+iESIx&;X9gE;|ynYB;vzRgFzg}hk;P@eeLOo zuX3!?5IJ@#uSyos&fsz$JsAvEVg@S93py)Dfaucg_3X(tI?Oj`$^I`b$= z#hdDDpiCWozYcs}yeQpapk0iZJC>?s1*dNgtg>pU1MR6rZsuyBE|>r5B@X(`aB>!< z5q0&>A(T~{lD|NLE0lx0xi}4>`^1~7lbnDhVz5_s!k8UwMWFOfaySc7X^_(Y#%&z>WcjrSrCZW zu$5eJ0C#!J;z~CP$_~W5*azesxYGN!66Gnz#X-sav#=BO1ysl2Zt}sdHtH$Zh`!qY z%sRJ2^fm8?7`e4tCg)4k@9?wh_KHT`mCTaM@5??Fu8(-*9$z1Jf5q5;`#d;O*5?Xu zvUd5VFPGU-qZ0)%Yrm(P{I@d71>U1!*t0rZpo1ZK&_Vq-%@IHLe$BVT+v+pv!1|2# z+P#i~?h;Dp!{w8*f9Vg4SM_3#1Xu@PxV@ye!hRw~S8N<%WxW07F+O8fW;>g>c4u7=Up4 zq?rcMbKnnAB?@~#nMniwVOrD=7Q&i!GKQ2p5bk3w!1H_@wE53_lHjTgcvSV8gaKFN zob$+3!vO~(;?%A3{dPv@5?;YOaw@#s$L?2yc$54w@yeTW6&T+ndoVr48uF310=ahP z!CO-vX0Lh)mrvXIvu})>%E)XOJfQgY0NNgaO=&hbAkN2M8fS}6gT6kjsY8Tn*T+V} zjqZ|g6iUr;$TuG@w--8;(g@wcahTJG2#SUeh1C{PtymSs~k&5h2|GPwaqgeV2+REqKu4+GO_{NNXJckqq(-K=@E*O8k1S}Muf z72K*9;olvj=QkVwDYmeUhRaqgxC!zoWg-F`{ukpG&zUZmL}ZJ?A9UVn~hO(mv{K6o3yPa56yDUc-+)M#S-@%+PJiyS$)ldp|GeQ7~z#`-C=}$CvxS7V;dXp z{VNHb_d%;(ECfqF92^em%CPFEuTuE?L4*?q*Y+1FeHj3;Und^Bino@$An&JQayb0O z{PnVv$4a2=CwzVS&1D(>4~XnCEYJrdy!Imj z!gg?aUL+d4R)n)YZ9XKs!x)b%`SUwKinIRbxJH|rf+%MC3>0qsD-pp5_y)La?|5L{ zSTo?Drt^6U61#Ou(gJB4;}eOs?_%8>qga5(Osjr2a>Z_=0g(C z+J1iXbQ0W9qQ+nSBnAzEku`T6VPhjR=RNwDKZ z{ye3GVtNCIj0O|ySrHQ5)I?hJ141Pnw55EC2b+H?iysdoJUAJ7vY|WKZd)qHc|E)i z_dm+4AAsDwu0&$H#9?HBv$AtFVUDjohHAC|5Foc!8|1aVOS2C;&_^C}{RMK$h=l`N z*_LBTc6&M-2ogI-8}-~aM^1Xf25?*+DyN>Sh-jx-!diXT9&TBGTkF=VSrR2_5O9w6 zZTpby?fD+qNu&H`J`;8-JIzQ9k`tUCY^K)8GU&?)Dtj`J6-BQn!k-*_d~3Z2`@7Yt z{cOFZkx5FO0^_86OD!$jj0-;6(}+ft>9WU37$*Q7I29`u^&)`YfFM7+8LQub1QIgn zD%O%}W6ci>X8wGYMI%#x^f!Ba-pZIcj|aHPiMab@m%Y%)`8id}5I>`)yXb0d8{HBi z3^|KRN)pN&W?PvZN*G)oQMmk5BeHvWV9T5gNbL56&N47ACs%y{^+7pzY%n;C&r7Rk z8;%gM!T>?GS^(U2srM~q3Ytjtnb>D5$L_S6>q!WobcEXSfyztHCOucn`@da$^|=hf zv&!ta#HwB`EU*^WE!U1f1}a3p2#j~(sLr6?8fuJ8Q)%#scx^+(2bYe&hSa!p;VdS3g_U_o3C=seZgD$ zsG|rt( zgE?}hYKMW?AT(P*CXt;9Le|tJ)`NlWLZ1&Af^-$=7lX@~PXk?Ndq|$S>cJa!%c{y1 zbRXLD?l{h4W*E3C;;%$#Ua!!S6|S<-Lzgkw=HM0z@;f^%Nxb5^Wuy@K=rNyJlH4?W zzA*CZN5Lw!dv{GTz~%Y3w8-zRv3I@GO{6r5kHT2tMjR%7Q6bm$RQzt?BVvP7Fc#t$ z4n<<0azZcO_qTII@FlrIkJDhrKJ~1xc7!+6_amMfbJG+s+PX*Qh)rCBZ!N&`1UAuL z_EJ^pOvTwF9d`yNm(25f^@t@D39^EHI zQ^W}=q~y43zYt)onl6J4$4NIR1q(Mm!jElf2p1Mp#71iCXy0JR{aEP#3&mAxUAs@1 z`|pM4>;IqN`Olxek3PFVuqX^k-5(Tq{t_4NTRtbcQ2uhPqd7}dI&(UNsky{c@-vZz zV}zEjJM0C}yX7QrU@ajmZ>Az7z*`fjUr4-bpKFEN0>eKXTzaz?7O$AdhXXXlE_eoq z#T?or-hW3#KoHyz=>!atleml0F>k1JI69)N#%pBOob`d-1$f?lWC}#b+0YQE{Ptz% zXyih7OsUio_sR7(WZZ^r;7XdsKU{xP##>lDP0->FH`nJBE`Aswlj#sxJ3w>COg{m_ z#Qg*$S5f8#AUR{EQJmNkENE3n(c2jN?Hjsx7Cw_q_@0gw4HTfgY1WmL=Gh0(#lCfvb^7i_yy0ll#=iXgjl~cW+ynp(vM)?Oe&drF;S=^=!Pb&L-In^`r zdbwj82dfTL0U+Z0qe~E?+L-Ez^#t~c0X`f${=KG5V+(t$Q-9|)5FUi6w2t?wNThkYa z2(scW=W>>aq3A+b4uEhM3$RJZxm>iniMl+wv`9oK(Xfeku_sRM{ljw9C*hJ=j~nyz zo8=7`I0-=r3Yy_g1RSrRJH>-q$?5(@CLV&!fZD_s>qj5`urBclvLX(=)Y(U@e&Tz& zY{EHz0dRC5gQ<+L?h}w}>i#aWOR>6}jc8C#pLw|375JG#@lyEP2J{CV@i7tS(0wHk z+#?xAWZ$%|hT_tuky00k`-@ShI`anen%-H!fesdp^eRz1S9aK7?Fe=J+(L5sKw}%} zD-(=PwR+7k)MiSv-cu$9{)g^Vf#J`z##?lcV2O*kDk&NL7x|y4a^iaYLlb&Txg1Au zKETn2hwe8>jYt}KK!6V&(f2}YO?c!H32f5D+^GzqRww-s1%65y6y{>z&1M-R$uT&6 zwZ~iN&p-lPaNZl*@pJ6{i12cK*_QM$kqxlehK;KU~s_8l+)t)*6#BH#3Aqj zPF%0K<<5K4J#iz}CDYmUbOrrktL_Wo0%9PWe<)V1eCg+>$F{K#*KaeHf}?H*K`5xzw>dgatbx3<;&nWju$U=Dy*YOhU>`&(w&Kv1l};C2j!ffImeAPqR- zJPP~iZt@nW8a7a3Nu|9pJpO(^&7s=3IhnT{x&_kOyT)JxaBvvuJ0B{+?qS1@<~tSE z`wL=bbN2~YlbmeU%s>Xc9L&k|@zl}XnMO$5`i*$WsHO?i!^fX!ESrqIlq-9!yy2<1 zg%Y^Quoyik2w09joSn60R|N(!+9wXViM+Iq{Jm9uWw3+#Vlg+VT~5byBAs(Tr@`lM zna9o`-WqT^j)xZ;KLTO2Q45SM+qhR|3efwPA(c@pz2^$y|2xH-6GX-Vu zFicul)QZDEX8u&MiqJ%}+;judhRaz#;u?J3vfgQgG8lkyV4q*?=+1evP!{F!zy%&! zISlNT=*>Fj%f+Ycrn9IG-4bKZKF2&B3?oe4`~`Jar{qqrb|~?je1F(3cP zTgT_Np($Ox24?J|utaq@NSNytHD~PAQX0kHdgD0&o}9Aprx@tn!(Nn0hTFve z9Jg}TM?y}yP4AnRTiyH^79JCvA@rY$xH+lEt&WCbHynVio5WQ_9%)2fvAiaxG)i4j z1AmZ?%O2v=@1gB`{hp~+Y#mjtRafZ9$}T?SjUhJ#Z_@wn0h_lvt84{i->i&HNKbz6 z(!BD1K|kE@{2lZ0g##<~^akT+rAtzeX)m zIs1Q*_vYbH_W$3oB@vpkr%cH%gGviCg;GgrB4S3i!B|=>X~t5vkR+0|FqZ60jG+?B zp6q2AV^4}QV{1WCp7->9p8NjY&p*F^pXa`h<2tUx)fLV;&-3$MUhmiI^&Y(zLix3k z{ljia*MliS=7hSK>XBiN%ca> zI4z9HNh@vwe6Og%!9smv)iDUBIkE^8Rw8Ntml>M%w?yEWZYWuuZ@P6p4#IFuVP~j& z)rs8Do3^EC7dC-w2-3m;7(5Cn=DU#>NwcL<$-C9-ZYCniPhYgO_r|4s(TDXZk%)d zq6?S_$f*i9*R;~&-^^o31QCv#I@^eEhNh=j)W|ae3;>uGJ>f>$E1!CYeI?p%*M*As zGoK=LS<{${%tWrzE_DfGF1iestu1c}>=7xpwh9uSdTD}j2cXU2APyu}Eq@DomTty! ztl{u3(q?CzRgW61zd9*s{~xu%N-7Toe5A2B(tNF+50~Ew?3ja5dBVVC({g-5fc>C- zKz*q>@`^iajxZXl?@?5E;{}KG*i7geCeb;z8GHqk2DNl0LCYDMcGw;n){GL_`S;O=P+|IBrV za^2=VYfqUBb+X}{oTP-Y`d%26WpTsy?g&trxbG)03BOa%M=*14rlC=PtX||-8XZg` z8b%?VRr^&P0pM@EE>Im)+PLRZFe%4#&f4=-r7Gr{04rD03Ae12He(ShD$R2-1DxeZa068VWQsNuek~t#<6w5_XK> zypWXJ;9K=$m&?9<^?*e(SD~XQ^?6Iw8t^3omdHxPh!Ge9qRnX%7{r zoC&fUO+z?G2zd2bPG28L@E0|I{4Bi4(cc`H9l(P^4%vJO+|yx4x$}#^V5#mj!-hCqOR{6H2mxHjRYaxG9I$ zwG_mH^WJXox(MR8^J2f<_>k6G@A+K^SUy|WsDHb{fsCIYOp&2x!)jYUyc%x0UkB&1 z&c(XwAIUAEIkddM&SP!J$d}5)|1sI``147V?Ka%dE%vfU`S?1KyZXrCZ_(LZD?i_U zEUtBo?P^@AEsU5Aa@=yb0X@HR>OnIkihSgcJ1rUki)ukH2qWP1tP6fbHxYNA;dc2v z!zF{@VA*-Idz_n^`3&g+*G#3bM}Uc55O7aeKfr0tbi*zOrm2(ojOI$)ug7dt(ro!rl{wk-Nx-NK`NkKcG*8dQRRD4t(Xgy_wHG`l3Yy};n`fBx1Nrt6nLYl30zUt(K5B|b^6L=qD&V&z z(#yd*da&r&=ha=RLZ7gpY!)dHW0@be=$%h8h7k3gE)ZW0>vamUt1O!@I-YcGc{2Zo zXEt#;X#r($e4*P zC~&+z%wD(}+qs{OP6U+jltHC^563zNN51jA84!yIqjME`r40^nFK=`)6s5a9;K&LrDvmR(vI}n(CL_rT;6Uxt zfj)te)G%`60S7E!S4g1MNLZiP@fCPKTH8`a`M|2-s5idj68UavgJ7>TXWg6|XM``30!iM|XR-VJ#d8+!?TB7^uO5 z?_!oRC@}kCm}hhLtm8ql+Kwwlo)`l2xf3kj)H0%mZEvSjDNNG(165oj#NrM z@ycd8QaQcyu=MKpsM4T6tec&CRWi;NaYp!v80=?45{hfaOz%98Y!8po+7N;JBx4P8qrGTGG6|&HWVDOy<#x1uc;Gf$I6q=54># zC@nkFVKe{R?fhplDdkH)4xea4fINDTWa|P9R0wx~5Qpx)LkZ>b>7WAuo*5Giv?@?m zgVh_0#yC~om3FEcvB%nd6z**!;;{o6>As*+;LA%ji-NKIl~(F4cCE<|Dpmtx?i9j zvBz1wQ&33JJ)-Q!<>xFK6)3eN^&~JQOah;3^FEOg?mkug@$p-8|rGhDwoXCXUL2m(lnylXz#4Us9kZQD#j>?ioJC6ev76`lql zXL-oQGHErrNNlt(=d?JNCeJh<=i8w9^!htcF{lGQlsdENsM-~O&8qJ=%PsV(s(CO2 zUAzADm>O7)QVz4tlTD)faS_Dsq$>`5k$gDNIqtTpkK1ZjHI%U$7D0YuS`RNYM+pby zlxJDC)wkat6T?L;Tpxs@zy087`xo%m7h#mSaQw6Lxfl=e%2uc<17G}3b<7zc*_6j9 zk#L}?;N;K*peA>>!5F~%?T$O8t3yfY4>Lw?e&`rKSpUzd|9>tcpL=wKntenX*FyK` z@#(uX=EK}HU$a0Hb4UMyf63@x?LYUO{p)TcV+8$ly26L;)93bL-n9DYFT2~_@$y)k z%d(w~=hfbMHK`s}fc1!Phsiaq`GEf9Z?^q)nv2{4LmcoJ*~|Wc!(Pt#{^j@4<@IZz zDo&gnaKM9>!1f_<$6)}o6X03-GTWAnj@i+L`I1wmP|6*@o%D1ID1=3M=2kN7aEKU1Wut>@F;p@L7=Ybjun=%F1{~!9=5a=*;(xFN{M0OQ8)mf|W8!!) zg5!pf5hUREuiIDx49evL20`PLh%~pB+pRr~-xgPWjfo2|0aE=LkBh!Yx`TYZ>XL}l z@Z)qE9}vkKe5XXY;q?czV&KS~Tpe(sA$C`N3MRI|+i|8MMKtK)@#zDX?*nk^jpR(y z?4hrRbEI+0Rdi3X1O=1r2AUJWWFz`nB@HlDu!*SfJ~S5%tbnxaee5QaljjtZ!nLX( zAdjV_@&f<_N9qW*@jm8`z^v27krc_Gho`%NCChY!M%9_MST}cBT9<+oTym4JGDVw;#iRm{l0_ALch!CmLkfpsV!Z zBDYB{dEww~Sh0s0HGeU=Umq@impvs8wq3M>x&JvZk*nWcQixPe7LU|NYV5ykC`fJm zTcP%hC6fXRw>2&}48pyE#0Db+dqcu5W6il&*Aj3Y~W&z#b_J%Uz;uRI%e z9@q?P#VEVZ#oM}HTMhW92~aS)?zjJM{=k0)ZEz7MO@d&f;mprwI{0YZ3MM<3yqwvh zgL0d?0x-3+r=wgnXIc-~{Ok95^GDy%ygzKl(kPx&ZvWw4M9j9=jG5BsFw`}`>>LrP zaNJk$;fkTKhu@dmhbe2JHxcPSSFk|*Y=ycS#yS1EotyBwWgPT5hj@AXG z`?R3eqmESXx#gQNwO?ziEXP(nL1R#1^(1xYjLzRTK`-ora$P>3vwJ?iDz*AEG$O;d zH()@cX03i#?P6bs9jfH`wC!>2ADc#rhgQAN$+L+rfYxwLUA~ zknd^bq9!fUD`@sFgXI(S@?{{-RlP1>D)$RWcA;Uoxjt=G(x zsJX&WwB;zs{Q=Y?;j-TJD&9(#u4$NhlLum2X5>pbSS6{lVW>V5-G^#ml;1!L>KqexmnaHwBJx=2rs9Ncu^VGC@5~_n9^&kvp36AX`-yKipX1Tt| zGx}4b(MkZ)9Kmf5@|kNZLTbUeIUt=Qke&Kw`%3aGrqT6N;4qd4)3RYcg?_>`wJH2>e(yGQ4}mqC?wh6*$r5TbSowrC`ANR+S9p8i2EATe&fES^UA9!VrUYFB?enkhx*(5-Jk0-WZLvn?m>8cElsC9gs3zcjdR&mMhVwcO?B3uB^$qbdjg_`Nm~x@B-@!D3n1tkmU7^ne z=2Y}SUGt^Z0)07YZ}+C!q`+iFZkr)cM4iowhh=9!b5E!qWQPs*l!zrG&kU*?RCe|W zjx4?de~H2~)XFfoL+sO09UtFtkafRm#O|F8uV*-&>aHQ!F%9)3^2S&R$WN?*;_{H_ zGN(eqDICWLO~!R-c0*T_a-#>#Za09BUaoOQgw3=JtWB@RMufMKY90y5vlO6(u zK7ki=&9@{|DnzgR^{X#}_Ya8lS{hi#y|XLB58;9SDl&SPRbG=T2=+SdW7yQHXOWy8 zKpYx>lcmGO4Rat{&P_rp@?fNhGz1~b2God5GO|{|#jAu1XpsUV@2Msc{S7qGE~0)G zHtoUpvWR%nna|f@pIL7v_Q6PropDTh6>_JRBa0&xf}r*-{_lUkGH)!eo0K z`Kr~7W~&^nd?=VA7N6&9KRvqZT%6+cx0}_*jHQyG%zHL2g=_#4|GV`7Plrh~tuM`* zB(*cQjB0-Bg5ZF?47MyUSSrIk(sn1l$60;Fs+H~Uje&j#y#5l1hF>=_jR-JK>_~D1 ziWv!iz(9g=Hy66lGpNthNk)K6`-JkEFJb*o>GYnm*V{u0$~>@jmJsv$Yr?J(;yWzz z|Mrq#a8#}sAr|h<9g>sE%RT(88ZZxyf9c(|8X1Dt+pjWhxbf>+fy?J;J>4HGsevP6 z*C(@=SX=-6%?0G31fqRyldtFzs9Rx?f}K_{ylrl|a)vjqd2Hc+b`c&e2y_ z&*MozF9FvR;P%qlKX!RFEO!O{Vg*9y3|7K*T~m=@PbU$OZMdRTKy|50#gZ(#@X&kMTOfVJy*CtnyJH_~FUKx3W@!nUpL|Kt`R@khT}x z+=Uz974`dCR#y z$*Gx0$}y7UY;;{r1R33frY@w}o-qB0x6InEmWKq%UI_a0$rRv|JRSxv{}J%_yo2;; zSG*0)mM4rS*+Ai|c%~=2?VlU8%?S{7X@rvV^0Oq16O`9~+$ZP};P7+gx zUdH}LC|N+T3P(zt?FX|+yYQ~h>KAj(A}&6Uv@yiMM4{CH!+s)ekIcJ%muw|?hmumx zsua5Nhy=P?-^I<1Sj147rys&zdCP1V8l~}Ju&*@VpQD%P{I}z3@MU-H_jto|8<~DA z^<70f6BsW_8$Q;N1ai$+o}0CfV=kup?;b`HIEMLm+2B!%+6g6J8F-t$ zzpoh;fRu!d4MX9{?}~0s@I3=2E3iu=(9*BCz!d8?o}>SzAFu0L(&V1K0oLuZloE8s zcj6Y{JAgl%Snu@u)bo<87ReviR!)VH5|CV&GvKx}Xq>UjO4sKHX8x$tQt1xR4I`=9 zZ1I1a*y-N1uIERn<(BeP?_ACrv967wa#PZ@-hj1eJvLrC6WPNxE0Z!6H>MW2IC}Wi zXCI8v6>-&XUB9IMtT2fKf0F-rfWBeF+*_EZ8{*yHA?muuHnP`#*(r3Jt23(CXA11p zAN%}0jMy=@y-pYEYVhKe-RoTJ97+V0UtMelA^2_z_#reFT_QWs*uEb`w(jpBGD#Nz z8Nmv0y!lOGoDHnLf)joByFtyBD|xw$_AHt?t`3DuFONwP*X*rX=I9Ql4r%utO0hcw z)QSP?Cf`Un2p+Ft$DrYONR3T?5$qEP74hE)_94Lf?W~CF6II7t6ylIb#yFyzdH)pf zi6}nMxyOvp7j!;+TSqSJ*8hkjCwOIY@YzTLoJjCY69IENaAglB{TNw5j#xTy4>-Q* zkS4#Ov&<7hz$|PQ%|!2GhxvK!on;Pw=nw?WG34z^kvn8TYXTY|upiwSuHz=RZY24onmYNV5U4gOJ@&Tz&0o(eX zR4ejc7OryTIP7yp2bo1)d;vBWRw$r!LJRN#@S#j(17f!pn<-w9{f7szaRhw0JvEpR z(#Xl2NEi{jHPH%UOFTHIx_xk&d@eDqAz50s@b_!&+c+<@!6yu``d-J3MIP zwdtG)$mAJ)_)efiR3k74K#WBXz4Dx$_IF6tnhuIxcTM1HcMK4`>d&t>QueV;221-i zWlF%tCS|O|fEJ@x#XQZ-qQj(Qchz1z2rB@}DU4=kwI{JXBVVv&^c9ne8yjFxi6p#3 zh(pVl4>q7ZUajTn?US9J0DMO?aIqMVmq@xe>JL+3EXT-s?e(#LJpEuwW89+Nc-dM= z?kxT^r!1#`8}Yej<2R<>TJmpt`=2`fGxeH1N!xLc>&m$Rl zR5|w6`=+RTaJxy|Qj_zsIq~CWFg;5OAD+25Lwn>r2xSQCG%tDVhC@&6YmyOt(ql&m z<#qYW9~(vJd_P?l#+;*JeXKO$+ul0|+qk4zp^Py)V4Cdw^P`34RSBSf9hWMPabEg3 z;9Q|?EtL=O7gbV-x9M&u>417lP3)8+X|HiCaH3(W`eN=1!*!r++Fw1oLFgwgD)+{f zlDm1xn=!PmyUt-Ge*oo{Zhc%6`ujco>odE6iA;QJb+y!vitkGv065IhKGx{Mgvv&8 zwR@LU-_5Tg5*myOba$#DRjhzCugex?uXTwLkVSzk_FD%V`QY9jZ=5She{ z**N>70)B){#SIKtD4fpcXPRVUf2V~+0&Q8q8JU~15eIeRAi(qQV#@!S(YG!nbtFg< zj6)#p?^r-+*NRrBB5?A$WD7eRPM9(-WLH464;ET ztvdrM0DgE*q4hDB%9~F z{hPiTFz{-reBi3Hhv<=AX@1ko)q&l|?*&eKZ2VhtrKDPat}vY{R)1|^ey?PEuTohR zQ>bSK&BH=Jk4tyuIite%wYzWR#{cM>|3mds117jLcR-W2)+%7FrMR!qp$-DAHy*pnl=-W?LFoM!@8#lMO~x6h^ZO6&kVk) z5+u%GB;;l@OR{s3A&D?{lV!iP3;LN>GEk$NPh&|fr`>wN&> zYt)K9u0iiImuIgn=c}+QzWR*5IrPUOuc8R7|CFwVp2qm3GlD*ouKg}e zyJ@w4rDcrawicb*Rp~St)61{u!xu66U^?b6y=M5f&u(@m&5?yx(~czOP#h*|u#;mU zG_7APhRRx<4xL)%I4V0Wu81uYP*lWzyMCtzPrcNSV$3R63Pf(85*LS0Uhr^xiwklWVe;E|yJ|-{w~l5q?lxFn`%@@3-jE z;msp$+V!IBp&OyyRXC$?0=BipLiv2-4`5;blmZ^g} z&zMk1(&#weLvV|buzKjers~$^V9J=-aIj8Gxkz4m1}$<16KLad^-Tk!xH|2fvkiYH zHPoY=?xaHMzlW=ZlXxH+<{1-N2DzR9^y27UF-G8VXPLFbnm5XxmY_|m-p27BWQ zSeZ&O#X^`)b3%l~bp}ag=7aQg#Ga|bDufVbiGDjKRcV$+GwT^Gh5IXpV$&Mj+tB^0 zru^f&XD*UsBAat*@l4AZw5HOI6(;@Kuyz+At0Xj~Mx&#g7Fva{kA5xkI>=jF2FsLA zzq&GcaiVs6nE@xph>;<}{0lTCG_iV=WG=F<4Y4qT-ZxTGSw6FJJd%X8ueGwiNUrKK z(JWA5tE^l<3%9!L2GOv*@<);0HT0Et1Fhv76(lUWLUO!UjUm^9syd?`^%UJWJaKXGBB)+VO4&i3`l#ue2jCD)(S1iKMU(3X<(o zDEN`8#u+cl8W5#LYSY0AAlZa%H5~#iG@i>xm zZY#P)8t-x@-Z5@;m|=W*cy%Zyf4Ta3!MO*YYm?%-yiOiGjJ)_RpjqUhM){U4Thf+$ z$IVeIUOCt2>QlS654o&<&db%DbmXB}y z^}VJuK2?S?@(ab#Ebnl5_EtM8(e+Y!S-?+r@`_GKyq~jZls9h1dlM0P;mbJ(FGMk} zlTapn>VkJrdYXzaJ!a&CjATA-MMvC6WN#0G07lyn@Oq*4n|kyf!UG z8zKy8{uF{2cc&YjbNTd`^rnw8k{TzFM_g3cIIsLDN@K(3d+5hXWee1Bq&jOuE)rtF(1h?_ z1&WFg<_x1=M)E_>UVWPgI$}a$pYlCZ&cz#1&20=#;&GY!Qsf#P)LV?dXw-=Ws@USY zaHIuUdsJ9<_U=_jm$Iuw<%5wDDr|kmq8jGs40>titJ|+%Qmh691Qa0%-3TJ(hFi;V z0{@d3BK6f}(c)*p@W&ASqKw?Fy9g)yW#BLgpi#3XjQ8a@k$dQ$E@eCeqlPSXmKM7WyU-Zf z#w;GE!sgQDCnC+s-(DG^E-}hT$Rma|M%26ZN{f?l8KJKpHS#>_Jx^`7VP;Wzp-vg= zkH?|d`tV<&kQqEhqsnm!Bmo8F&3+jRYwha%mtVbco6cbJN+zYqd#({8ym9`LLUD-q z@wiWu5A-}TI=(H=Rqr@|o675Ec;10qjZG~JM=G*t&nE>j2t)bCO&CKVOxPXWE-#I6 zh$mR47pH7#oNx`(CPa`Z6%B|&dLlfViCmHV?Vj0*MI~lOZ|)Pq$O@{koc<*YwQ-L; z1DBPV4_ z3I&(2Kb$PoU~g?h$KJS*i1ZMQl6n$jX#qjU2xU&Ls0fY1qmDkikWff7(4J^erOHx` zX#2CAC~`?Eo+N^@88O1_Kmy74q78rd664srGVjB;Eg610lj$+4vp=kUf81PFVz>6W z4}m$s5Ft#nKV<}sYWVrI3%&Sp_q=cMxlU2FSsK-`8F`UemWVVNxiWa=Pxr1@fuwTs zrTNWo(LT;`q!j0Pl2uL~?Finb`Cj|Y5t?xv6d<<`>6rlvw+7iufZK(<2 z9Tc`6>%QLjt4lA=MR@M-EJTZui}=QgSk-4w1By!hGU$*KuG^W_2)a$TP0HJyM}PX_ z^c!W-yV1EUkfIw!GX8_7KK@0~)2nT-NLFQiX+R7P%1G)?KdQo>=L#|TLKMO@r(3(8 zY}6+js+fD@$by~^HTULq5;i4}v?Fqr%POe6pITCPq&4;=BJIN|Clj;+@cD1m*r#8% z2&C7YM$668=-Ig@ZRi44letZcv4hu}vK`@+`b&$eqhoKXXElF0U6?L=u-(+K4XTt4 z)3gIC-;F#GYD)HqsD_v%l6L6l?l6naLQ6&n*Q^l68PP80vtdp8{`VZzZXUsbDmpy5 zF2b=fkw|9^d$*PZ(&_N6j~eg!Sq=buKT@AjNTbI{lA+wGLNp`w@yd4^uu^KX`i%O` zmi$w+J$yEU1e+E$wkM)J|JJ>SWZWS4F+4vBS;slE#@=xBI|&oR38W{9@lR=HhwAMW zkm~GAx;*^-KGG4l2$P}Rj~e#(#B9|lZ@>!EV?=#S23nWTU}A6V4JAr@K-t8lgmQRk8bO5NZ4dTubBGRgKPH0D zs73IIV~4jD=MoEaP?=LS&nwVV+^{i>!qn@alE_xsCGz_3>dOTVOz*)%Wp;|BkLQQG z*f6GGv3g7k-L}5k#qh@6a_`p(K&YX_eUL#G)yH}<`a=__q!N}s;~0TI4qJ?E+#Gvj z&5ariu_b~8rM9PO|L$vhS|V%rP5+3~wUnB+(?)f0ZlO9WlV)HV;fWARL}DGD-8W!7 zWEo+|f>+GFlgKmOglHZ&67n8KoV=&hRuoyWkQWyce zPJAK#-zC<$h?51TX({j!Js(7F9`#@?%@)UR4mxthiK0uoj3{ohwi)1ttnG$cpxj~? z&X50Vk5p#YPP%@XJT!gbe`%Zy<;BShiOk1>7;$)Q%FKkHb5hrbvr6|cNji`G7X&dX zvmHgs5aH{i)JKjVjFOO0nb}q}%U6u?Z|Hi=8}F9D7e@K@LLpx2LBsOwzM5V{IK?fG z#w*J@anw!uA`@?KZ^PeI1=&wXvH0opwLG=wbVsOvURb7K9R55Wm2xv}u{L?6G>1CegP7w>)EZAo9{*L0 z!K(aDqIaR?StsJItlQxEo#IH)!3o`_$81d?1t*bA_C02Py4xFOqM>kB2M?X+PyYXHvf_-9vBn@eJ@+58AxGqw3=dO@!QmVmyHMD2pDyiek{?yOP4g-C2>GsE%!|jInh(t;P?vZXJ-+~|ZET#!MR)ULH5#31!VOFi3H-GlqvP)d zF)M%EJtjxVa_k%1S6vU_m`3qr=N%6Hg>8te8^&G{#qB7ai{ zrDO*EQwWpR#3Syb!rrRJ$}BPPiXc+l(we_<@~)@ER^-;4zLG!)}MHCX7%%*+l! z42sRwMZlZG7Q%M)VQYxNB=0!D#E{zpZKJ(x0m($Kg{qP;hAIuax-e0R~A!=J|()lija88=vkf2@=wi)SHg!KIH!L+T?Gaq*p7Ysr;y_T(vOdU36t$ z39px-29#ep$ToCZv)oql+i>}*7pZ^pYtL2wjXpg0lGMmwIKoQGPH~zx>*4%dVQ&zej!MY!-Xk&8`fLjPFcD*3#tv-D;B& zRTU&*232ozs9U!7k=EK`EQc0PQsTnwm~MguL#46{J&0z?_FB4`!)ckj zE({X;+%~8cyZ!|E{yy!O@l2;(h5^NwZ~$s6No8K2$qj%2e&Co}%PUTI7Hz_Oxj%|l zeo>n$@>`5kM*$G@4+CnPP%6U>PFP->QhKMG7tg8S9VgQT6}BNor%>Y@e|CK9a6x!o=}if!%Q_R z6Ko<>@c9CC#5+!v*vD)`yo0h6Ura<^vZc`x9=q+PBd{J zZ)hcr#Vj<}L7}d9`h8h6`P&^@X;f7U&B3Ufnuoq0La`4hu!7aPcPx(as%sAYmQrLL z`CD8b_aNiC#kVaD)L#Ff>$d%A1JFmbAyk)~kX&Csbfi=btXE$vJwK4fBxB$T2Hf-+ zI*0i2({Cy5=PoQar1Vm^Y zb3#T^5Yv2}e|_fuxyhhg>=*HCc9dh;kw*2S5j<;_maZh|a5$Ha6~+pv)FNGe^8j(}E&l za#u7dwYsg#zVoRv>%&HfHjO;{?x7)jgcB{u4m-uuOoy^ogn8m|mCvb;9#x=^g4hjV zMD4?_D<+$6{eIz-k`DkK4!;ugTISlA)?OuB$Pll83?H~AVdHNM8XX%ve4<&P{{QQ!WGnbWi4D4o!6+PkM!v} zLTEfjVC#(^&?>S%To-MZB#Rc6I6^0A+H%B)PNMt@TFux&R`R-E^D{)`WdCG0ez7}w z-u?7a<hu8r^GrV&AG{9Qffa`_B6Nr}60_H>${G$t#r)p$^!z8cvz` zDTqjUuA)JB;g*VBij^6bx*|uuK`iu6j8NVhs2hHlS-b{vuBd^~RKtuK0fXIPz z?H-<~3XPUJE3IG;=HyNlmI+v9=iA(A=*latl}_mRRz_&dS5Ivg)9VYT#O`71_dut* zNdQwqoAf;3pGNb35<5G2VcP8fRTQbSxz0eUf=0UuH~3Ho75sAJJ#^h`Upm0JY0Xb) z@m`WbkECq8y*d?=?3fcjoy&{~)5ap?u5Ag%j&(nrz75?}*tuFjye)u{LNs#fqVL1) zx-82>%^6Mi1_2TBsZrM3O_R>QZ~i+x+1@(S6+898gt3#_f)sE6Qu>KBmb+w(;#rV zRBbYT?DC~@CR9HCyH7E=+g0bbea)<#zn6bAL+^L%l^_!1&2Z4pUy}5$Ysagoynn^; z(>cLZZ}?iiBNp9?B~lDxZZyP921Vym06xlU`RH=*rl!<{`>*fcYIB1e+_6nB2V|=x zmdnB^ub*nH+!#5Z>OPJv$5}p~{W*c}_qN?1m!3#k`)HA6IWRFTv|97M3ZXl#;`c7l zorlUY88Yf8X-5$iPmZKV{V_rTGyrb_)>ATyuAre@rowt_cRracp!cG<4V!g1`fU|r z0wpPgISD07EO}uS8~v)#i0Zd-EwFk2$e-ybns=T6X62}d=H%%3JzB3@+T$jk*Axj|zu{hB8B6wyZl%<^qQ;zP0u`vbj1EMCZn|HH7Vo6DJ$ zibfsOX63RITxWt^B{WV@j3Q4ZZ-`d-m*78 zp`uFoh*0T9&FV8FeGlUX>JKEPH#k6VUnx$O8~e-wRs@dJH(*cXmC4TFO1{mYC)Z$V z;Sh2+)1~aLI_o~fIP2OHv!o){2|U~jv&(Mku5N%?4u(-aYreX!nO^QS{ASCT-ZK3P zdMV{q(dAj?9fv;ed1CDUMROAtiep|CcGyw4KS=f2w6U8X-P-N^f1Ubu@VQXydf1L} ze^!0bCbhsFfZj8XUF3g)06@#Y+KCcHrN)<)h@CgWJbQ8U9sUGmy?)%qN7kVydEnLW z8EXN|qc`v={(%x{7)T(`bfm~7IFcpXT!g$I(EEYH)t2w0pIW9APL2M3&wt+HeD$1^ zT<0S^%Kj`SlywmXEdah!D|^Q~9J~ah^cf*Fyr%r!;^Yddn7Gf~B=U2QajzhlQ~iwP zJkXw)lqRc2JPJfkC6i;dIx^9ll>uS(Gk`{m@V~~Cm{WJe;P-Q$hT-nbU)#(DsA~wE62{H^5TXbO6B--fB{wZ zqjsrWacJyw+tFN_Hm}+n5YA-)>8PVsScNP|Gj~k3k z2;UEB-gK0M2iWbj&E;xv(EM-W(;VF;oRw-fuT|VDhYeOfWksFnkzU*7Ai3>d2KK$d7ZpFD$3A5oJ zct4v|-2q+M^_%|If|wvl!gS$l^{!P<_W7XKfAlELDSb1yySp_rmIR%Ug8pkqVhib^ z-SW>%%KMT@pQax}8?@mXG2g_Vn9mfzj7_WAX;*yS3)ud@>>atu|3d8N{h~r`Xdd_9 zs3a~UcwH})?=7av*S=0Xq8f0I7V7d>m)9tv2f;$`<9>oAJn-{`os^;cR!V78MVm;uFNQuBvK&9?f?)tu zod8BZ4ILof#UIY=G_9rqLXfe;v7X3Hl@s@ZsqzcAPlqSM8HaDRB=5&Mkc={#p>2!D z#gg`K!tg=I_Haio)F0TFMXcDiR!fNlekaQHd4I@ead4&3_n0vjohY=FrYF?UOR~xF zxD6j;?jG7oz6xcLXq5gCKu3rsipmKjw^Rf6wI)nc9777=L7#xj$bu=c^=Wk48~ENU z?dZw<7UXY}Fk?BPuMOSn=HM^d)Yb|%6LQ#(O17kcu(vBuwfL7QhLcgy*Jd@W8ZojXR3JV6E zL<+o5VRX3DC!EWsp59u>ADp6{_<}buv$3hw> z!YC4WDAbROO`HGMS_I-oYSX>8_Vl}3XNzht?_k1d-?sAcuI7V|b_K1-MB71bfStIL z?TFYOr851*l%|;z5L3(+xE&ow$2Ktu;N-{8W#g@3d*sq z-8p!g@(j#HE+{CnKHT=Zb!?^`T2Vo)L!psaJ%i-nCJ}y;%G$PYTxvjV|A$}i{rfj& zLXUMTwsz;ECQ+5St=L!aws5CKaFfmqO+>k4B8g=rio-<+KL!NlYobCwKINP%D&f6N z$3CpXQ;!p-qyzK4;#horo@6AWn=?X{GqKs}vP0-qa};*LECytIGs%VKSr);R9?*C=Vvu&oX2 zr|#aD4qRW;Ee^C`dQ22H|4Ggu4Mvt>-u(T<)KuPi-Mq(w9CI;|VyBO7-y8L_xB^dY zuDyG;xF&O{^JB_MP3Z9&Bs1T&R3Y9cA_D_WugkK~WYM$fI^*z1ngV^K4M(GhdYX{- z9TV>Z>Z1jviN-XorwJx_yE#QB%obN{U%88+!ICo7Z?w@E1Ub!BfS zRIp-gc9*DXFf^32>1ClsMoKIS-avXM5DeSVRQ4A<>en;bSz3vF4!jDSI$V>5mh1db z1S69H_$+N`Koca%D)2XW@%-HdtY8R?coc)=8C~!XeKxXDR-%<;htxPWQ;f1d&+pp~ z!DQ<9#~6F1GNpSo$0h*q>?O~_d9Wqq%e~^vHOq0PN0RfykhZ7Mr-tftE9Ez^&@iek zaZLYw&m?Dxrc~4xLuuk6YNFD6Up}m{{v<5 zt5VP!>)__4Y?c0!bB!=MB435cwrUPieNH@K6M(^E%~Tc+-%`qct01W{gZ38{dhyH} zPG8?*omLoSqf<($S17w=*ZI6Z6NQm*fazwkQr)o-3tfy;YqW(h*-_Q^ZT$aU+ZC`d z<(_1}(!JhXkQ!tOY4jKz{vK{VFKECOA;xGpAq&?#CQ4UrpblxitjYn(A~H*O-IRq1 z)9EAOl$!4myZAYAimTgfm;Vz=Lcr^{rnmf$=>AQyqZOGIXt2=RIgEu5GgSx`1_x#K zk}TezQL zU9^3|m90(4PmP_;9?_BbuOLbGLzrl9h0b3M1M{>6x&UWtyKtd38G6pbCl!u%rw1Fl zWImq7{5`8~U9%9^j^Cs<+hJ2Egt1^sfB!LtV*g+@G{n4!2l=KH*L%jsQ@ zF^Qx=InS8N#N_aUsoOe`xd0PtF>o0Vr%XUj7y1$tNh;m;Z@fz9n` z@A7uE>?^AL{i9#*I(^J+v`|>O)?@xJEO7grRVSv3nUIlyK3JE%%&{}u-M4izMdrQD z-#@p+8nBJ!IORO&GQ|0e=IyuqGnTQX>C2)yM@&xO4bM3o8&dtDR7U+0v0o~m1_3l- zCjQ^c3*}$u}0tnn1&{tavbH2$Bn`?(6Fq3wY&xojH>hMGjD< zTJY#dldXqndq%@{%?11nKpaq}9Fu0DErucm(;AKwmCtLqlfbW2jEldLBN!rwETDSj{xXw1e`B>m}tl7 zMUl#$vKCJDu+X<(@m&@ak}?^IOkkwLfO|c|dU@!|mRu*w#5J$oGh9&8G@#3!8@|4v z2F+)Tf7WXsIHK>$Qg%jvB)o7DxYTJ%I-T zl^B#Xd+yT2Y8{dxMGnAVIC411u4b-x^A7LSlb6<8zF*1zBiG~AH<3@4x$b+SPC=4| z1{ep$P>m%4gvE(c`L&6pGaJ0CQ`=RkV&Om9u+f$SMvru$)upmxJ)XN~z?ivgqPNt_ zOH@taIuHV27$2VKCK}ZfBSzk?%Avtw#pwZkI{6KoFwq;8+5ed_dupfA%KMBRzT#1@ z1-{t{wgUcT_xYTgvYaa(nyb^L?2bc^k}sy+DbSqdIt?h>1tRih>x@u||L-dzWb#{~ zLnluWTq2-detk5&rCa(ZIr-k#EzMOn-iP76Agj!6P%i5@Yih$REYzHB;>txHjp}d2 zI^fv~lKG~d*K8s*eLffIpzNnDs1*haqB?oG$Ryd|IMOGcB!xcl`>I%h$^_C(k8>IB zY28^bd3eJ^IT?t%5N5GLc{KffSEOGhPvCLCZ+MLpeI$O`))Z8B$G!hH;4jWVUGeds zzmnQqRdU4No$9jkFg|Ftql-xCy+Du2()QET&hqR%sw}SYvfRz|#>w8iRlzK49Ld^t zG1~BjuZc75&?-HKCWddp65R09d(~K6Z_(beEPF(qVTJiLLSL2u~#znFXTaH#*c@4r$JC0n$ZvXyP3(q^WRNVc&rWBrUJ zscdPcWQj5fCE2ARB4T0;30X48R--Iq$(BgWSX+?oKHs13_qxB|>$;BnxPSK_zvH<6 ztWTd|-ZQV)>pY+52EI4|E!2Y46gcjRe+3g!{*qF+Fu*Td*P*XSR;lt=T`5YJ=BPiSt zy@J(-yDDJ;4+f`yA0H4TxMlEQ%V{vW83sktl5}rJqy<6eX~5QEn)IMs*65`&^!DeM zLL(0rO>Q$M8FwGH8cM78mgi_~Aftq~7&r;?Vv`ud54Om$>lDn9{ot)T8b=6GI2M-0 zgL8s*Jnu<fqoNR_B^-U zHG)#dP&q@;2`+|Hdl*=mv?G7_v=f+-;Vm%#iNO^Iv>Ds?G>MsTixDXo7whzSLvs|M zIp`|9UZEaNZbKwTn5o8Cb|u63eGbZ(L<`h|zy3%jj85ku=zx zg50It2;9Gt?GJuGAMdJipnz_PSNk&)2qR#jzc~Qo9{lWF-s=@F9=yjrSc-Qk19zVubt0_3jsIgjCFd=CZmU)yzPx$HLls=# zXu*N1^$eII@;F}X*%Ds1nW;Z?37`FOiFe)t)d1?fbtvVGuHn_UKZ9vSrlAx9>>Qf} zN#|?`FseTkPG)z3e!@Le4+v5Kf%nSdU+F*~uq5M%rVLOk`AmtZ0@_)3C{oY3a}Q}B z&c?%Bhi`O9#4=s!98IBy5&F0mx)dKsFT?(>zmZD=4b85~IPvCP!Rx(0ZI&;l477O4 zO;z5|Gf5l0qxYwvl$Ln`ALNr({#D98L3}S;^@r@E<}&Vv;mf~kt?t~_Y?|I8In!Oh zv|0JyZ~zCHX6!RiN$ z_H`TZ9NQR*O1|XpyDX_Ab6qX6zL}|Oh*+s?4pGEq+1e#%fSP#hx?l zFIrfJIfN_4>1ifv-C{HuC83^5M8zCn3y3z~hGtzxmqomx(m`BMeL_b4l`0ABp>vS( z`82(sGOdfhf1d}x2y*?Zof^-h>LFI60 zzr$KUbCnTQz)Do+JG+87`N+|03$zp!%SAg5wWh)+YSV%#mB>)Q2CG;X=3nKa<2J^l z9`1C7d8ozh4x*C-J`Boz4&{;y3MA106CD}U)8~cMVrh-GGZs3+cQd&{8qQPHvlLwN)l2u1B43Y0AtiTC%7nvj0$#p4;#~2WK=9a1E(5 znXSy)KWT=)xk4k{gV^`sy5VZxLWmVPl8q;=bf7tAV>V-CXd_fiI^UFP~ z>QY71_siAl>RWC{CD*}VTf;p&{ssH~rF=!~YfrniHYL83`)(~TC$0~cvG1N3u=bf$ zEU@!kxm<8C-fK|thpE>Tl_p$7MAg6pm1EBwAFS7bc zn4>>}1~^aF>xk5Gi+?fz%)<<3qtFOVKx+w`|4$K7Wj^dWdQ?7;y{t3%FtHfin~9$c zCQZJDpD`RyYu_$-Gu7EXtV@}*?$lY<7IRVu`jYcOq-a58)TRUHJjH%rcR)5K?tg7e zppJ-=a-XLpo(2wR13oNv>tTcA=AFtMW7Zd|2X}JbZsDma&Xt`s=fft~GE|<+&TO@$ zSS|hR%8sO&9g#~ur_tTBo-nqIY)N+;u=fMr*oA`P3TiiXk6U5e7;OZf^8w z_8g7hxYTA5)OXgVw@`c2nNFe{Tcht&8-L!m7d`RjpF)6|Y#A+9MStY8s=R-k&JWPl zsXRDPFq>Q{<<&(rvyJaJeu$~wa!XtF>}qe!@ydyJ#pAC_{Zl+6ndpgX&d6~KqE5-g z;n|M~{cgwH9RmB;8|n)!4XcarrC&L9wRzVaEtVgAjg9I2jdJY1P53dfPa~+O?kD}; zc(Yq;3;J%_4McnnayYd5?fGJO%EQZ)QeA7}l|1ddD9^?B4;=8^nJt(PM;bBNz#I{* zTq(Ni@oskI)L3!fkF5^7iq=}^pkcbAysIzpa?{%r*X>!b^D~3pTyEx&1uoqS<-s~{ z2bE^1HlF5tEvm@6dbj=c4qbI&&E%n$bdr_bbq(FtELqWQ)}%k~m5G*Oo#ps#6O~TlIdr>ncB}(FqNe2bB(E%o~Ja6aZR=5$jVb~_wL~;-? z^fVp(K}DgC<)N>4Q{zbYR>WUUU@9JNh$H?S^FLKo`VPpX`x!6TJclg+3efghToQCO zWuCn4N73q5JsXNzPJNv?%fz2$?;vILw~y-N7rN?{$@IPjnz2Z)Dqj_WZCkeM~N^ul&o(Yg`!n=X+$~!TQ#4(?a{@to@?nvlA&fn)R#UlYrA2|)`JplS zcnK3xdR31dd3S}kQJpO>QT>$`Ta%^lss6S1R^<`1%+&40G%gd_0~yfpY;&d1qOB9( z(4cIL+y9LsBZR}P&5NEHuPM4~pq4KYG%C1h%+7D)1iWu+mi*5Nj0cpl8+4&Rg9;Jw z#&W2TxDJt_K&(L?-_VD7HMGG6|Hz7!&wEmiMXp8DqjEVKeI^Y4EXv1ue9!u2MtFa# z!;jSuU%XEe+`>UoY4ig{#eL(yaVMqTGch{L1= zz-as4LI$(Kf1Tqs&0f${e@1@#i5D{K5`@m`yoKP&%Ns;bH}=Fz8Fkd?+bj*USj1EK zvBL&VUoI$cj5|QVI~~5MxcF;4arO4?(8ss@^sGn|ox}ilxA64R*A* zzq+F3(^?)eyuKxZ?@cGgSO^r@D;H@AKhgrp-=sh2Mco*QYfm$#M@1{K*BwM;KwsPT z4T7Y(ZI`23j3TJ9c7azEYjd4#4tR;ku>qmwr!yIV?n)T4RP(E-(iib=)C3~`GM;X^ zv&bvWc{1H{Ke{h#Kmw zStxtpYaI+a8rK9pN-1VNi@5bPs4oa>4X|lz=jqX#bQ~JAg<@d=BK4!Y3q?EiyE`9t zd1e30@9!8CGZlfrP5pT8vJ#!XC9#|bJO+`DDB7Z@Y5BeS%${}r( z1#D9W`ih*Pb6mdGQajRV&PZ>^YwikL)ERpnF;Yfu@v{~TjQnAcL|2|zC+Lu`1tKnN zb_7>h!(PFWa|$nWVy9a$rrj@+4sC1|AZAES484<^FgM^8AsyJZE{udR&CsgBSop>Jzl2&Wk=4ckAnhzb zrF5nRNr(?@UCr-yBjCIM^1?hfaN!tdszD2*0b}J36xd7 zB@AXqSlW}G-5EH%#~bhQoT48}RFBs)`;_~-Kepn3w^g$=S@PclI+GEa*kHLot>Du4 zvHS77M(bNJl$V)z-1@$p=>Lpu=*c%cE81_l8KzYF4O(*S5ny`n`w!f^tmpZ8riNX% ze3Nf=^a%sRyFE%qBaW z^Rec6FYp;`!Ag^_?CXDG1%oDJ6#XBDCQqSABI=s2 zb+Z(VlJnlzyzrv&h0g0-)OEpNczoxb~;S^l$V zz5Vmkcj^4WnP%UOoDLcjQAR9&zqx%FadXAO zXdf?4Ih?(E55Snkpkv`#Y|LMUl>?C%t1>s|7=BOe)|UEKcT=ef%ep+vu>L?7JS^y& zaav4N`%S^co0k%MF1*XlxzKZFf4>zca!mjoTBW#Gt<2>`BPM0(zBxQ){uQT$<@zWaHy8 z`?+v^Hb;iWJ+il*pOWHlc<$lxXUCTGyTPpAUcfgLdkf^>4A{ zrkg^*Gff&>qeZ=)FNyM5DX0nTgNjB@e}mxRNpO{gLJ=kBaI=m76Vx(@Rgu*Ll&##P z!1TNncxuKO%s|+$`gyTjvHrVY%qK;r6uKjPE1E4rDk^$HPAxrKw(|rW1c%5wYF}DP z(V?s8g;Vjxu3P7F^?Q`pZ2=PLx4>icDxFvZ%nn>{$vjzD>coURyjhG6;u`sftrs0MdeqL