94 skills found · Page 4 of 4
LagodichYuriy / Code 128Code 128 barcode generator (Code Set B). The simplest implementation in about 200 lines of code.
eschutz / LibbarcodeA small Code 128 barcode generation and printing C library
HKUST-KnowComp / CANDLECode and dataset for the ACL2024 paper: CANDLE: Iterative Conceptualization and Instantiation Distillation from Large Language Models for Commonsense Reasoning (https://aclanthology.org/2024.acl-long.128.pdf).
LaradjiSoftMatter / SoftMoldMolecular dynamics codes developed by Laradji's group of an implicit-solvent model described in the article by Laradji et al. in the Journal of Chemical Physics. 2008 Jan 21; 128(3):035102. doi: 10.1063/1.2825300
sanusanth / Java All Basic Program Part 2What is Java? Java is a popular programming language, created in 1995. It is owned by Oracle, and more than 3 billion devices run Java. It is used for: Mobile applications (specially Android apps) Desktop applications Web applications Web servers and application servers Games Database connection And much, much more! Why Use Java? Java works on different platforms (Windows, Mac, Linux, Raspberry Pi, etc.) It is one of the most popular programming language in the world It is easy to learn and simple to use It is open-source and free It is secure, fast and powerful It has a huge community support (tens of millions of developers) Java is an object oriented language which gives a clear structure to programs and allows code to be reused, lowering development costs As Java is close to C++ and C#, it makes it easy for programmers to switch to Java or vice versa Setup for Windows To install Java on Windows: Go to "System Properties" (Can be found on Control Panel > System and Security > System > Advanced System Settings) Click on the "Environment variables" button under the "Advanced" tab Then, select the "Path" variable in System variables and click on the "Edit" button Click on the "New" button and add the path where Java is installed, followed by \bin. By default, Java is installed in C:\Program Files\Java\jdk-11.0.1 (If nothing else was specified when you installed it). In that case, You will have to add a new path with: C:\Program Files\Java\jdk-11.0.1\bin Then, click "OK", and save the settings At last, open Command Prompt (cmd.exe) and type java -version to see if Java is running on your machine Keyword Description abstract A non-access modifier. Used for classes and methods: An abstract class cannot be used to create objects (to access it, it must be inherited from another class). An abstract method can only be used in an abstract class, and it does not have a body. The body is provided by the subclass (inherited from) assert For debugging boolean A data type that can only store true and false values break Breaks out of a loop or a switch block byte A data type that can store whole numbers from -128 and 127 case Marks a block of code in switch statements catch Catches exceptions generated by try statements char A data type that is used to store a single character class Defines a class continue Continues to the next iteration of a loop const Defines a constant. Not in use - use final instead default Specifies the default block of code in a switch statement do Used together with while to create a do-while loop double A data type that can store whole numbers from 1.7e−308 to 1.7e+308 else Used in conditional statements enum Declares an enumerated (unchangeable) type exports Exports a package with a module. New in Java 9 extends Extends a class (indicates that a class is inherited from another class) final A non-access modifier used for classes, attributes and methods, which makes them non-changeable (impossible to inherit or override) finally Used with exceptions, a block of code that will be executed no matter if there is an exception or not float A data type that can store whole numbers from 3.4e−038 to 3.4e+038 for Create a for loop goto Not in use, and has no function if Makes a conditional statement implements Implements an interface import Used to import a package, class or interface instanceof Checks whether an object is an instance of a specific class or an interface int A data type that can store whole numbers from -2147483648 to 2147483647 interface Used to declare a special type of class that only contains abstract methods long A data type that can store whole numbers from -9223372036854775808 to 9223372036854775808 module Declares a module. New in Java 9 native Specifies that a method is not implemented in the same Java source file (but in another language) new Creates new objects package Declares a package private An access modifier used for attributes, methods and constructors, making them only accessible within the declared class protected An access modifier used for attributes, methods and constructors, making them accessible in the same package and subclasses public An access modifier used for classes, attributes, methods and constructors, making them accessible by any other class requires Specifies required libraries inside a module. New in Java 9 return Finished the execution of a method, and can be used to return a value from a method short A data type that can store whole numbers from -32768 to 32767 static A non-access modifier used for methods and attributes. Static methods/attributes can be accessed without creating an object of a class strictfp Restrict the precision and rounding of floating point calculations super Refers to superclass (parent) objects switch Selects one of many code blocks to be executed synchronized A non-access modifier, which specifies that methods can only be accessed by one thread at a time this Refers to the current object in a method or constructor throw Creates a custom error throws Indicates what exceptions may be thrown by a method transient A non-accesss modifier, which specifies that an attribute is not part of an object's persistent state try Creates a try...catch statement var Declares a variable. New in Java 10 void Specifies that a method should not have a return value volatile Indicates that an attribute is not cached thread-locally, and is always read from the "main memory" while Creates a while loop Method Description Return Type charAt() Returns the character at the specified index (position) char codePointAt() Returns the Unicode of the character at the specified index int codePointBefore() Returns the Unicode of the character before the specified index int codePointCount() Returns the Unicode in the specified text range of this String int compareTo() Compares two strings lexicographically int compareToIgnoreCase() Compares two strings lexicographically, ignoring case differences int concat() Appends a string to the end of another string String contains() Checks whether a string contains a sequence of characters boolean contentEquals() Checks whether a string contains the exact same sequence of characters of the specified CharSequence or StringBuffer boolean copyValueOf() Returns a String that represents the characters of the character array String endsWith() Checks whether a string ends with the specified character(s) boolean equals() Compares two strings. Returns true if the strings are equal, and false if not boolean equalsIgnoreCase() Compares two strings, ignoring case considerations boolean format() Returns a formatted string using the specified locale, format string, and arguments String getBytes() Encodes this String into a sequence of bytes using the named charset, storing the result into a new byte array byte[] getChars() Copies characters from a string to an array of chars void hashCode() Returns the hash code of a string int indexOf() Returns the position of the first found occurrence of specified characters in a string int intern() Returns the index within this string of the first occurrence of the specified character, starting the search at the specified index String isEmpty() Checks whether a string is empty or not boolean lastIndexOf() Returns the position of the last found occurrence of specified characters in a string int length() Returns the length of a specified string int matches() Searches a string for a match against a regular expression, and returns the matches boolean offsetByCodePoints() Returns the index within this String that is offset from the given index by codePointOffset code points int regionMatches() Tests if two string regions are equal boolean replace() Searches a string for a specified value, and returns a new string where the specified values are replaced String replaceFirst() Replaces the first occurrence of a substring that matches the given regular expression with the given replacement String replaceAll() Replaces each substring of this string that matches the given regular expression with the given replacement String split() Splits a string into an array of substrings String[] startsWith() Checks whether a string starts with specified characters boolean subSequence() Returns a new character sequence that is a subsequence of this sequence CharSequence substring() Extracts the characters from a string, beginning at a specified start position, and through the specified number of character String toCharArray() Converts this string to a new character array char[] toLowerCase() Converts a string to lower case letters String toString() Returns the value of a String object String toUpperCase() Converts a string to upper case letters String trim() Removes whitespace from both ends of a string String valueOf() Returns the primitive value of a String object String Method Description Return Type abs(x) Returns the absolute value of x double|float|int|long acos(x) Returns the arccosine of x, in radians double asin(x) Returns the arcsine of x, in radians double atan(x) Returns the arctangent of x as a numeric value between -PI/2 and PI/2 radians double atan2(y,x) Returns the angle theta from the conversion of rectangular coordinates (x, y) to polar coordinates (r, theta). double cbrt(x) Returns the cube root of x double ceil(x) Returns the value of x rounded up to its nearest integer double copySign(x, y) Returns the first floating point x with the sign of the second floating point y double cos(x) Returns the cosine of x (x is in radians) double cosh(x) Returns the hyperbolic cosine of a double value double exp(x) Returns the value of Ex double expm1(x) Returns ex -1 double floor(x) Returns the value of x rounded down to its nearest integer double getExponent(x) Returns the unbiased exponent used in x int hypot(x, y) Returns sqrt(x2 +y2) without intermediate overflow or underflow double IEEEremainder(x, y) Computes the remainder operation on x and y as prescribed by the IEEE 754 standard double log(x) Returns the natural logarithm (base E) of x double log10(x) Returns the base 10 logarithm of x double log1p(x) Returns the natural logarithm (base E) of the sum of x and 1 double max(x, y) Returns the number with the highest value double|float|int|long min(x, y) Returns the number with the lowest value double|float|int|long nextAfter(x, y) Returns the floating point number adjacent to x in the direction of y double|float nextUp(x) Returns the floating point value adjacent to x in the direction of positive infinity double|float pow(x, y) Returns the value of x to the power of y double random() Returns a random number between 0 and 1 double round(x) Returns the value of x rounded to its nearest integer int rint() Returns the double value that is closest to x and equal to a mathematical integer double signum(x) Returns the sign of x double sin(x) Returns the sine of x (x is in radians) double sinh(x) Returns the hyperbolic sine of a double value double sqrt(x) Returns the square root of x double tan(x) Returns the tangent of an angle double tanh(x) Returns the hyperbolic tangent of a double value double toDegrees(x) Converts an angle measured in radians to an approx. equivalent angle measured in degrees double toRadians(x) Converts an angle measured in degrees to an approx. angle measured in radians double ulp(x) Returns the size of the unit of least precision (ulp) of x double|float
xseth24 / Shadowtech.netsolution#!/usr/bin/env bash # This basically just takes all of the instructions from DigitalOcean's "How To Set Up an OpenVPN Server on Ubuntu 16.04" and puts them into a single script. # Define functions. function exportReplace { ek="export KEY_${1}=" sed -i "s/${ek}\".*\"/${ek}\"${2}\"/g" vars } function getPublicInterface { pubInterface="$(ip route | grep default)" pubInterface="$(echo $pubInterface | grep -oP -m 1 "dev .*?( |$)" | head -1)" pubInterfaceLen=${#pubInterface}; if [ "${pubInterface:$pubInterfaceLen:1}" = " " ]; then ((pubInterfaceLen--)) fi ((pubInterfaceLen-=4)) pubInterface=${pubInterface:4:$pubInterfaceLen} echo $pubInterface } function getIPAddress { ip route get 1.1.1.1 | awk '{print $NF; exit}' } function getAdditionToBeforeRules { pubInterface="$(getPublicInterface)" echoStr="" echoStr=$echoStr"\n# START OPENVPN RULES" echoStr=$echoStr"\n# NAT table rules" echoStr=$echoStr"\n*nat" echoStr=$echoStr"\n:POSTROUTING ACCEPT [0:0]" echoStr=$echoStr"\n# Allow traffic from OpenVPN client to ${pubInterface}" echoStr=$echoStr"\n-A POSTROUTING -s 10.8.0.0/8 -o ${pubInterface} -j MASQUERADE" echoStr=$echoStr"\nCOMMIT" echoStr=$echoStr"\n# END OPENVPN Rules" echoStr=$echoStr"\n" echoStr=$echoStr"\n" echo -e $echoStr } # Check root privileges. if [[ $(id -u) -ne 0 ]] ; then echo "This script must be run as root." exit 1 fi # Step 1: Install OpenVPN apt-get update apt-get install -y openvpn easy-rsa # Step 2: Set up the CA directory and switch to it. make-cadir ~/openvpn-ca cd ~/openvpn-ca # Step 3: Configure the CA Variables # Get information from user to customize vars. printf "\n\nSetup will need to customize the VPN server. Some information will need" printf "\nto be collected." printf "\nDon't use quotation marks in any of these. It'll mess stuff up." printf "\nDon't leave anything blank." printf "\n\nPlease enter email address:" read emailAddress printf "\n\nPlease enter country code (i.e., \"US\",\"CA\", etc):" read countryCode printf "\n\nPlease enter state or province code (i.e., \"NY\",\"MI\"):" read provinceCode printf "\n\nPlease enter city name (but remove spaces, i.e., SanFrancisco):" read cityName printf "\n\nPlease enter organization name (could be The Illuminati for all I care):" read orgName printf "\n\nPlease enter organizational unit (Seriously, what does that even mean?):" read OUName printf "\n\nIn a short while, another program is going to ask you to confirm these." printf "\nIt will do this multiple times. You can just press Enter on all of them." printf "\nto confirm." printf "\nIMPORTANT! One of the setup programs will ask you to enter a" printf "\n\"challenge\" password. Leave it blank and just hit [Enter]." #printf "\nHowever, when asked to create a PEM password, be sure to use a strong one." printf "\nWhen a setup program asks you a y/n question, respond with \"y\"." printf "\nPress [Enter] now to continue with install." read -p "" # Customize vars file and run it. exportReplace "COUNTRY" $countryCode exportReplace "PROVINCE" $provinceCode exportReplace "CITY" $cityName exportReplace "ORG" $orgName exportReplace "EMAIL" $emailAddress exportReplace "OU" $OUName exportReplace "NAME" "server" # Step 4: Build the Certificate Authority source vars ./clean-all ./build-ca # Step 5: Create the Server Certificate, Key, and Encryption Files ./build-key-server server ./build-dh openvpn --genkey --secret keys/ta.key # Step 6: Generate a Client Certificate and Key Pair source vars ./build-key client1 # Step 7: Configure the OpenVPN Service # Copy the Files to the OpenVPN Directory cd ~/openvpn-ca/keys sudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf # Adjust the OpenVPN Configuration confFile='/etc/openvpn/server.conf' #Note! This var is used later in the script, not just in this section. subString="tls-auth ta.key 0 # This file is secret" oldString=";${subString}" newString="${subString}\nkey-direction 0" sed -i "s/${oldString}/${newString}/g" $confFile subString="cipher AES-128-CBC" oldString=";${subString}" newString="${subString}\nauth SHA256" sed -i "s/${oldString}/${newString}/g" $confFile subString="user nobody" oldString=";${subString}" newString="${subString}" sed -i "s/${oldString}/${newString}/g" $confFile subString="group nogroup" oldString=";${subString}" newString="${subString}" sed -i "s/${oldString}/${newString}/g" $confFile subString="push \"redirect-gateway def1 bypass-dhcp\"" oldString=";${subString}" newString="${subString}" sed -i "s/${oldString}/${newString}/g" $confFile subString='push "dhcp-option DNS 208.67.222.222"' oldString=";${subString//./\\.}" newString="${subString}" sed -i "s/${oldString}/${newString}/g" $confFile subString="push \"dhcp-option DNS 208.67.220.220\"" oldString=";${subString//./\\.}" newString="${subString}" sed -i "s/${oldString}/${newString}/g" $confFile # Step 8: Adjust the Server Networking Configuration. # Allow IP Forwarding subString="net.ipv4.ip_forward=1" oldString="#${subString//./\\.}" newString="${subString}" sed -i "s/${oldString}/${newString}/g" /etc/sysctl.conf sudo sysctl -p # Adjust the UFW Rules to Masquerade Client Connections fileName="/etc/ufw/before.rules" newRules="$(getAdditionToBeforeRules)" fileContents="$(awk -v "n=10" -v "s=${newRules}" '(NR==n) { print s } 1' ${fileName})" echo "${fileContents}" > $fileName oldString="DEFAULT_FORWARD_POLICY=\"DROP\"" newString="DEFAULT_FORWARD_POLICY=\"ACCEPT\"" sed -i "s/${oldString}/${newString}/g" /etc/default/ufw # Open the OpenVPN Port and Enable the Changes ufw allow 1194/udp ufw allow OpenSSH ufw disable ufw enable # Step 9: Start and Enable the OpenVPN Service systemctl start openvpn@server systemctl enable openvpn@server # Step 10: Create Client Configuration Infrastructure # Creating the Client Config Directory Structure mkdir -p ~/client-configs/files chmod 700 ~/client-configs/files # Creating a Base Configuration fileName="${HOME}/client-configs/base.conf" cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf $fileName ipAddress="$(getIPAddress)" sed -i "s/my-server-1/${ipAddress}/g" $fileName subString="user" oldString=";${subString}" newString="${subString}" sed -i "s/${oldString}/${newString}/g" $fileName subString="group" oldString=";${subString}" newString="${subString}" sed -i "s/${oldString}/${newString}/g" $fileName subString="ca ca.crt" oldString="${subString/\./\\.}" newString="#${subString}" sed -i "s/${oldString}/${newString}/g" $fileName subString="cert client.crt" oldString="${subString/\./\\.}" newString="#${subString}" sed -i "s/${oldString}/${newString}/g" $fileName subString="key client.key" oldString="${subString/\./\\.}" newString="#${subString}" sed -i "s/${oldString}/${newString}/g" $fileName echo "">> "${fileName}" echo "cipher AES-128-CBC">> "${fileName}" echo "auth SHA256" >> "${fileName}" echo "key-direction 1" >> "${fileName}" echo "#script-security 2" >> "${fileName}" echo "#up /etc/openvpn/update-resolv-conf" >> "${fileName}" echo "#down /etc/openvpn/update-resolv-conf" >> "${fileName}" # Creating a Configuration Generation Script makeConfigStr=" # First argument: Client identifier KEY_DIR=~/openvpn-ca/keys OUTPUT_DIR=~/client-configs/files BASE_CONFIG=~/client-configs/base.conf cat \${BASE_CONFIG} \\ <(echo -e '<ca>') \\ \${KEY_DIR}/ca.crt \\ <(echo -e '</ca>\n<cert>') \\ \${KEY_DIR}/\${1}.crt \\ <(echo -e '</cert>\n<key>') \\ \${KEY_DIR}/\${1}.key \\ <(echo -e '</key>\n<tls-auth>') \\ \${KEY_DIR}/ta.key \\ <(echo -e '</tls-auth>') \\ > \${OUTPUT_DIR}/\${1}.ovpn " echo "#!/bin/bash" > "${HOME}/client-configs/make_config.sh" echo "${makeConfigStr}" >> "${HOME}/client-configs/make_config.sh" chmod 700 ~/client-configs/make_config.sh # Step 11: Generate Client Configurations cd ~/client-configs ./make_config.sh client1 # Copy VPN configuration to /root, so it's the same path for everyone. cp ~/client-configs/files/client1.ovpn /root
Teehee123123 / Server Crashes On Player Connect---- Minecraft Crash Report ---- // Ooh. Shiny. Time: 7/4/13 11:37 PM Description: Ticking entity java.lang.OutOfMemoryError: Java heap space at net.minecraft.server.v1_6_R1.Packet56MapChunkBulk.<init>(Packet56MapChunkBulk.java:50) at net.minecraft.server.v1_6_R1.EntityPlayer.l_(EntityPlayer.java:200) at net.minecraft.server.v1_6_R1.World.entityJoinedWorld(World.java:1354) at net.minecraft.server.v1_6_R1.World.playerJoinedWorld(World.java:1335) at net.minecraft.server.v1_6_R1.World.tickEntities(World.java:1223) at net.minecraft.server.v1_6_R1.WorldServer.tickEntities(WorldServer.java:480) at net.minecraft.server.v1_6_R1.MinecraftServer.t(MinecraftServer.java:573) at net.minecraft.server.v1_6_R1.DedicatedServer.t(DedicatedServer.java:226) at net.minecraft.server.v1_6_R1.MinecraftServer.s(MinecraftServer.java:487) at net.minecraft.server.v1_6_R1.MinecraftServer.run(MinecraftServer.java:420) at net.minecraft.server.v1_6_R1.ThreadServerApplication.run(SourceFile:582) A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Stacktrace: at net.minecraft.server.v1_6_R1.Packet56MapChunkBulk.<init>(Packet56MapChunkBulk.java:50) at net.minecraft.server.v1_6_R1.EntityPlayer.l_(EntityPlayer.java:200) at net.minecraft.server.v1_6_R1.World.entityJoinedWorld(World.java:1354) at net.minecraft.server.v1_6_R1.World.playerJoinedWorld(World.java:1335) -- Entity being ticked -- Details: Entity Type: null (net.minecraft.server.v1_6_R1.EntityPlayer) Entity ID: 28621871 Entity Name: BigMike65 Entity's Exact location: -1819.72, 63.00, -1800.48 Entity's Block location: World: (-1820,63,-1801), Chunk: (at 4,3,7 in -114,-113; contains blocks -1824,0,-1808 to -1809,255,-1793), Region: (-4,-4; contains chunks -128,-128 to -97,-97, blocks -2048,0,-2048 to -1537,255,-1537) Entity's Momentum: 0.00, 0.00, 0.00 Stacktrace: at net.minecraft.server.v1_6_R1.World.tickEntities(World.java:1223) at net.minecraft.server.v1_6_R1.WorldServer.tickEntities(WorldServer.java:480) -- Affected level -- Details: Level name: spawn All players: 1 total; [EntityPlayer['BigMike65'/28621871, l='spawn', x=-1819.72, y=63.00, z=-1800.48](BigMike65 at -1819.724397379612,63.0,-1800.4823723305442)] Chunk stats: ServerChunkCache: 697 Drop: 0 Level seed: -5786777329714971956 Level generator: ID 00 - default, ver 1. Features enabled: true Level generator options: Level spawn location: World: (-2,64,190), Chunk: (at 14,4,14 in -1,11; contains blocks -16,0,176 to -1,255,191), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511) Level time: 1302977 game time, 1334799 day time Level dimension: 0 Level storage version: 0x04ABD - Anvil Level weather: Rain time: 76667 (now: false), thunder time: 106288 (now: false) Level game mode: Game mode: survival (ID 0). Hardcore: false. Cheats: false Stacktrace: at net.minecraft.server.v1_6_R1.MinecraftServer.t(MinecraftServer.java:573) at net.minecraft.server.v1_6_R1.DedicatedServer.t(DedicatedServer.java:226) at net.minecraft.server.v1_6_R1.MinecraftServer.s(MinecraftServer.java:487) at net.minecraft.server.v1_6_R1.MinecraftServer.run(MinecraftServer.java:420) at net.minecraft.server.v1_6_R1.ThreadServerApplication.run(SourceFile:582) -- System Details -- Details: Minecraft Version: 1.6.1 Operating System: Linux (amd64) version 2.6.32-042stab076.5 Java Version: 1.7.0_07, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 69813448 bytes (66 MB) / 972357632 bytes (927 MB) up to 972357632 bytes (927 MB) JVM Flags: 1 total; -Xmx1024M AABB Pool Size: 14834 (830704 bytes; 0 MB) allocated, 3 (168 bytes; 0 MB) used Suspicious classes: $Proxy3, $Proxy5, $Proxy16, ...[com.avaje.ebean.EbeanServer], [com.avaje.ebean.config.dbplatform.DatabasePlatform, SQLitePlatform], [com.mysql.jdbc.NonRegisteringDriver, Driver, StringUtils, ...], [com.mysql.jdbc.exceptions.MySQLTransientException, MySQLTimeoutException, MySQLNonTransientException, ...], [com.mysql.jdbc.exceptions.jdbc4.CommunicationsException], [com.mysql.jdbc.log.Log, StandardLogger, NullLogger, ...], [com.mysql.jdbc.util.LRUCache, ReadAheadInputStream], [net.minecraft.server.v1_6_R1.ICommandListener, IMojangStatistics, ICommandHandler, ...], [org.bukkit.BlockChangeDelegate, World, Server, ...], [org.bukkit.block.BlockState, BlockFace, Block, ...], [org.bukkit.command.CommandSender, RemoteConsoleCommandSender, CommandException, ...], [org.bukkit.command.defaults.VanillaCommand, SaveCommand, SaveOnCommand, ...], [org.bukkit.configuration.ConfigurationSection, Configuration, MemorySection, ...], [org.bukkit.configuration.file.FileConfiguration, YamlConfiguration, FileConfigurationOptions, ...], [org.bukkit.configuration.serialization.ConfigurationSerializable, ConfigurationSerialization, DelegateDeserialization, ...], [org.bukkit.conversations.Conversable, ConversationCanceller, Prompt, ...], [org.bukkit.craftbukkit.Main], [org.bukkit.craftbukkit.libs.com.google.gson.JsonDeserializer, JsonParseException, GsonBuilder, ...], [org.bukkit.craftbukkit.libs.com.google.gson.annotations.SerializedName], [org.bukkit.craftbukkit.libs.com.google.gson.internal.Excluder, $Gson$Preconditions, $Gson$Types, ...], [org.bukkit.craftbukkit.libs.com.google.gson.internal.bind.JsonTreeReader, JsonTreeWriter, TypeAdapters, ...], [org.bukkit.craftbukkit.libs.com.google.gson.reflect.TypeToken], [org.bukkit.craftbukkit.libs.com.google.gson.stream.JsonReader, JsonWriter, MalformedJsonException, ...], [org.bukkit.craftbukkit.libs.jline.Terminal, TerminalSupport, UnsupportedTerminal, ...], [org.bukkit.craftbukkit.libs.jline.console.ConsoleReader, CursorBuffer, ConsoleKeys, ...], [org.bukkit.craftbukkit.libs.jline.console.completer.CompletionHandler, CandidateListCompletionHandler], [org.bukkit.craftbukkit.libs.jline.console.history.History, MemoryHistory], [org.bukkit.craftbukkit.libs.jline.internal.InputStreamReader, Configuration, Log], [org.bukkit.craftbukkit.v1_6_R1.LoggerOutputStream, CraftServer, CraftOfflinePlayer, ...], [org.bukkit.craftbukkit.v1_6_R1.block.CraftBlock, CraftBlockState, CraftSign, ...], [org.bukkit.craftbukkit.v1_6_R1.chunkio.ChunkIOExecutor, ChunkIOProvider, QueuedChunk], [org.bukkit.craftbukkit.v1_6_R1.command.ServerCommandSender, CraftConsoleCommandSender, ColouredConsoleSender, ...], [org.bukkit.craftbukkit.v1_6_R1.conversations.ConversationTracker], [org.bukkit.craftbukkit.v1_6_R1.enchantments.CraftEnchantment], [org.bukkit.craftbukkit.v1_6_R1.entity.CraftEntity, CraftLivingEntity, CraftHumanEntity, ...], [org.bukkit.craftbukkit.v1_6_R1.event.CraftEventFactory], [org.bukkit.craftbukkit.v1_6_R1.generator.InternalChunkGenerator, CustomChunkGenerator, NormalChunkGenerator, ...], [org.bukkit.craftbukkit.v1_6_R1.help.SimpleHelpMap, CommandAliasHelpTopic, HelpYamlReader, ...], [org.bukkit.craftbukkit.v1_6_R1.inventory.CraftItemStack, CraftRecipe, CraftShapedRecipe, ...], [org.bukkit.craftbukkit.v1_6_R1.metadata.EntityMetadataStore, PlayerMetadataStore, WorldMetadataStore, ...], [org.bukkit.craftbukkit.v1_6_R1.potion.CraftPotionEffectType, CraftPotionBrewer], [org.bukkit.craftbukkit.v1_6_R1.scheduler.CraftScheduler, CraftTask, CraftAsyncTask, ...], [org.bukkit.craftbukkit.v1_6_R1.scoreboard.CraftScoreboardManager, CraftScoreboard, CraftScoreboardTranslations, ...], [org.bukkit.craftbukkit.v1_6_R1.updater.AutoUpdater, BukkitDLUpdaterService, DateDeserializer, ...], [org.bukkit.craftbukkit.v1_6_R1.util.ServerShutdownThread, Waitable, TerminalConsoleHandler, ...], [org.bukkit.enchantments.Enchantment, EnchantmentWrapper], [org.bukkit.entity.Entity, Damageable, LivingEntity, ...], [org.bukkit.entity.minecart.PoweredMinecart, StorageMinecart, ExplosiveMinecart, ...], [org.bukkit.event.Event, Cancellable, Listener, ...], [org.bukkit.event.block.BlockEvent, BlockFadeEvent, BlockGrowEvent, ...], [org.bukkit.event.enchantment.EnchantItemEvent, PrepareItemEnchantEvent], [org.bukkit.event.entity.EntityEvent, EntityInteractEvent, EntityDamageEvent, ...], [org.bukkit.event.hanging.HangingEvent, HangingPlaceEvent, HangingBreakEvent, ...], [org.bukkit.event.inventory.InventoryMoveItemEvent, InventoryEvent, PrepareItemCraftEvent, ...], [org.bukkit.event.painting.PaintingEvent, PaintingPlaceEvent, PaintingBreakEvent, ...], [org.bukkit.event.player.PlayerEvent, PlayerFishEvent, PlayerJoinEvent, ...], [org.bukkit.event.server.ServerEvent, MapInitializeEvent, ServerCommandEvent, ...], [org.bukkit.event.vehicle.VehicleEvent, VehicleCollisionEvent, VehicleBlockCollisionEvent, ...], [org.bukkit.event.weather.WeatherEvent, ThunderChangeEvent, WeatherChangeEvent, ...], [org.bukkit.event.world.WorldEvent, WorldInitEvent, WorldSaveEvent, ...], [org.bukkit.generator.ChunkGenerator], [org.bukkit.help.HelpMap, HelpTopic, IndexHelpTopic, ...], [org.bukkit.inventory.ItemStack, Inventory, Recipe, ...], [org.bukkit.inventory.meta.ItemMeta, Repairable, BookMeta, ...], [org.bukkit.map.MapView, MapFont, MinecraftFont, ...], [org.bukkit.material.MaterialData, Tree, Directional, ...], [org.bukkit.metadata.Metadatable, MetadataStore, MetadataStoreBase], [org.bukkit.permissions.ServerOperator, Permissible, PermissionDefault, ...], [org.bukkit.plugin.ServicesManager, PluginManager, SimpleServicesManager, ...], [org.bukkit.plugin.java.JavaPluginLoader, PluginClassLoader, JavaPlugin], [org.bukkit.plugin.messaging.PluginMessageRecipient, Messenger, StandardMessenger, ...], [org.bukkit.potion.PotionEffectType, PotionEffectTypeWrapper, PotionBrewer, ...], [org.bukkit.scheduler.BukkitScheduler, BukkitTask, BukkitWorker], [org.bukkit.scoreboard.ScoreboardManager, DisplaySlot, Scoreboard, ...], [org.bukkit.util.Vector, BlockVector, Java15Compat, ...], [org.bukkit.util.permissions.DefaultPermissions, CommandPermissions, BroadcastPermissions], [org.fusesource.jansi.Ansi, NoAnsi, Attribute, ...], [org.json.simple.JSONAware, JSONStreamAware, JSONObject, ...], [org.json.simple.parser.ParseException, JSONParser, Yylex, ...], [org.sqlite.JDBC, Conn, SQLiteConfig, ...], [org.yaml.snakeyaml.DumperOptions, ScalarStyle, FlowStyle, ...], [org.yaml.snakeyaml.composer.Composer, ComposerException], [org.yaml.snakeyaml.constructor.BaseConstructor, SafeConstructor, Constructor, ...], [org.yaml.snakeyaml.emitter.Emitable, Emitter, EmitterState, ...], [org.yaml.snakeyaml.error.YAMLException, MarkedYAMLException, Mark], [org.yaml.snakeyaml.events.Event, NodeEvent, ScalarEvent, ...], [org.yaml.snakeyaml.external.com.google.gdata.util.common.base.Escaper, UnicodeEscaper, PercentEscaper], [org.yaml.snakeyaml.introspector.PropertyUtils, BeanAccess, Property, ...], [org.yaml.snakeyaml.nodes.Node, CollectionNode, MappingNode, ...], [org.yaml.snakeyaml.parser.Parser, ParserImpl, Production, ...], [org.yaml.snakeyaml.reader.UnicodeReader, StreamReader, ReaderException], [org.yaml.snakeyaml.representer.BaseRepresenter, SafeRepresenter, Representer, ...], [org.yaml.snakeyaml.resolver.Resolver, ResolverTuple], [org.yaml.snakeyaml.scanner.Scanner, ScannerImpl, ScannerException, ...], [org.yaml.snakeyaml.serializer.Serializer, SerializerException], [org.yaml.snakeyaml.tokens.Token, AliasToken, ScalarToken, ...], [org.yaml.snakeyaml.util.UriEncoder, ArrayStack] IntCache: cache: 0, tcache: 0, allocated: 1, tallocated: 63 CraftBukkit Information: Running: CraftBukkit version git-Bukkit-1.5.2-R1.0-2-ga359c7f-b2794jnks (MC: 1.6.1) (Implementing API version 1.6.1-R0.1-SNAPSHOT) true Plugins: { WorldBorder v1.7.2 com.wimbli.WorldBorder.WorldBorder [Brettflan], WorldEdit v5.5.7 com.sk89q.worldedit.bukkit.WorldEditPlugin [], BukkitCompat vR22A com.mcmyadmin.bukkitcompat.BukkitCompat [PhonicUK], BattleTracker v2.5.3.7.1 mc.alk.tracker.Tracker [alkarin], SwearFilter v1.0 me.FibreGuy.MainClass [], mcore v6.4.2 com.massivecraft.mcore.MCore [Cayorion], VoteMe v3.0 me.RobTheBig.VoteMe.VoteMe [], War v1.8-PREVIEW (Nimitz) com.tommytony.war.War [tommytony], Vault v1.2.25-b320 net.milkbowl.vault.Vault [cereal, Sleaker, mung3r], PlayerHeads v3.2-jenkins-PlayerHeads-1-11-gb37e970 org.shininet.bukkit.playerheads.PlayerHeads [meiskam, zand], PermissionsEx v1.19.5 ru.tehkode.permissions.bukkit.PermissionsEx [t3hk0d3], PlotMe v0.13b com.worldcretornica.plotme.PlotMe [ZachBora], Multiverse-Core v2.4-b527 com.onarandombox.MultiverseCore.MultiverseCore [Rigby, fernferret, lithium3141, main--], HealthBar v1.6 com.gmail.filoghost.healthbar.Main [filoghost], TPCoords v1.2 me.thebutlah.tpcoords.TPCoords [], WorldGuard v5.7.3 com.sk89q.worldguard.bukkit.WorldGuardPlugin [], PwingArmory v0.0.2 me.Cronos79.PwingArmory.PwingArmory [Cronos79, Tara81], SurvivalGames v0.5.8.42 org.mcsg.survivalgames.SurvivalGames [Double0negative], Announcer v1.3.4 me.declanmc96.Announcer.announcer [declanmc96], ItemRenamer v1.0.6 net.bukkit.faris.itemrenamer.ItemRenamer [KingFaris10], TreasureChest v8.4.1 com.mtihc.minecraft.treasurechest.v8.plugin.TreasureChestPlugin [Mtihc], CapsLock v1.0.3 net.mysticrealms.fireworks.capslock.CapsLock [Fireworks], Modifyworld v1.19.4 ru.tehkode.modifyworld.bukkit.Modifyworld [t3hk0d3], Votifier v1.9 com.vexsoftware.votifier.Votifier [blakeman8192, Kramer], Essentials v2.10.1 com.earth2me.essentials.Essentials [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits, md_5, Iaccidentally], EssentialsProtect v2.10.1 com.earth2me.essentials.protect.EssentialsProtect [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits], EssentialsSpawn v2.10.1 com.earth2me.essentials.spawn.EssentialsSpawn [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits], Multiverse-Portals v2.4-b548 com.onarandombox.MultiversePortals.MultiversePortals [Rigby, fernferret], Multiverse-Inventories v2.5-b335 com.onarandombox.multiverseinventories.MultiverseInventories [dumptruckman], Enjin Minecraft Plugin v2.4.5-bukkit com.enjin.officialplugin.EnjinMinecraftPlugin [www.Enjin.com], EssentialsChat v2.10.1 com.earth2me.essentials.chat.EssentialsChat [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits, md_5, Okamosy, Iaccidentally], Factions v2.0.2 com.massivecraft.factions.Factions [Cayorion, Brettflan],} Warnings: DEFAULT Threads: { TIMED_WAITING com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1: [java.lang.Object.wait(Native Method), com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:534)], RUNNABLE Thread-12: [java.net.PlainSocketImpl.socketAccept(Native Method), java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:398), java.net.ServerSocket.implAccept(ServerSocket.java:522), java.net.ServerSocket.accept(ServerSocket.java:490), com.vexsoftware.votifier.net.VoteReceiver.run(VoteReceiver.java:114)], TIMED_WAITING com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0: [java.lang.Object.wait(Native Method), com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:534)], TIMED_WAITING Connection #2290 write thread: [java.lang.Thread.sleep(Native Method), net.minecraft.server.v1_6_R1.NetworkWriterThread.run(NetworkWriterThread.java:38)], TIMED_WAITING Connection #2602 write thread: [java.lang.Thread.sleep(Native Method), net.minecraft.server.v1_6_R1.NetworkWriterThread.run(NetworkWriterThread.java:38)], TIMED_WAITING Timer-0: [java.lang.Object.wait(Native Method), java.util.TimerThread.mainLoop(Timer.java:552), java.util.TimerThread.run(Timer.java:505)], WAITING Finalizer: [java.lang.Object.wait(Native Method), java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135), java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151), java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:177)], TIMED_WAITING Thread-4: [java.lang.Thread.sleep(Native Method), net.minecraft.server.v1_6_R1.ThreadSleepForever.run(SourceFile:64)], RUNNABLE Thread-5: [java.io.FileInputStream.readBytes(Native Method), java.io.FileInputStream.read(FileInputStream.java:242), java.io.BufferedInputStream.fill(BufferedInputStream.java:235), java.io.BufferedInputStream.read(BufferedInputStream.java:254), java.io.FilterInputStream.read(FilterInputStream.java:83), org.bukkit.craftbukkit.libs.jline.console.ConsoleReader$1.read(ConsoleReader.java:167), org.bukkit.craftbukkit.libs.jline.internal.InputStreamReader.read(InputStreamReader.java:267), org.bukkit.craftbukkit.libs.jline.internal.InputStreamReader.read(InputStreamReader.java:204), org.bukkit.craftbukkit.libs.jline.console.ConsoleReader.readCharacter(ConsoleReader.java:995), org.bukkit.craftbukkit.libs.jline.console.ConsoleReader.readLineSimple(ConsoleReader.java:1506), org.bukkit.craftbukkit.libs.jline.console.ConsoleReader.readLine(ConsoleReader.java:1153), org.bukkit.craftbukkit.libs.jline.console.ConsoleReader.readLine(ConsoleReader.java:1117), org.bukkit.craftbukkit.libs.jline.console.ConsoleReader.readLine(ConsoleReader.java:1105), net.minecraft.server.v1_6_R1.ThreadCommandReader.run(ThreadCommandReader.java:33)], TIMED_WAITING pool-1-thread-759: [sun.misc.Unsafe.park(Native Method), java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226), java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460), java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:359), java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:942), java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1043), java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1103), java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603), java.lang.Thread.run(Thread.java:722)], WAITING MV-Inv Profile Write Thread: [sun.misc.Unsafe.park(Native Method), java.util.concurrent.locks.LockSupport.park(LockSupport.java:186), java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043), java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442), com.onarandombox.multiverseinventories.util.data.FlatFilePlayerData$FileWriteThread.run(FlatFilePlayerData.java:208)], WAITING Chunk I/O Executor Thread-1: [sun.misc.Unsafe.park(Native Method), java.util.concurrent.locks.LockSupport.park(LockSupport.java:186), java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043), java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442), java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1043), java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1103), java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603), java.lang.Thread.run(Thread.java:722)], WAITING Reference Handler: [java.lang.Object.wait(Native Method), java.lang.Object.wait(Object.java:503), java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)], RUNNABLE Server thread: [java.lang.Thread.dumpThreads(Native Method), java.lang.Thread.getAllStackTraces(Thread.java:1618), org.bukkit.craftbukkit.v1_6_R1.CraftCrashReport.call(CraftCrashReport.java:28), net.minecraft.server.v1_6_R1.CrashReportSystemDetails.a(SourceFile:74), net.minecraft.server.v1_6_R1.CrashReport.h(CrashReport.java:41), net.minecraft.server.v1_6_R1.CrashReport.<init>(CrashReport.java:28), net.minecraft.server.v1_6_R1.CrashReport.a(CrashReport.java:212), net.minecraft.server.v1_6_R1.World.tickEntities(World.java:1225), net.minecraft.server.v1_6_R1.WorldServer.tickEntities(WorldServer.java:480), net.minecraft.server.v1_6_R1.MinecraftServer.t(MinecraftServer.java:573), net.minecraft.server.v1_6_R1.DedicatedServer.t(DedicatedServer.java:226), net.minecraft.server.v1_6_R1.MinecraftServer.s(MinecraftServer.java:487), net.minecraft.server.v1_6_R1.MinecraftServer.run(MinecraftServer.java:420), net.minecraft.server.v1_6_R1.ThreadServerApplication.run(SourceFile:582)], RUNNABLE Connection #2612 write thread: [net.minecraft.v1_6_R1.org.bouncycastle.crypto.engines.AESFastEngine.processBlock(Unknown Source), net.minecraft.v1_6_R1.org.bouncycastle.crypto.modes.CFBBlockCipher.encryptBlock(Unknown Source), net.minecraft.v1_6_R1.org.bouncycastle.crypto.modes.CFBBlockCipher.processBlock(Unknown Source), net.minecraft.v1_6_R1.org.bouncycastle.crypto.BufferedBlockCipher.processBytes(Unknown Source), net.minecraft.v1_6_R1.org.bouncycastle.crypto.io.CipherOutputStream.write(Unknown Source), java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82), java.io.BufferedOutputStream.write(BufferedOutputStream.java:121), java.io.DataOutputStream.write(DataOutputStream.java:107), net.minecraft.server.v1_6_R1.Packet56MapChunkBulk.a(Packet56MapChunkBulk.java:157), net.minecraft.server.v1_6_R1.Packet.a(Packet.java:138), net.minecraft.server.v1_6_R1.NetworkManager.h(NetworkManager.java:101), net.minecraft.server.v1_6_R1.NetworkManager.d(NetworkManager.java:351), net.minecraft.server.v1_6_R1.NetworkWriterThread.run(NetworkWriterThread.java:21)], TIMED_WAITING Connection #2418 write thread: [java.lang.Thread.sleep(Native Method), net.minecraft.server.v1_6_R1.NetworkWriterThread.run(NetworkWriterThread.java:38)], RUNNABLE Listen thread: [java.net.PlainSocketImpl.socketAccept(Native Method), java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:398), java.net.ServerSocket.implAccept(ServerSocket.java:522), java.net.ServerSocket.accept(ServerSocket.java:490), net.minecraft.server.v1_6_R1.DedicatedServerConnectionThread.run(DedicatedServerConnectionThread.java:59)], TIMED_WAITING com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2: [java.lang.Object.wait(Native Method), com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:534)], RUNNABLE Connection #2596 read thread: [java.net.SocketInputStream.socketRead0(Native Method), java.net.SocketInputStream.read(SocketInputStream.java:150), java.net.SocketInputStream.read(SocketInputStream.java:121), java.io.FilterInputStream.read(FilterInputStream.java:133), net.minecraft.v1_6_R1.org.bouncycastle.crypto.io.CipherInputStream.nextChunk(Unknown Source), net.minecraft.v1_6_R1.org.bouncycastle.crypto.io.CipherInputStream.read(Unknown Source), java.io.DataInputStream.readUnsignedByte(DataInputStream.java:288), net.minecraft.server.v1_6_R1.Packet.a(Packet.java:96), net.minecraft.server.v1_6_R1.NetworkManager.i(NetworkManager.java:193), net.minecraft.server.v1_6_R1.NetworkManager.c(NetworkManager.java:347), net.minecraft.server.v1_6_R1.NetworkReaderThread.run(SourceFile:93)], RUNNABLE Connection #2602 read thread: [java.net.SocketInputStream.socketRead0(Native Method), java.net.SocketInputStream.read(SocketInputStream.java:150), java.net.SocketInputStream.read(SocketInputStream.java:121), java.io.FilterInputStream.read(FilterInputStream.java:133), net.minecraft.v1_6_R1.org.bouncycastle.crypto.io.CipherInputStream.nextChunk(Unknown Source), net.minecraft.v1_6_R1.org.bouncycastle.crypto.io.CipherInputStream.read(Unknown Source), java.io.DataInputStream.readUnsignedByte(DataInputStream.java:288), net.minecraft.server.v1_6_R1.Packet.a(Packet.java:96), net.minecraft.server.v1_6_R1.NetworkManager.i(NetworkManager.java:193), net.minecraft.server.v1_6_R1.NetworkManager.c(NetworkManager.java:347), net.minecraft.server.v1_6_R1.NetworkReaderThread.run(SourceFile:93)], RUNNABLE Signal Dispatcher: [], RUNNABLE DestroyJavaVM: [], TIMED_WAITING Snooper Timer: [java.lang.Object.wait(Native Method), java.util.TimerThread.mainLoop(Timer.java:552), java.util.TimerThread.run(Timer.java:505)], TIMED_WAITING pool-1-thread-752: [sun.misc.Unsafe.park(Native Method), java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226), java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460), java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:359), java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:942), java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1043), java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1103), java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603), java.lang.Thread.run(Thread.java:722)], RUNNABLE Connection #2612 read thread: [java.net.SocketInputStream.socketRead0(Native Method), java.net.SocketInputStream.read(SocketInputStream.java:150), java.net.SocketInputStream.read(SocketInputStream.java:121), java.io.FilterInputStream.read(FilterInputStream.java:133), net.minecraft.v1_6_R1.org.bouncycastle.crypto.io.CipherInputStream.nextChunk(Unknown Source), net.minecraft.v1_6_R1.org.bouncycastle.crypto.io.CipherInputStream.read(Unknown Source), java.io.DataInputStream.readUnsignedByte(DataInputStream.java:288), net.minecraft.server.v1_6_R1.Packet.a(Packet.java:96), net.minecraft.server.v1_6_R1.NetworkManager.i(NetworkManager.java:193), net.minecraft.server.v1_6_R1.NetworkManager.c(NetworkManager.java:347), net.minecraft.server.v1_6_R1.NetworkReaderThread.run(SourceFile:93)], TIMED_WAITING Connection #2448 write thread: [java.lang.Thread.sleep(Native Method), net.minecraft.server.v1_6_R1.NetworkWriterThread.run(NetworkWriterThread.java:38)], RUNNABLE Connection #2448 read thread: [java.net.SocketInputStream.socketRead0(Native Method), java.net.SocketInputStream.read(SocketInputStream.java:150), java.net.SocketInputStream.read(SocketInputStream.java:121), java.io.FilterInputStream.read(FilterInputStream.java:133), net.minecraft.v1_6_R1.org.bouncycastle.crypto.io.CipherInputStream.nextChunk(Unknown Source), net.minecraft.v1_6_R1.org.bouncycastle.crypto.io.CipherInputStream.read(Unknown Source), java.io.DataInputStream.readUnsignedByte(DataInputStream.java:288), net.minecraft.server.v1_6_R1.Packet.a(Packet.java:96), net.minecraft.server.v1_6_R1.NetworkManager.i(NetworkManager.java:193), net.minecraft.server.v1_6_R1.NetworkManager.c(NetworkManager.java:347), net.minecraft.server.v1_6_R1.NetworkReaderThread.run(SourceFile:93)], WAITING PermissionsEx-Cleaner: [java.lang.Object.wait(Native Method), java.lang.Object.wait(Object.java:503), java.util.TimerThread.mainLoop(Timer.java:526), java.util.TimerThread.run(Timer.java:505)], RUNNABLE Connection #2290 read thread: [java.net.SocketInputStream.socketRead0(Native Method), java.net.SocketInputStream.read(SocketInputStream.java:150), java.net.SocketInputStream.read(SocketInputStream.java:121), java.io.FilterInputStream.read(FilterInputStream.java:133), net.minecraft.v1_6_R1.org.bouncycastle.crypto.io.CipherInputStream.nextChunk(Unknown Source), net.minecraft.v1_6_R1.org.bouncycastle.crypto.io.CipherInputStream.read(Unknown Source), java.io.DataInputStream.readUnsignedByte(DataInputStream.java:288), net.minecraft.server.v1_6_R1.Packet.a(Packet.java:96), net.minecraft.server.v1_6_R1.NetworkManager.i(NetworkManager.java:193), net.minecraft.server.v1_6_R1.NetworkManager.c(NetworkManager.java:347), net.minecraft.server.v1_6_R1.NetworkReaderThread.run(SourceFile:93)], TIMED_WAITING MStore ExamineThread: [java.lang.Thread.sleep(Native Method), com.massivecraft.mcore.store.ExamineThread.run(ExamineThread.java:55)], RUNNABLE Connection #2418 read thread: [java.net.SocketInputStream.socketRead0(Native Method), java.net.SocketInputStream.read(SocketInputStream.java:150), java.net.SocketInputStream.read(SocketInputStream.java:121), java.io.FilterInputStream.read(FilterInputStream.java:133), net.minecraft.v1_6_R1.org.bouncycastle.crypto.io.CipherInputStream.nextChunk(Unknown Source), net.minecraft.v1_6_R1.org.bouncycastle.crypto.io.CipherInputStream.read(Unknown Source), java.io.DataInputStream.readUnsignedByte(DataInputStream.java:288), net.minecraft.server.v1_6_R1.Packet.a(Packet.java:96), net.minecraft.server.v1_6_R1.NetworkManager.i(NetworkManager.java:193), net.minecraft.server.v1_6_R1.NetworkManager.c(NetworkManager.java:347), net.minecraft.server.v1_6_R1.NetworkReaderThread.run(SourceFile:93)], TIMED_WAITING File IO Thread: [java.lang.Thread.sleep(Native Method), net.minecraft.server.v1_6_R1.FileIOThread.b(SourceFile:44), net.minecraft.server.v1_6_R1.FileIOThread.run(SourceFile:23), java.lang.Thread.run(Thread.java:722)], TIMED_WAITING pool-1-thread-760: [sun.misc.Unsafe.park(Native Method), java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226), java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460), java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:359), java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:942), java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1043), java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1103), java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603), java.lang.Thread.run(Thread.java:722)], TIMED_WAITING Connection #2596 write thread: [java.lang.Thread.sleep(Native Method), net.minecraft.server.v1_6_R1.NetworkWriterThread.run(NetworkWriterThread.java:38)],} Recent tasks from 1302947-1302977{Enjin Minecraft Plugin:com.enjin.officialplugin.threaded.PeriodicVoteTask@1302989,Enjin Minecraft Plugin:com.enjin.officialplugin.tpsmeter.MonitorTPS@1302989,WorldEdit:com.sk89q.worldedit.bukkit.SessionTimer@1302989,} Profiler Position: N/A (disabled) Vec3 Pool Size: ~~ERROR~~ NullPointerException: null Player Count: 6 / 40; [EntityPlayer['Sto0ge'/25425658, l='SG', x=11.35, y=62.00, z=10.74](Sto0ge at 11.345391638242058,62.0,10.742800038547719), EntityPlayer['FlamedDiamond'/26855622, l='SG', x=-3.30, y=97.17, z=64.96](FlamedDiamond at -3.3000000119209325,97.1707870772188,64.96266148772278), EntityPlayer['MinemasterZXQ'/28592368, l='wild', x=155.15, y=10.00, z=460.70](MinemasterZXQ at 155.14901584467503,10.0,460.69999998807907), EntityPlayer['tthan'/28600651, l='wild', x=-55.52, y=69.70, z=38.70](tthan at -55.52068873012064,69.7000000178814,38.699999988079064), EntityPlayer['empise_WIN'/23683765, l='wild', x=157.38, y=10.00, z=473.58](empise_WIN at 157.38440226393405,10.0,473.58445274915766), EntityPlayer['BigMike65'/28621871, l='spawn', x=-1819.72, y=63.00, z=-1800.48](BigMike65 at -1819.724397379612,63.0,-1800.4823723305442)] Is Modded: Definitely; Server brand changed to 'craftbukkit' Type: Dedicated Server (map_server.txt)
HADES-GOD / 0.000000 Linux Version 3.3.8 Cindy Cindy Laptop Gcc Version 4.6.3 20120201 Prerelease Lina0.000000] Linux version 3.3.8 (cindy@cindy-laptop) (gcc version 4.6.3 20120201 (prerelease) (Linaro GCC 4.6-2012.02) ) #6 Thu Jan 10 11:39:41 WIT 2013 [ 0.000000] MyLoader: sysp=8b8b81ac, boardp=96e34c72, parts=b298aa77 [ 0.000000] bootconsole [early0] enabled [ 0.000000] CPU revision is: 0001974c (MIPS 74Kc) [ 0.000000] SoC: Atheros AR9341 rev 3 [ 0.000000] Clocks: CPU:535.000MHz, DDR:400.000MHz, AHB:200.000MHz, Ref:25.000MHz [ 0.000000] Determined physical RAM map: [ 0.000000] memory: 02000000 @ 00000000 (usable) [ 0.000000] Initrd not found or empty - disabling initrd [ 0.000000] Zone PFN ranges: [ 0.000000] Normal 0x00000000 -> 0x00002000 [ 0.000000] Movable zone start PFN for each node [ 0.000000] Early memory PFN ranges [ 0.000000] 0: 0x00000000 -> 0x00002000 [ 0.000000] On node 0 totalpages: 8192 [ 0.000000] free_area_init_node: node 0, pgdat 802d6270, node_mem_map 81000000 [ 0.000000] Normal zone: 64 pages used for memmap [ 0.000000] Normal zone: 0 pages reserved [ 0.000000] Normal zone: 8128 pages, LIFO batch:0 [ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768 [ 0.000000] pcpu-alloc: [0] 0 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128 [ 0.000000] Kernel command line: board=TL-WR841N-v8 console=ttyS0,115200 rootfstype=squashfs,jffs2 noinitrd [ 0.000000] PID hash table entries: 128 (order: -3, 512 bytes) [ 0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes) [ 0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes. [ 0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes [ 0.000000] Writing ErrCtl register=00000000 [ 0.000000] Readback ErrCtl register=00000000 [ 0.000000] Memory: 29112k/32768k available (2115k kernel code, 3656k reserved, 406k data, 212k init, 0k highmem) [ 0.000000] SLUB: Genslabs=9, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] NR_IRQS:51 [ 0.000000] Calibrating delay loop... 266.64 BogoMIPS (lpj=1333248) [ 0.080000] pid_max: default: 32768 minimum: 301 [ 0.080000] Mount-cache hash table entries: 512 [ 0.090000] NET: Registered protocol family 16 [ 0.090000] gpiochip_add: registered GPIOs 0 to 22 on device: ath79 [ 0.100000] MIPS: machine is TP-LINK TL-MR3420 v2 | TP-LINK TL-WR841N/ND v8 [ 0.520000] bio: create slab <bio-0> at 0 [ 0.520000] Switching to clocksource MIPS [ 0.530000] NET: Registered protocol family 2 [ 0.530000] IP route cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.540000] TCP established hash table entries: 1024 (order: 1, 8192 bytes) [ 0.550000] TCP bind hash table entries: 1024 (order: 0, 4096 bytes) [ 0.550000] TCP: Hash tables configured (established 1024 bind 1024) [ 0.560000] TCP reno registered [ 0.560000] UDP hash table entries: 256 (order: 0, 4096 bytes) [ 0.570000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) [ 0.570000] NET: Registered protocol family 1 [ 0.580000] PCI: CLS 0 bytes, default 32 [ 0.590000] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 0.600000] JFFS2 version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc. [ 0.610000] msgmni has been set to 56 [ 0.610000] io scheduler noop registered [ 0.620000] io scheduler deadline registered (default) [ 0.620000] Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled [ 0.650000] serial8250.0: ttyS0 at MMIO 0x18020000 (irq = 11) is a 16550A [ 0.660000] console [ttyS0] enabled, bootconsole disabled [ 0.670000] m25p80 spi0.0: found s25sl032a, expected m25p80 [ 0.680000] m25p80 spi0.0: s25sl032a (4096 Kbytes) [ 0.680000] 5 tp-link partitions found on MTD device spi0.0 [ 0.690000] Creating 5 MTD partitions on "spi0.0": [ 0.690000] 0x000000000000-0x000000020000 : "u-boot" [ 0.700000] 0x000000020000-0x000000101880 : "kernel" [ 0.710000] mtd: partition "kernel" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only [ 0.720000] 0x000000101880-0x0000003f0000 : "rootfs" [ 0.730000] mtd: partition "rootfs" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only [ 0.740000] mtd: partition "rootfs" set to be root filesystem [ 0.750000] mtd: partition "rootfs_data" created automatically, ofs=3A0000, len=50000 [ 0.750000] 0x0000003a0000-0x0000003f0000 : "rootfs_data" [ 0.760000] 0x0000003f0000-0x000000400000 : "art" [ 0.770000] 0x000000020000-0x0000003f0000 : "firmware" [ 0.790000] ag71xx_mdio: probed [ 0.800000] eth0: Atheros AG71xx at 0xb9000000, irq 4 [ 1.350000] ag71xx ag71xx.0: eth0: connected to PHY at ag71xx-mdio.1:00 [uid=004dd042, driver=Generic PHY] [ 1.370000] eth1: Atheros AG71xx at 0xba000000, irq 5 [ 1.920000] eth1: Found an AR934X built-in switch [ 2.960000] zram: num_devices not specified. Using default: 1 [ 2.960000] zram: Creating 1 devices ... [ 2.970000] TCP cubic registered [ 2.970000] NET: Registered protocol family 17 [ 2.980000] 8021q: 802.1Q VLAN Support v1.8 [ 2.990000] VFS: Mounted root (squashfs filesystem) readonly on device 31:2. [ 3.000000] Freeing unused kernel memory: 212k freed [ 5.010000] Registered led device: tp-link:green:lan1 [ 5.010000] Registered led device: tp-link:green:lan2 [ 5.010000] Registered led device: tp-link:green:lan3 [ 5.010000] Registered led device: tp-link:green:lan4 [ 5.010000] Registered led device: tp-link:green:qss [ 5.010000] Registered led device: tp-link:green:system [ 5.010000] Registered led device: tp-link:green:wan [ 5.020000] Registered led device: tp-link:green:wlan [ 8.300000] JFFS2 notice: (419) jffs2_build_xattr_subsystem: complete building xattr subsystem, 4 of xdatum (0 unchecked, 3 orphan) and 56 of xref (0 dead, 44 orphan) found. [ 9.010000] SCSI subsystem initialized [ 9.250000] usbcore: registered new interface driver usbfs [ 9.260000] usbcore: registered new interface driver hub [ 9.270000] usbcore: registered new device driver usb [ 9.780000] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 9.790000] ehci-platform ehci-platform: Generic Platform EHCI Controller [ 9.790000] ehci-platform ehci-platform: new USB bus registered, assigned bus number 1 [ 9.830000] ehci-platform ehci-platform: irq 3, io mem 0x1b000000 [ 9.850000] ehci-platform ehci-platform: USB 2.0 started, EHCI 1.00 [ 9.850000] hub 1-0:1.0: USB hub found [ 9.860000] hub 1-0:1.0: 1 port detected [ 9.960000] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 10.050000] uhci_hcd: USB Universal Host Controller Interface driver [ 10.150000] Initializing USB Mass Storage driver... [ 10.150000] usbcore: registered new interface driver usb-storage [ 10.160000] USB Mass Storage support registered. [ 31.940000] Compat-drivers backport release: compat-drivers-2012-09-04-2-gddac993 [ 31.940000] Backport based on wireless-testing.git master-2012-09-07 [ 31.950000] compat.git: wireless-testing.git [ 32.140000] cfg80211: Calling CRDA to update world regulatory domain [ 32.140000] cfg80211: World regulatory domain updated: [ 32.150000] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 32.160000] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 32.160000] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 32.170000] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 32.180000] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 32.190000] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 33.200000] ath: EEPROM regdomain: 0x0 [ 33.200000] ath: EEPROM indicates default country code should be used [ 33.200000] ath: doing EEPROM country->regdmn map search [ 33.200000] ath: country maps to regdmn code: 0x3a [ 33.200000] ath: Country alpha2 being used: US [ 33.200000] ath: Regpair used: 0x3a [ 33.210000] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht' [ 33.210000] Registered led device: ath9k-phy0 [ 33.210000] ieee80211 phy0: Atheros AR9340 Rev:0 mem=0xb8100000, irq=47 [ 33.230000] cfg80211: Calling CRDA for country: US [ 33.230000] cfg80211: Regulatory domain changed to country: US [ 33.240000] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 33.240000] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2700 mBm) [ 33.250000] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 1700 mBm) [ 33.260000] cfg80211: (5250000 KHz - 5330000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 33.270000] cfg80211: (5490000 KHz - 5600000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 33.280000] cfg80211: (5650000 KHz - 5710000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 33.280000] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 3000 mBm) [ 33.310000] NET: Registered protocol family 8 [ 33.320000] NET: Registered protocol family 20 [ 33.740000] PPP generic driver version 2.4.2 [ 33.780000] tun: Universal TUN/TAP device driver, 1.6 [ 33.780000] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com> [ 33.890000] ip_tables: (C) 2000-2006 Netfilter Core Team [ 34.100000] NET: Registered protocol family 24 [ 34.220000] nf_conntrack version 0.5.0 (458 buckets, 1832 max) [ 34.840000] usbcore: registered new interface driver cdc_acm [ 34.840000] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters [ 35.050000] usbcore: registered new interface driver usbserial [ 35.050000] USB Serial support registered for generic [ 35.060000] usbcore: registered new interface driver usbserial_generic [ 35.060000] usbserial: USB Serial Driver core [ 35.160000] USB Serial support registered for Sierra USB modem [ 35.160000] usbcore: registered new interface driver sierra [ 35.170000] sierra: v.1.7.40:USB Driver for Sierra Wireless USB modems [ 35.190000] usbcore: registered new interface driver sierra_net [ 35.230000] usbcore: registered new interface driver ums-alauda [ 35.250000] usbcore: registered new interface driver ums-cypress [ 35.280000] usbcore: registered new interface driver ums-datafab [ 35.300000] usbcore: registered new interface driver ums-freecom [ 35.320000] usbcore: registered new interface driver ums-isd200 [ 35.340000] usbcore: registered new interface driver ums-jumpshot [ 35.360000] usbcore: registered new interface driver ums-karma [ 35.380000] usbcore: registered new interface driver ums-sddr09 [ 35.410000] usbcore: registered new interface driver ums-sddr55 [ 35.430000] usbcore: registered new interface driver ums-usbat [ 35.520000] usbcore: registered new interface driver cdc_ether [ 35.610000] hso: drivers/net/usb/hso.c: Option Wireless [ 35.610000] usbcore: registered new interface driver hso [ 35.790000] usbcore: registered new interface driver rndis_host [ 35.990000] USB Serial support registered for ark3116 [ 35.990000] usbcore: registered new interface driver ark3116 [ 36.000000] ark3116:v0.7:USB ARK3116 serial/IrDA driver [ 36.090000] USB Serial support registered for Belkin / Peracom / GoHubs USB Serial Adapter [ 36.100000] usbcore: registered new interface driver belkin [ 36.110000] belkin_sa: v1.3:USB Belkin Serial converter driver [ 36.210000] USB Serial support registered for ch341-uart [ 36.210000] usbcore: registered new interface driver ch341 [ 36.300000] USB Serial support registered for cp210x [ 36.310000] usbcore: registered new interface driver cp210x [ 36.310000] cp210x: v0.09:Silicon Labs CP210x RS232 serial adaptor driver [ 36.330000] USB Serial support registered for DeLorme Earthmate USB [ 36.340000] USB Serial support registered for HID->COM RS232 Adapter [ 36.350000] USB Serial support registered for Nokia CA-42 V2 Adapter [ 36.350000] usbcore: registered new interface driver cypress [ 36.360000] cypress_m8: v1.10:Cypress USB to Serial Driver [ 36.450000] USB Serial support registered for FTDI USB Serial Device [ 36.460000] usbcore: registered new interface driver ftdi_sio [ 36.460000] ftdi_sio: v1.6.0:USB FTDI Serial Converters Driver [ 36.480000] USB Serial support registered for IPWireless converter [ 36.490000] usbcore: registered new interface driver ipwtty [ 36.490000] ipw: v0.4:IPWireless tty driver [ 36.590000] USB Serial support registered for Keyspan - (without firmware) [ 36.590000] USB Serial support registered for Keyspan 1 port adapter [ 36.600000] USB Serial support registered for Keyspan 2 port adapter [ 36.610000] USB Serial support registered for Keyspan 4 port adapter [ 36.610000] usbcore: registered new interface driver keyspan [ 36.620000] keyspan: v1.1.5:Keyspan USB to Serial Converter Driver [ 36.640000] USB Serial support registered for MCT U232 [ 36.650000] usbcore: registered new interface driver mct_u232 [ 36.650000] mct_u232: z2.1:Magic Control Technology USB-RS232 converter driver [ 36.680000] USB Serial support registered for Moschip 2 port adapter [ 36.690000] mos7720: 2.1:Moschip USB Serial Driver [ 36.690000] usbcore: registered new interface driver moschip7720 [ 36.710000] USB Serial support registered for moto-modem [ 36.720000] usbcore: registered new interface driver moto-modem [ 36.810000] USB Serial support registered for GSM modem (1-port) [ 36.810000] usbcore: registered new interface driver option [ 36.820000] option: v0.7.2:USB Driver for GSM modems [ 36.840000] USB Serial support registered for oti6858 [ 36.840000] usbcore: registered new interface driver oti6858 [ 36.870000] USB Serial support registered for pl2303 [ 36.870000] usbcore: registered new interface driver pl2303 [ 36.880000] pl2303: Prolific PL2303 USB to serial adaptor driver [ 36.900000] USB Serial support registered for Qualcomm USB modem [ 36.910000] usbcore: registered new interface driver qcserial [ 37.020000] USB Serial support registered for TI USB 3410 1 port adapter [ 37.020000] USB Serial support registered for TI USB 5052 2 port adapter [ 37.030000] usbcore: registered new interface driver ti_usb_3410_5052 [ 37.040000] ti_usb_3410_5052: v0.10:TI USB 3410/5052 Serial Driver [ 37.120000] USB Serial support registered for Handspring Visor / Palm OS [ 37.130000] USB Serial support registered for Sony Clie 3.5 [ 37.140000] USB Serial support registered for Sony Clie 5.0 [ 37.140000] usbcore: registered new interface driver visor [ 37.150000] visor: USB HandSpring Visor / Palm OS driver [ 41.780000] device eth1 entered promiscuous mode [ 42.380000] eth1: link up (1000Mbps/Full duplex) [ 42.380000] br-lan: port 1(eth1) entered forwarding state [ 42.390000] br-lan: port 1(eth1) entered forwarding state [ 44.390000] br-lan: port 1(eth1) entered forwarding state [ 45.490000] device wlan0 entered promiscuous mode [ 46.530000] br-lan: port 2(wlan0) entered forwarding state [ 46.540000] br-lan: port 2(wlan0) entered forwarding state [ 48.540000] br-lan: port 2(wlan0) entered forwarding state [ 58.970000] Adding 10236k swap on /dev/zram0. Priority:-1 extents:1 across:10236k SS
edipurmail / Adsbygoogle.js(function(){var aa="function"==typeof Object.create?Object.create:function(a){var b=function(){};b.prototype=a;return new b},ba;if("function"==typeof Object.setPrototypeOf)ba=Object.setPrototypeOf;else{var ca;a:{var ea={a:!0},fa={};try{fa.__proto__=ea;ca=fa.a;break a}catch(a){}ca=!1}ba=ca?function(a,b){a.__proto__=b;if(a.__proto__!==b)throw new TypeError(a+" is not extensible");return a}:null}var ha=ba,ia=function(a,b){a.prototype=aa(b.prototype);a.prototype.constructor=a;if(ha)ha(a,b);else for(var c in b)if("prototype"!=c)if(Object.defineProperties){var d=Object.getOwnPropertyDescriptor(b,c);d&&Object.defineProperty(a,c,d)}else a[c]=b[c];a.Ea=b.prototype},ja="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},ka="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this,la=function(a,b){if(b){var c=ka;a=a.split(".");for(var d=0;d<a.length-1;d++){var e=a[d];e in c||(c[e]={});c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&ja(c,a,{configurable:!0,writable:!0,value:b})}},ma="function"==typeof Object.assign?Object.assign:function(a,b){for(var c=1;c<arguments.length;c++){var d=arguments[c];if(d)for(var e in d)Object.prototype.hasOwnProperty.call(d,e)&&(a[e]=d[e])}return a};la("Object.assign",function(a){return a||ma});la("Number.isNaN",function(a){return a?a:function(a){return"number"===typeof a&&isNaN(a)}});var l=this,na=function(a){return"string"==typeof a},r=function(a){return"number"==typeof a},oa=function(){},t=function(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";else if("function"==b&&"undefined"==typeof a.call)return"object";return b},pa=function(a){var b=typeof a;return"object"==b&&null!=a||"function"==b},qa=function(a,b,c){return a.call.apply(a.bind,arguments)},ra=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return function(){return a.apply(b,arguments)}},sa=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?sa=qa:sa=ra;return sa.apply(null,arguments)},ta=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var b=c.slice();b.push.apply(b,arguments);return a.apply(this,b)}},ua=function(a,b){function c(){}c.prototype=b.prototype;a.Ea=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.Fa=function(a,c,f){for(var d=Array(arguments.length-2),e=2;e<arguments.length;e++)d[e-2]=arguments[e];return b.prototype[c].apply(a,d)}};var va=(new Date).getTime();var wa=document,v=window;var xa={"120x90":!0,"160x90":!0,"180x90":!0,"200x90":!0,"468x15":!0,"728x15":!0},ya=function(a,b){if(15==b){if(728<=a)return 728;if(468<=a)return 468}else if(90==b){if(200<=a)return 200;if(180<=a)return 180;if(160<=a)return 160;if(120<=a)return 120}return null};var za=function(a,b){a=parseInt(a,10);return isNaN(a)?b:a},Aa=/^([\w-]+\.)*([\w-]{2,})(:[0-9]+)?$/,Ba=function(a,b){return a?(a=a.match(Aa))?a[0]:b:b};var Ca=za("468",0);var Da=function(a,b){for(var c=a.length,d=na(a)?a.split(""):a,e=0;e<c;e++)e in d&&b.call(void 0,d[e],e,a)},Ea=function(a){return Array.prototype.concat.apply([],arguments)};var Fa=function(a,b){for(var c in a)if(b.call(void 0,a[c],c,a))return c};var Ha=function(){this.j="";this.l=Ga};Ha.prototype.na=!0;Ha.prototype.aa=function(){return this.j};var Ia=function(a){if(a instanceof Ha&&a.constructor===Ha&&a.l===Ga)return a.j;t(a);return"type_error:TrustedResourceUrl"},Ga={};var Ja=function(a){return/^[\s\xa0]*([\s\S]*?)[\s\xa0]*$/.exec(a)[1]},Ra=function(a){if(!Ka.test(a))return a;-1!=a.indexOf("&")&&(a=a.replace(La,"&amp;"));-1!=a.indexOf("<")&&(a=a.replace(Ma,"&lt;"));-1!=a.indexOf(">")&&(a=a.replace(Na,"&gt;"));-1!=a.indexOf('"')&&(a=a.replace(Oa,"&quot;"));-1!=a.indexOf("'")&&(a=a.replace(Pa,"&#39;"));-1!=a.indexOf("\x00")&&(a=a.replace(Qa,"&#0;"));return a},La=/&/g,Ma=/</g,Na=/>/g,Oa=/"/g,Pa=/'/g,Qa=/\x00/g,Ka=/[\x00&<>"']/,Sa={"\x00":"\\0","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\x0B":"\\x0B",'"':'\\"',"\\":"\\\\","<":"<"},Ta={"'":"\\'"},Ua=function(a){return String(a).replace(/\-([a-z])/g,function(a,c){return c.toUpperCase()})};var Wa=function(){this.ba="";this.wa=Va};Wa.prototype.na=!0;Wa.prototype.aa=function(){return this.ba};var Xa=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i,Va={},Ya=function(a){var b=new Wa;b.ba=a;return b};Ya("about:blank");var Za;a:{var $a=l.navigator;if($a){var ab=$a.userAgent;if(ab){Za=ab;break a}}Za=""}var w=function(a){return-1!=Za.indexOf(a)};var bb=function(a){var b=!1,c;return function(){b||(c=a(),b=!0);return c}},cb=function(){var a=oa;return function(){if(a){var b=a;a=null;b()}}};var eb=function(a){db();var b=new Ha;b.j=a;return b},db=oa;var fb=function(a){fb[" "](a);return a};fb[" "]=oa;var gb=w("Opera"),hb=-1!=Za.toLowerCase().indexOf("webkit")&&!w("Edge");var ib=/^[\w+/_-]+[=]{0,2}$/,jb=function(){var a=l.document.querySelector("script[nonce]");if(a&&(a=a.nonce||a.getAttribute("nonce"))&&ib.test(a))return a};var x=function(a){try{var b;if(b=!!a&&null!=a.location.href)a:{try{fb(a.foo);b=!0;break a}catch(c){}b=!1}return b}catch(c){return!1}},kb=function(a,b){var c=[l.top],d=[],e=0;b=b||1024;for(var f;f=c[e++];){a&&!x(f)||d.push(f);try{if(f.frames)for(var g=f.frames.length,h=0;h<g&&c.length<b;++h)c.push(f.frames[h])}catch(k){}}return d},lb=function(a,b){var c=a.createElement("script");b=eb(b);c.src=Ia(b);(a=a.getElementsByTagName("script")[0])&&a.parentNode&&a.parentNode.insertBefore(c,a)},y=function(a,b){return b.getComputedStyle?b.getComputedStyle(a,null):a.currentStyle},mb=function(a){if(!a.crypto)return Math.random();try{var b=new Uint32Array(1);a.crypto.getRandomValues(b);return b[0]/65536/65536}catch(c){return Math.random()}},nb=function(a,b){if(a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&b.call(void 0,a[c],c,a)},ob=function(a){var b=a.length;if(0==b)return 0;for(var c=305419896,d=0;d<b;d++)c^=(c<<5)+(c>>2)+a.charCodeAt(d)&4294967295;return 0<c?c:4294967296+c},pb=bb(function(){return-1!=Za.indexOf("Google Web Preview")||1E-4>Math.random()}),qb=/^([0-9.]+)px$/,rb=/^(-?[0-9.]{1,30})$/,sb=function(a){return rb.test(a)&&(a=Number(a),!isNaN(a))?a:null},tb=function(a,b){return b?!/^false$/.test(a):/^true$/.test(a)},A=function(a){return(a=qb.exec(a))?+a[1]:null};var ub=function(){return"r20180214"},vb=tb("false",!1),wb=tb("false",!1),xb=tb("false",!1),yb=xb||!wb;var zb=function(){return Ba("","googleads.g.doubleclick.net")};var Ab=function(a){this.j=a||l.document||document};var Bb=function(a,b,c){a.addEventListener?a.addEventListener(b,c,void 0):a.attachEvent&&a.attachEvent("on"+b,c)},Cb=function(a,b,c){a.removeEventListener?a.removeEventListener(b,c,void 0):a.detachEvent&&a.detachEvent("on"+b,c)};var Db=function(a){a=a||l;var b=a.context;if(!b)try{b=a.parent.context}catch(c){}try{if(b&&"pageViewId"in b&&"canonicalUrl"in b)return b}catch(c){}return null},Eb=function(a){a=a||Db();if(!a)return null;a=a.master;return x(a)?a:null};var Fb=function(a,b){l.google_image_requests||(l.google_image_requests=[]);var c=l.document.createElement("img");if(b){var d=function(a){b(a);Cb(c,"load",d);Cb(c,"error",d)};Bb(c,"load",d);Bb(c,"error",d)}c.src=a;l.google_image_requests.push(c)};var Gb=Object.prototype.hasOwnProperty,Hb=function(a,b){for(var c in a)Gb.call(a,c)&&b.call(void 0,a[c],c,a)},Ib=Object.assign||function(a,b){for(var c=1;c<arguments.length;c++){var d=arguments[c];if(d)for(var e in d)Gb.call(d,e)&&(a[e]=d[e])}return a},Jb=function(a){return!(!a||!a.call)&&"function"===typeof a},Kb=function(a,b){for(var c=1,d=arguments.length;c<d;++c)a.push(arguments[c])},Lb=function(a,b){if(a.indexOf)return a=a.indexOf(b),0<a||0===a;for(var c=0;c<a.length;c++)if(a[c]===b)return!0;return!1},Mb=function(a){a=Eb(Db(a))||a;a.google_unique_id?++a.google_unique_id:a.google_unique_id=1},Nb=!!window.google_async_iframe_id,Ob=Nb&&window.parent||window,Pb=function(){if(Nb&&!x(Ob)){var a="."+wa.domain;try{for(;2<a.split(".").length&&!x(Ob);)wa.domain=a=a.substr(a.indexOf(".")+1),Ob=window.parent}catch(b){}x(Ob)||(Ob=window)}return Ob},Qb=/(^| )adsbygoogle($| )/,Rb=function(a){a=vb&&a.google_top_window||a.top;return x(a)?a:null};var B=function(a,b){a=a.google_ad_modifications;return Lb(a?a.eids||[]:[],b)},C=function(a,b){a=a.google_ad_modifications;return Lb(a?a.loeids||[]:[],b)},Sb=function(a,b,c){if(!a)return null;for(var d=0;d<a.length;++d)if((a[d].ad_slot||b)==b&&(a[d].ad_tag_origin||c)==c)return a[d];return null};var Tb={overlays:1,interstitials:2,vignettes:2,inserts:3,immersives:4,list_view:5,full_page:6};var Ub=function(a){for(var b=[],c=0,d=0;d<a.length;d++){var e=a.charCodeAt(d);255<e&&(b[c++]=e&255,e>>=8);b[c++]=e}return b};var Vb=w("Safari")&&!((w("Chrome")||w("CriOS"))&&!w("Edge")||w("Coast")||w("Opera")||w("Edge")||w("Silk")||w("Android"))&&!(w("iPhone")&&!w("iPod")&&!w("iPad")||w("iPad")||w("iPod"));var Wb=null,Xb=null,Yb=w("Gecko")&&!(-1!=Za.toLowerCase().indexOf("webkit")&&!w("Edge"))&&!(w("Trident")||w("MSIE"))&&!w("Edge")||hb&&!Vb||gb||"function"==typeof l.btoa,Zb=function(a,b){if(!Wb){Wb={};Xb={};for(var c=0;65>c;c++)Wb[c]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(c),Xb[c]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.".charAt(c)}b=b?Xb:Wb;c=[];for(var d=0;d<a.length;d+=3){var e=a[d],f=d+1<a.length,g=f?a[d+1]:0,h=d+2<a.length,k=h?a[d+2]:0,m=e>>2;e=(e&3)<<4|g>>4;g=(g&15)<<2|k>>6;k&=63;h||(k=64,f||(g=64));c.push(b[m],b[e],b[g],b[k])}return c.join("")};var D=function(){},$b="function"==typeof Uint8Array,cc=function(a,b,c){a.j=null;b||(b=[]);a.C=void 0;a.s=-1;a.l=b;a:{if(a.l.length){b=a.l.length-1;var d=a.l[b];if(d&&"object"==typeof d&&"array"!=t(d)&&!($b&&d instanceof Uint8Array)){a.v=b-a.s;a.o=d;break a}}a.v=Number.MAX_VALUE}a.A={};if(c)for(b=0;b<c.length;b++)d=c[b],d<a.v?(d+=a.s,a.l[d]=a.l[d]||ac):(bc(a),a.o[d]=a.o[d]||ac)},ac=[],bc=function(a){var b=a.v+a.s;a.l[b]||(a.o=a.l[b]={})},E=function(a,b){if(b<a.v){b+=a.s;var c=a.l[b];return c===ac?a.l[b]=[]:c}if(a.o)return c=a.o[b],c===ac?a.o[b]=[]:c},dc=function(a,b){if(b<a.v){b+=a.s;var c=a.l[b];return c===ac?a.l[b]=[]:c}c=a.o[b];return c===ac?a.o[b]=[]:c},ec=function(a,b,c){a.j||(a.j={});if(!a.j[c]){var d=E(a,c);d&&(a.j[c]=new b(d))}return a.j[c]},fc=function(a,b,c){a.j||(a.j={});if(!a.j[c]){for(var d=dc(a,c),e=[],f=0;f<d.length;f++)e[f]=new b(d[f]);a.j[c]=e}b=a.j[c];b==ac&&(b=a.j[c]=[]);return b},gc=function(a){if(a.j)for(var b in a.j){var c=a.j[b];if("array"==t(c))for(var d=0;d<c.length;d++)c[d]&&gc(c[d]);else c&&gc(c)}};D.prototype.toString=function(){gc(this);return this.l.toString()};var ic=function(a){cc(this,a,hc)};ua(ic,D);var hc=[4],jc=function(a){cc(this,a,null)};ua(jc,D);var kc=function(a){cc(this,a,null)};ua(kc,D);var mc=function(a){cc(this,a,lc)};ua(mc,D);var lc=[6,7,9,10];var oc=function(a){cc(this,a,nc)};ua(oc,D);var nc=[1,2,5,7],pc=function(a){cc(this,a,null)};ua(pc,D);var rc=function(a){cc(this,a,qc)};ua(rc,D);var qc=[2];var sc=function(a,b,c){c=void 0===c?{}:c;this.error=a;this.context=b.context;this.line=b.line||-1;this.msg=b.message||"";this.file=b.file||"";this.id=b.id||"jserror";this.meta=c};var tc=/^https?:\/\/(\w|-)+\.cdn\.ampproject\.(net|org)(\?|\/|$)/,uc=function(a,b){this.j=a;this.l=b},vc=function(a,b,c){this.url=a;this.j=b;this.oa=!!c;this.depth=r(void 0)?void 0:null};var wc=function(){this.o="&";this.s=!1;this.l={};this.v=0;this.j=[]},xc=function(a,b){var c={};c[a]=b;return[c]},zc=function(a,b,c,d,e){var f=[];nb(a,function(a,h){(a=yc(a,b,c,d,e))&&f.push(h+"="+a)});return f.join(b)},yc=function(a,b,c,d,e){if(null==a)return"";b=b||"&";c=c||",$";"string"==typeof c&&(c=c.split(""));if(a instanceof Array){if(d=d||0,d<c.length){for(var f=[],g=0;g<a.length;g++)f.push(yc(a[g],b,c,d+1,e));return f.join(c[d])}}else if("object"==typeof a)return e=e||0,2>e?encodeURIComponent(zc(a,b,c,d,e+1)):"...";return encodeURIComponent(String(a))},Ac=function(a,b,c,d){a.j.push(b);a.l[b]=xc(c,d)},Cc=function(a,b,c,d){b=b+"//"+c+d;var e=Bc(a)-d.length;if(0>e)return"";a.j.sort(function(a,b){return a-b});d=null;c="";for(var f=0;f<a.j.length;f++)for(var g=a.j[f],h=a.l[g],k=0;k<h.length;k++){if(!e){d=null==d?g:d;break}var m=zc(h[k],a.o,",$");if(m){m=c+m;if(e>=m.length){e-=m.length;b+=m;c=a.o;break}else a.s&&(c=e,m[c-1]==a.o&&--c,b+=m.substr(0,c),c=a.o,e=0);d=null==d?g:d}}a="";null!=d&&(a=c+"trn="+d);return b+a},Bc=function(a){var b=1,c;for(c in a.l)b=c.length>b?c.length:b;return 3997-b-a.o.length-1};var Dc=function(a,b,c,d,e,f){if((d?a.v:Math.random())<(e||a.j))try{if(c instanceof wc)var g=c;else g=new wc,nb(c,function(a,b){var c=g,d=c.v++;a=xc(b,a);c.j.push(d);c.l[d]=a});var h=Cc(g,a.s,a.l,a.o+b+"&");h&&("undefined"===typeof f?Fb(h,void 0):Fb(h,f))}catch(k){}};var Ec=function(a,b){this.start=a<b?a:b;this.j=a<b?b:a};var Fc=function(a,b){this.j=b>=a?new Ec(a,b):null},Gc=function(a){var b;try{a.localStorage&&(b=parseInt(a.localStorage.getItem("google_experiment_mod"),10))}catch(c){return null}if(0<=b&&1E3>b)return b;if(pb())return null;b=Math.floor(1E3*mb(a));try{if(a.localStorage)return a.localStorage.setItem("google_experiment_mod",""+b),b}catch(c){}return null};var Hc=!1,Ic=null,Jc=function(){if(null===Ic){Ic="";try{var a="";try{a=l.top.location.hash}catch(c){a=l.location.hash}if(a){var b=a.match(/\bdeid=([\d,]+)/);Ic=b?b[1]:""}}catch(c){}}return Ic},Kc=function(a,b){var c;c=(c=Jc())?(c=c.match(new RegExp("\\b("+a.join("|")+")\\b")))?c[0]:null:null;if(c)a=c;else if(Hc)a=null;else a:{if(!pb()&&(c=Math.random(),c<b)){c=mb(l);a=a[Math.floor(c*a.length)];break a}a=null}return a};var Lc=function(){var a=l.performance;return a&&a.now&&a.timing?Math.floor(a.now()+a.timing.navigationStart):+new Date},Mc=function(){var a=void 0===a?l:a;return(a=a.performance)&&a.now?a.now():null};var Nc=function(a,b,c){this.label=a;this.type=b;this.value=c;this.duration=0;this.uniqueId=this.label+"_"+this.type+"_"+Math.random();this.slotId=void 0};var F=l.performance,Oc=!!(F&&F.mark&&F.measure&&F.clearMarks),Pc=bb(function(){var a;if(a=Oc)a=Jc(),a=!!a.indexOf&&0<=a.indexOf("1337");return a}),Rc=function(){var a=Qc;this.events=[];this.l=a||l;var b=null;a&&(a.google_js_reporting_queue=a.google_js_reporting_queue||[],this.events=a.google_js_reporting_queue,b=a.google_measure_js_timing);this.j=Pc()||(null!=b?b:1>Math.random())},Sc=function(a){a&&F&&Pc()&&(F.clearMarks("goog_"+a.uniqueId+"_start"),F.clearMarks("goog_"+a.uniqueId+"_end"))};Rc.prototype.start=function(a,b){if(!this.j)return null;var c=Mc()||Lc();a=new Nc(a,b,c);b="goog_"+a.uniqueId+"_start";F&&Pc()&&F.mark(b);return a};var Vc=function(){var a=Tc;this.A=Uc;this.s=!0;this.o=null;this.C=this.j;this.l=void 0===a?null:a;this.v=!1},Yc=function(a,b,c,d,e){try{if(a.l&&a.l.j){var f=a.l.start(b.toString(),3);var g=c();var h=a.l;c=f;if(h.j&&r(c.value)){var k=Mc()||Lc();c.duration=k-c.value;var m="goog_"+c.uniqueId+"_end";F&&Pc()&&F.mark(m);h.j&&h.events.push(c)}}else g=c()}catch(n){h=a.s;try{Sc(f),h=(e||a.C).call(a,b,new Wc(Xc(n),n.fileName,n.lineNumber),void 0,d)}catch(p){a.j(217,p)}if(!h)throw n}return g},Zc=function(a,b){var c=G;return function(d){for(var e=[],f=0;f<arguments.length;++f)e[f]=arguments[f];return Yc(c,a,function(){return b.apply(void 0,e)},void 0,void 0)}};Vc.prototype.j=function(a,b,c,d,e){e=e||"jserror";try{var f=new wc;f.s=!0;Ac(f,1,"context",a);b.error&&b.meta&&b.id||(b=new Wc(Xc(b),b.fileName,b.lineNumber));b.msg&&Ac(f,2,"msg",b.msg.substring(0,512));b.file&&Ac(f,3,"file",b.file);0<b.line&&Ac(f,4,"line",b.line);var g=b.meta||{};if(this.o)try{this.o(g)}catch(da){}if(d)try{d(g)}catch(da){}b=[g];f.j.push(5);f.l[5]=b;g=l;b=[];var h=null;do{d=g;if(x(d)){var k=d.location.href;h=d.document&&d.document.referrer||null}else k=h,h=null;b.push(new vc(k||"",d));try{g=d.parent}catch(da){g=null}}while(g&&d!=g);k=0;for(var m=b.length-1;k<=m;++k)b[k].depth=m-k;d=l;if(d.location&&d.location.ancestorOrigins&&d.location.ancestorOrigins.length==b.length-1)for(k=1;k<b.length;++k){var n=b[k];n.url||(n.url=d.location.ancestorOrigins[k-1]||"",n.oa=!0)}var p=new vc(l.location.href,l,!1);m=null;var q=b.length-1;for(n=q;0<=n;--n){var u=b[n];!m&&tc.test(u.url)&&(m=u);if(u.url&&!u.oa){p=u;break}}u=null;var z=b.length&&b[q].url;0!=p.depth&&z&&(u=b[q]);var J=new uc(p,u);J.l&&Ac(f,6,"top",J.l.url||"");Ac(f,7,"url",J.j.url||"");Dc(this.A,e,f,this.v,c)}catch(da){try{Dc(this.A,e,{context:"ecmserr",rctx:a,msg:Xc(da),url:J&&J.j.url},this.v,c)}catch(eh){}}return this.s};var Xc=function(a){var b=a.toString();a.name&&-1==b.indexOf(a.name)&&(b+=": "+a.name);a.message&&-1==b.indexOf(a.message)&&(b+=": "+a.message);if(a.stack){a=a.stack;var c=b;try{-1==a.indexOf(c)&&(a=c+"\n"+a);for(var d;a!=d;)d=a,a=a.replace(/((https?:\/..*\/)[^\/:]*:\d+(?:.|\n)*)\2/,"$1");b=a.replace(/\n */g,"\n")}catch(e){b=c}}return b},Wc=function(a,b,c){sc.call(this,Error(a),{message:a,file:void 0===b?"":b,line:void 0===c?-1:c})};ia(Wc,sc);var H=function(a){a=void 0===a?"":a;var b=Error.call(this);this.message=b.message;"stack"in b&&(this.stack=b.stack);this.name="TagError";this.message=a?"adsbygoogle.push() error: "+a:"";Error.captureStackTrace?Error.captureStackTrace(this,H):this.stack=Error().stack||""};ia(H,Error);var $c=function(a){return 0==(a.error&&a.meta&&a.id?a.msg||Xc(a.error):Xc(a)).indexOf("TagError")};var Uc,G,Qc=Pb(),Tc=new Rc,ad=function(a){null!=a&&(Qc.google_measure_js_timing=a);Qc.google_measure_js_timing||(a=Tc,a.j=!1,a.events!=a.l.google_js_reporting_queue&&(Pc()&&Da(a.events,Sc),a.events.length=0))};Uc=new function(){var a=void 0===a?v:a;this.s="http:"===a.location.protocol?"http:":"https:";this.l="pagead2.googlesyndication.com";this.o="/pagead/gen_204?id=";this.j=.01;this.v=Math.random()};G=new Vc;"complete"==Qc.document.readyState?ad():Tc.j&&Bb(Qc,"load",function(){ad()});var dd=function(){var a=[bd,cd];G.o=function(b){Da(a,function(a){a(b)})}},ed=function(a,b,c,d){return Yc(G,a,c,d,b)},fd=function(a,b){return Zc(a,b)},gd=G.j,hd=function(a,b,c,d){return $c(b)?(G.v=!0,G.j(a,b,.1,d,"puberror"),!1):G.j(a,b,c,d)},id=function(a,b,c,d){return $c(b)?!1:G.j(a,b,c,d)};var jd=new function(){this.j=["google-auto-placed"];this.l={google_tag_origin:"qs"}};var kd=function(a,b){a.location.href&&a.location.href.substring&&(b.url=a.location.href.substring(0,200));Dc(Uc,"ama",b,!0,.01,void 0)};var ld=function(a){cc(this,a,null)};ua(ld,D);var md=null,nd=function(){if(!md){for(var a=l,b=a,c=0;a&&a!=a.parent;)if(a=a.parent,c++,x(a))b=a;else break;md=b}return md};var od={google:1,googlegroups:1,gmail:1,googlemail:1,googleimages:1,googleprint:1},pd=/(corp|borg)\.google\.com:\d+$/,qd=function(){var a=v.google_page_location||v.google_page_url;"EMPTY"==a&&(a=v.google_page_url);if(vb||!a)return!1;a=a.toString();0==a.indexOf("http://")?a=a.substring(7,a.length):0==a.indexOf("https://")&&(a=a.substring(8,a.length));var b=a.indexOf("/");-1==b&&(b=a.length);a=a.substring(0,b);if(pd.test(a))return!1;a=a.split(".");b=!1;3<=a.length&&(b=a[a.length-3]in od);2<=a.length&&(b=b||a[a.length-2]in od);return b};var rd=function(a){a=a.document;return("CSS1Compat"==a.compatMode?a.documentElement:a.body)||{}},I=function(a){return rd(a).clientWidth};var sd=function(a,b){Array.prototype.slice.call(a).forEach(b,void 0)};var td=function(a,b,c,d){this.s=a;this.l=b;this.o=c;this.j=d};td.prototype.toString=function(){return JSON.stringify({nativeQuery:this.s,occurrenceIndex:this.l,paragraphIndex:this.o,ignoreMode:this.j})};var ud=function(a,b){if(null==a.j)return b;switch(a.j){case 1:return b.slice(1);case 2:return b.slice(0,b.length-1);case 3:return b.slice(1,b.length-1);case 0:return b;default:throw Error("Unknown ignore mode: "+a.j)}},wd=function(a){var b=[];sd(a.getElementsByTagName("p"),function(a){100<=vd(a)&&b.push(a)});return b},vd=function(a){if(3==a.nodeType)return a.length;if(1!=a.nodeType||"SCRIPT"==a.tagName)return 0;var b=0;sd(a.childNodes,function(a){b+=vd(a)});return b},xd=function(a){return 0==a.length||isNaN(a[0])?a:"\\"+(30+parseInt(a[0],10))+" "+a.substring(1)};var yd=function(a){if(1!=a.nodeType)var b=!1;else if(b="INS"==a.tagName)a:{b=["adsbygoogle-placeholder"];a=a.className?a.className.split(/\s+/):[];for(var c={},d=0;d<a.length;++d)c[a[d]]=!0;for(d=0;d<b.length;++d)if(!c[b[d]]){b=!1;break a}b=!0}return b};var zd=function(a,b){for(var c=0;c<b.length;c++){var d=b[c],e=Ua(d.Ga);a[e]=d.value}};var Ad={1:1,2:2,3:3,0:0},Bd=function(a){return null!=a?Ad[a]:a},Cd={1:0,2:1,3:2,4:3};var Dd=function(a,b){if(!a)return!1;a=y(a,b);if(!a)return!1;a=a.cssFloat||a.styleFloat;return"left"==a||"right"==a},Ed=function(a){for(a=a.previousSibling;a&&1!=a.nodeType;)a=a.previousSibling;return a?a:null},Fd=function(a){return!!a.nextSibling||!!a.parentNode&&Fd(a.parentNode)};var Gd=function(a,b){this.j=l;this.v=a;this.s=b;this.o=jd||null;this.l=!1},Id=function(a,b){if(a.l)return!0;try{var c=a.j.localStorage.getItem("google_ama_settings");var d=c?new ld(c?JSON.parse(c):null):null}catch(g){d=null}if(c=null!==d)d=E(d,2),c=null==d?!1:d;if(c)return a=a.j.google_ama_state=a.j.google_ama_state||{},a.eatf=!0;c=fc(a.s,mc,1);for(d=0;d<c.length;d++){var e=c[d];if(1==E(e,8)){var f=ec(e,kc,4);if(f&&2==E(f,1)&&Hd(a,e,b))return a.l=!0,a=a.j.google_ama_state=a.j.google_ama_state||{},a.placement=d,!0}}return!1},Hd=function(a,b,c){if(1!=E(b,8))return!1;var d=ec(b,ic,1);if(!d)return!1;var e=E(d,7);if(E(d,1)||E(d,3)||0<dc(d,4).length){var f=E(d,3),g=E(d,1),h=dc(d,4);e=E(d,2);var k=E(d,5);d=Bd(E(d,6));var m="";g&&(m+=g);f&&(m+="#"+xd(f));if(h)for(f=0;f<h.length;f++)m+="."+xd(h[f]);e=(h=m)?new td(h,e,k,d):null}else e=e?new td(e,E(d,2),E(d,5),Bd(E(d,6))):null;if(!e)return!1;k=[];try{k=a.j.document.querySelectorAll(e.s)}catch(u){}if(k.length){h=k.length;if(0<h){d=Array(h);for(f=0;f<h;f++)d[f]=k[f];k=d}else k=[];k=ud(e,k);r(e.l)&&(h=e.l,0>h&&(h+=k.length),k=0<=h&&h<k.length?[k[h]]:[]);if(r(e.o)){h=[];for(d=0;d<k.length;d++)f=wd(k[d]),g=e.o,0>g&&(g+=f.length),0<=g&&g<f.length&&h.push(f[g]);k=h}e=k}else e=[];if(0==e.length)return!1;e=e[0];k=E(b,2);k=Cd[k];k=void 0!==k?k:null;if(!(h=null==k)){a:{h=a.j;switch(k){case 0:h=Dd(Ed(e),h);break a;case 3:h=Dd(e,h);break a;case 2:d=e.lastChild;h=Dd(d?1==d.nodeType?d:Ed(d):null,h);break a}h=!1}if(c=!h&&!(!c&&2==k&&!Fd(e)))c=1==k||2==k?e:e.parentNode,c=!(c&&!yd(c)&&0>=c.offsetWidth);h=!c}if(h)return!1;b=ec(b,jc,3);h={};b&&(h.ta=E(b,1),h.ja=E(b,2),h.ya=!!E(b,3));var n;b=a.j;c=a.o;d=a.v;f=b.document;a=f.createElement("div");g=a.style;g.textAlign="center";g.width="100%";g.height="auto";g.clear=h.ya?"both":"none";h.Aa&&zd(g,h.Aa);f=f.createElement("ins");g=f.style;g.display="block";g.margin="auto";g.backgroundColor="transparent";h.ta&&(g.marginTop=h.ta);h.ja&&(g.marginBottom=h.ja);h.xa&&zd(g,h.xa);a.appendChild(f);f.setAttribute("data-ad-format","auto");h=[];if(g=c&&c.j)a.className=g.join(" ");f.className="adsbygoogle";f.setAttribute("data-ad-client",d);h.length&&f.setAttribute("data-ad-channel",h.join("+"));a:{try{switch(k){case 0:e.parentNode&&e.parentNode.insertBefore(a,e);break;case 3:var p=e.parentNode;if(p){var q=e.nextSibling;if(q&&q.parentNode!=p)for(;q&&8==q.nodeType;)q=q.nextSibling;p.insertBefore(a,q)}break;case 1:e.insertBefore(a,e.firstChild);break;case 2:e.appendChild(a)}yd(e)&&(e.setAttribute("data-init-display",e.style.display),e.style.display="block");f.setAttribute("data-adsbygoogle-status","reserved");p={element:f};(n=c&&c.l)&&(p.params=n);(b.adsbygoogle=b.adsbygoogle||[]).push(p)}catch(u){a&&a.parentNode&&(n=a.parentNode,n.removeChild(a),yd(n)&&(n.style.display=n.getAttribute("data-init-display")||"none"));n=!1;break a}n=!0}return n?!0:!1};var Kd=function(){this.l=new Jd(this);this.j=0},Ld=function(a){if(0!=a.j)throw Error("Already resolved/rejected.")},Jd=function(a){this.j=a},Md=function(a){switch(a.j.j){case 0:break;case 1:a.ca&&a.ca(a.j.s);break;case 2:a.sa&&a.sa(a.j.o);break;default:throw Error("Unhandled deferred state.")}};var Nd=function(a){this.exception=a},Od=function(a,b){this.l=l;this.o=a;this.j=b};Od.prototype.start=function(){this.s()};Od.prototype.s=function(){try{switch(this.l.document.readyState){case "complete":case "interactive":Id(this.o,!0);Pd(this);break;default:Id(this.o,!1)?Pd(this):this.l.setTimeout(sa(this.s,this),100)}}catch(a){Pd(this,a)}};var Pd=function(a,b){try{var c=a.j,d=new Nd(b);Ld(c);c.j=1;c.s=d;Md(c.l)}catch(e){a=a.j,b=e,Ld(a),a.j=2,a.o=b,Md(a.l)}};var Qd=function(a){kd(a,{atf:1})},Rd=function(a,b){(a.google_ama_state=a.google_ama_state||{}).exception=b;kd(a,{atf:0})};var Sd=function(){this.wasPlaTagProcessed=!1;this.wasReactiveAdConfigReceived={};this.adCount={};this.wasReactiveAdVisible={};this.stateForType={};this.reactiveTypeEnabledByReactiveTag={};this.isReactiveTagFirstOnPage=this.wasReactiveAdConfigHandlerRegistered=this.wasReactiveTagRequestSent=!1;this.reactiveTypeDisabledByPublisher={};this.debugCard=null;this.messageValidationEnabled=this.debugCardRequested=!1;this.adRegion=this.floatingAdsFillMessage=this.grappleTagStatusService=null};var cd=function(a){try{var b=l.google_ad_modifications;if(null!=b){var c=Ea(b.eids,b.loeids);null!=c&&0<c.length&&(a.eid=c.join(","))}}catch(d){}},bd=function(a){a.shv=ub()};G.s=!vb;var Td={9:"400",10:"100",11:"0.10",12:"0.02",13:"0.001",14:"300",15:"100",19:"0.01",22:"0.01",23:"0.2",24:"0.05",26:"0.5",27:"0.001",28:"0.001",29:"0.01",32:"0.02",34:"0.001",37:"0.0",40:"0.15",42:"0",43:"0.02",47:"0.01",48:"0.2",49:"0.2",51:"0.05",52:"0.1",54:"800",55:"200",56:"0.001",57:"0.001",58:"0.02",60:"0.03",65:"0.02",66:"0.0",67:"0.04",70:"1.0",71:"700",72:"10",74:"0.03",75:"true",76:"0.004",77:"true",78:"0.1",79:"1200",80:"2",82:"3",83:"1.0",84:"0",85:"200",89:"1.0",90:"0.0",92:"0.02",94:"true",96:"700",97:"2",98:"0.01",99:"600",100:"100",101:"false"};var Ud=null,Vd=function(){this.V=Td},K=function(a,b){a=parseFloat(a.V[b]);return isNaN(a)?0:a},Wd=function(){Ud||(Ud=new Vd);return Ud};var Xd={m:"368226200",u:"368226201"},Yd={m:"368226210",u:"368226211"},Zd={m:"38893301",K:"38893302",T:"38893303"},$d={m:"38893311",K:"38893312",T:"38893313"},ae={m:"36998750",u:"36998751"},be={m:"4089040",ea:"4089042"},ce={B:"20040067",m:"20040068",da:"1337"},de={m:"21060548",B:"21060549"},ee={m:"21060623",B:"21060624"},fe={Y:"62710015",m:"62710016"},ge={Y:"62710017",m:"62710018"},he={m:"201222021",D:"201222022"},ie={m:"201222031",D:"201222032"},L={m:"21060866",u:"21060867",U:"21060868",ua:"21060869",I:"21060870",J:"21060871"},je={m:"21060550",u:"21060551"},ke={m:"332260000",G:"332260001",H:"332260002",F:"332260003"},le={m:"332260004",G:"332260005",H:"332260006",F:"332260007"},me={m:"21060518",u:"21060519"},ne={m:"21060830",ha:"21060831",Z:"21060832",ga:"21060843",fa:"21061122"},oe={m:"191880501",u:"191880502"},pe={m:"21061394",u:"21061395"},qe={m:"10583695",u:"10583696"},re={m:"10593695",u:"10593696"};Hc=!1;var se=new Fc(0,199),te=new Fc(200,399),ue=new Fc(400,599),ve=new Fc(600,699),we=new Fc(700,799),xe=new Fc(800,999);var ze=function(a){var b=Wd();a=ye(a,we,K(b,96),K(b,97),["182982000","182982100"]);if(!a)return{L:"",M:""};b={};b=(b["182982000"]="182982200",b["182982100"]="182982300",b)[a];return{L:a,M:b}},Ae=function(a){var b=Wd(),c=ye(a,we,K(b,71),K(b,72),["153762914","153762975"]),d="";"153762914"==c?d="153762530":"153762975"==c&&(d="153762841");if(c)return{L:c,M:d};c=ye(a,we,K(b,71)+K(b,72),K(b,80),["164692081","165767636"]);"164692081"==c?d="166717794":"165767636"==c&&(d="169062368");return{L:c||"",M:d}},Be=function(a){var b=a.google_ad_modifications=a.google_ad_modifications||{};if(!b.plle){b.plle=!0;var c=b.eids=b.eids||[];b=b.loeids=b.loeids||[];var d=Wd(),e=ze(a),f=e.L;e=e.M;if(f&&e)M(c,f),M(c,e);else{var g=Ae(a);M(b,g.L);M(c,g.M)}g=Yd;f=ye(a,se,K(d,84),K(d,85),[g.m,g.u]);M(b,f);var h=Xd;f==g.m?e=h.m:f==g.u?e=h.u:e="";M(c,e);g=be;M(c,ye(a,ue,K(d,9),K(d,10),[g.m,g.ea]));Ja("")&&M(b,"");g=fe;f=N(a,K(d,11),[g.m,g.Y]);g=Fa(g,function(a){return a==f});g=ge[g];M(c,f);M(c,g);g=L;g=N(a,K(d,12),[g.m,g.u,g.U,g.ua,g.I,g.J]);M(c,g);g||(g=je,g=N(a,K(d,58),[g.m,g.u]),M(c,g));g||(g=me,f=N(a,K(d,56),[g.m,g.u]),M(c,f));g=ce;f=N(a,K(d,13),[g.B,g.m]);M(c,f);M(c,Kc([g.da],0));g=de;f=N(a,K(d,60),[g.B,g.m]);M(c,f);f==de.B&&(g=ee,f=N(a,K(d,66),[g.B,g.m]),M(c,f));g=ie;f=ye(a,te,K(d,14),K(d,15),[g.m,g.D]);M(b,f);h=he;f==g.m?e=h.m:f==g.D?e=h.D:e="";M(c,e);g=le;f=ye(a,xe,K(d,54),K(d,55),[g.m,g.G,g.H,g.F]);M(b,f);h=ke;f==g.m?e=h.m:f==g.G?e=h.G:f==g.H?e=h.H:f==g.F?e=h.F:e="";M(c,e);g=$d;f=N(a,K(d,70),[g.K]);M(b,f);h=Zd;switch(f){case g.m:e=h.m;break;case g.K:e=h.K;break;case g.T:e=h.T;break;default:h=""}M(c,e);g=ae;f=N(a,K(d,98),[g.m,g.u]);M(c,f);if(tb(d.V[77],!1)||vb)g=ne,f=N(a,K(d,76),[g.m,g.ha,g.Z,g.ga]),M(c,f),f||(f=N(a,K(d,83),[g.fa]),M(c,f));g=oe;f=N(a,K(d,90),[g.m,g.u]);tb(d.V[94],!1)&&!f&&(f=g.u);M(c,f);g=pe;f=N(a,K(d,92),[g.m,g.u]);M(c,f);g=qe;f=ye(a,ve,K(d,99),K(d,100),[g.m,g.u]);M(b,f);h=re;f==g.m?e=h.m:f==g.u?e=h.u:e="";M(c,e)}},M=function(a,b){b&&a.push(b)},Ce=function(a,b){a=(a=(a=a.location&&a.location.hash)&&a.match(/google_plle=([\d,]+)/))&&a[1];return!!a&&-1!=a.indexOf(b)},N=function(a,b,c){for(var d=0;d<c.length;d++)if(Ce(a,c[d]))return c[d];return Kc(c,b)},ye=function(a,b,c,d,e){for(var f=0;f<e.length;f++)if(Ce(a,e[f]))return e[f];f=new Ec(c,c+d-1);(d=0>=d||d%e.length)||(b=b.j,d=!(b.start<=f.start&&b.j>=f.j));d?c=null:(a=Gc(a),c=null!==a&&f.start<=a&&f.j>=a?e[(a-c)%e.length]:null);return c};var De=function(a){if(!a)return"";(a=a.toLowerCase())&&"ca-"!=a.substring(0,3)&&(a="ca-"+a);return a};var Ee=function(a,b,c){var d=void 0===d?"":d;var e=["<iframe"],f;for(f in a)a.hasOwnProperty(f)&&Kb(e,f+"="+a[f]);e.push('style="'+("left:0;position:absolute;top:0;width:"+b+"px;height:"+c+"px;")+'"');e.push("></iframe>");a=a.id;b="border:none;height:"+c+"px;margin:0;padding:0;position:relative;visibility:visible;width:"+b+"px;background-color:transparent;";return['<ins id="',a+"_expand",'" style="display:inline-table;',b,void 0===d?"":d,'"><ins id="',a+"_anchor",'" style="display:block;',b,'">',e.join(" "),"</ins></ins>"].join("")},Fe=function(a,b,c){var d=a.document.getElementById(b).contentWindow;if(x(d))a=a.document.getElementById(b).contentWindow,b=a.document,b.body&&b.body.firstChild||(/Firefox/.test(navigator.userAgent)?b.open("text/html","replace"):b.open(),a.google_async_iframe_close=!0,b.write(c));else{a=a.document.getElementById(b).contentWindow;c=String(c);b=['"'];for(d=0;d<c.length;d++){var e=c.charAt(d),f=e.charCodeAt(0),g=d+1,h;if(!(h=Sa[e])){if(!(31<f&&127>f))if(f=e,f in Ta)e=Ta[f];else if(f in Sa)e=Ta[f]=Sa[f];else{h=f.charCodeAt(0);if(31<h&&127>h)e=f;else{if(256>h){if(e="\\x",16>h||256<h)e+="0"}else e="\\u",4096>h&&(e+="0");e+=h.toString(16).toUpperCase()}e=Ta[f]=e}h=e}b[g]=h}b.push('"');a.location.replace("javascript:"+b.join(""))}};var Ge=null;var He={rectangle:1,horizontal:2,vertical:4};var O=function(a,b){this.v=a;this.s=b};O.prototype.minWidth=function(){return this.v};O.prototype.height=function(){return this.s};O.prototype.j=function(a){return 300<a&&300<this.s?this.v:Math.min(1200,Math.round(a))};O.prototype.o=function(a){return this.j(a)+"x"+this.height()};O.prototype.l=function(){};var P=function(a,b,c,d){d=void 0===d?!1:d;O.call(this,a,b);this.W=c;this.za=d};ia(P,O);P.prototype.l=function(a,b,c,d){1!=c.google_ad_resize&&(d.style.height=this.height()+"px")};var Ie=function(a){return function(b){return!!(b.W&a)}};function Je(a,b){for(var c=["width","height"],d=0;d<c.length;d++){var e="google_ad_"+c[d];if(!b.hasOwnProperty(e)){var f=A(a[c[d]]);f=null===f?null:Math.round(f);null!=f&&(b[e]=f)}}}var Ke=function(a,b){try{var c=b.document.documentElement.getBoundingClientRect(),d=a.getBoundingClientRect();var e={x:d.left-c.left,y:d.top-c.top}}catch(f){e=null}return(a=e)?a.y:0},Le=function(a,b){do{var c=y(a,b);if(c&&"fixed"==c.position)return!1}while(a=a.parentElement);return!0},Me=function(a,b,c){var d=c.google_safe_for_responsive_override;return null!=d?d:c.google_safe_for_responsive_override=Le(a,b)},Ne=function(a){var b=0,c;for(c in He)-1!=a.indexOf(c)&&(b|=He[c]);return b},Oe=function(a,b){for(var c=I(b),d=0;100>d&&a;d++){var e=y(a,b);if(e&&"hidden"==e.overflowX&&(e=A(e.width))&&e<c)return!0;a=a.parentElement}return!1},Pe=function(a,b){for(var c=a,d=0;100>d&&c;d++){var e=c.style;if(e&&e.height&&"auto"!=e.height&&"inherit"!=e.height||e&&e.maxHeight&&"auto"!=e.maxHeight&&"inherit"!=e.maxHeight)return!1;c=c.parentElement}c=a;for(d=0;100>d&&c;d++){if((e=y(c,b))&&"hidden"==e.overflowY)return!1;c=c.parentElement}c=a;for(d=0;100>d&&c;d++){a:{e=a;var f=["height","max-height"],g=b.document.styleSheets;if(g)for(var h=e.matches||e.webkitMatchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector,k=0;k<Math.min(g.length,10);++k){var m=void 0;try{var n=g[k],p=null;try{p=n.cssRules||n.rules}catch(u){if(15==u.code)throw u.styleSheet=n,u}m=p}catch(u){continue}if(m&&0<m.length)for(p=0;p<Math.min(m.length,10);++p)if(h.call(e,m[p].selectorText))for(var q=0;q<f.length;++q)if(-1!=m[p].cssText.indexOf(f[q])){e=!0;break a}}e=!1}if(e)return!1;c=c.parentElement}return!0},Qe=function(a,b,c,d,e){e=e||{};if((vb&&a.google_top_window||a.top)!=a)return e.google_fwr_non_expansion_reason=3,!1;if(!(488>I(a)))return e.google_fwr_non_expansion_reason=4,!1;if(!(a.innerHeight>=a.innerWidth))return e.google_fwr_non_expansion_reason=5,!1;var f=I(a);return!f||(f-c)/f>d?(e.google_fwr_non_expansion_reason=6,!1):Oe(b.parentElement,a)?(e.google_fwr_non_expansion_reason=7,!1):!0},Re=function(a,b,c,d){var e;(e=!Qe(b,c,a,.3,d))||(e=I(b),a=e-a,e&&5<=a?a=!0:((d||{}).google_fwr_non_expansion_reason=e?-10>a?11:0>a?14:0==a?13:12:10,a=!1),e=!a);return e?!1:Me(c,b,d)?!0:(d.google_fwr_non_expansion_reason=9,!1)},Se=function(a){for(var b=0,c=0;100>c&&a;c++)b+=a.offsetLeft+a.clientLeft-a.scrollLeft,a=a.offsetParent;return b},Te=function(a,b,c){return{pa:A(a.paddingLeft)||0,direction:a.direction,la:b-c}},Ue=function(a,b){if(3==b.nodeType)return/\S/.test(b.data);if(1==b.nodeType){if(/^(script|style)$/i.test(b.nodeName))return!1;try{var c=y(b,a)}catch(d){}return!c||"none"!=c.display&&!("absolute"==c.position&&("hidden"==c.visibility||"collapse"==c.visibility))}return!1},Ve=function(a,b,c,d,e,f){if(a=y(c,a)){var g=Te(a,e,d);d=g.direction;a=g.pa;g=g.la;f.google_ad_resize?c=-1*(g+a)+"px":(c=Se(c)+a,c="rtl"==d?-1*(g-c)+"px":-1*c+"px");"rtl"==d?b.style.marginRight=c:b.style.marginLeft=c;b.style.width=e+"px";b.style.zIndex=30}};var We=function(a,b,c){if(a.style){var d=A(a.style[c]);if(d)return d}if(a=y(a,b))if(c=A(a[c]))return c;return null},Xe=function(a){return function(b){return b.minWidth()<=a}},$e=function(a,b,c){var d=a&&Ye(c,b),e=Ze(b);return function(a){return!(d&&a.height()>=e)}},af=function(a){return function(b){return b.height()<=a}},Ye=function(a,b){return Ke(a,b)<rd(b).clientHeight-100},bf=function(a,b){var c=Infinity;do{var d=We(b,a,"height");d&&(c=Math.min(c,d));(d=We(b,a,"maxHeight"))&&(c=Math.min(c,d))}while((b=b.parentElement)&&"HTML"!=b.tagName);return c},cf=function(a,b){var c=We(b,a,"height");if(c)return c;var d=b.style.height;b.style.height="inherit";c=We(b,a,"height");b.style.height=d;if(c)return c;c=Infinity;do(d=b.style&&A(b.style.height))&&(c=Math.min(c,d)),(d=We(b,a,"maxHeight"))&&(c=Math.min(c,d));while((b=b.parentElement)&&"HTML"!=b.tagName);return c},Ze=function(a){var b=a.google_unique_id;return C(a,ie.D)&&0==("number"===typeof b?b:0)?2*rd(a).clientHeight/3:250};var Q=function(a,b,c,d,e,f,g,h,k,m,n,p,q,u){this.X=a;this.w=b;this.W=void 0===c?null:c;this.P=void 0===d?null:d;this.j=void 0===e?null:e;this.s=void 0===f?null:f;this.v=void 0===g?null:g;this.A=void 0===h?null:h;this.l=void 0===k?null:k;this.o=void 0===m?null:m;this.C=void 0===n?null:n;this.N=void 0===p?null:p;this.O=void 0===q?null:q;this.R=void 0===u?null:u},df=function(a,b,c){null!=a.W&&(c.google_responsive_formats=a.W);null!=a.P&&(c.google_safe_for_responsive_override=a.P);null!=a.j&&(c.google_full_width_responsive_allowed=a.j);1!=c.google_ad_resize&&(c.google_ad_width=a.w.j(b),c.google_ad_height=a.w.height(),c.google_ad_format=a.w.o(b),c.google_responsive_auto_format=a.X,c.google_ad_resizable=!0,c.google_override_format=1,c.google_loader_features_used=128,a.j&&(c.gfwrnh=a.w.height()+"px"));null!=a.s&&(c.google_fwr_non_expansion_reason=a.s);null!=a.v&&(c.gfwroml=a.v);null!=a.A&&(c.gfwromr=a.A);null!=a.l&&(c.gfwroh=a.l,c.google_resizing_height=A(a.l)||"");null!=a.o&&(c.gfwrow=a.o,c.google_resizing_width=A(a.o)||"");null!=a.C&&(c.gfwroz=a.C);null!=a.N&&(c.gml=a.N);null!=a.O&&(c.gmr=a.O);null!=a.R&&(c.gzi=a.R)};var ef=function(){return!(w("iPad")||w("Android")&&!w("Mobile")||w("Silk"))&&(w("iPod")||w("iPhone")||w("Android")||w("IEMobile"))};var ff=["google_content_recommendation_ui_type","google_content_recommendation_columns_num","google_content_recommendation_rows_num"],R={},gf=(R.image_stacked=1/1.91,R.image_sidebyside=1/3.82,R.mobile_banner_image_sidebyside=1/3.82,R.pub_control_image_stacked=1/1.91,R.pub_control_image_sidebyside=1/3.82,R.pub_control_image_card_stacked=1/1.91,R.pub_control_image_card_sidebyside=1/3.74,R.pub_control_text=0,R.pub_control_text_card=0,R),S={},hf=(S.image_stacked=80,S.image_sidebyside=0,S.mobile_banner_image_sidebyside=0,S.pub_control_image_stacked=80,S.pub_control_image_sidebyside=0,S.pub_control_image_card_stacked=85,S.pub_control_image_card_sidebyside=0,S.pub_control_text=80,S.pub_control_text_card=80,S),jf={},kf=(jf.pub_control_image_stacked=100,jf.pub_control_image_sidebyside=200,jf.pub_control_image_card_stacked=150,jf.pub_control_image_card_sidebyside=250,jf.pub_control_text=100,jf.pub_control_text_card=150,jf),lf=function(a,b){O.call(this,a,b)};ia(lf,O);lf.prototype.j=function(a){return Math.min(1200,Math.max(this.minWidth(),Math.round(a)))};var mf=function(a){var b=0;Hb(ff,function(c){null!=a[c]&&++b});if(0===b)return!1;if(b===ff.length)return!0;throw new H("Tags data-matched-content-ui-type, data-matched-content-columns-num and data-matched-content-rows-num should be set together.")},qf=function(a,b){nf(a,b);if(a<Ca){if(ef()){of(b,"mobile_banner_image_sidebyside",1,12);var c=+b.google_content_recommendation_columns_num;c=(a-8*c-8)/c;var d=b.google_content_recommendation_ui_type;b=b.google_content_recommendation_rows_num-1;return new Q(9,new lf(a,Math.floor(c/1.91+70)+Math.floor((c*gf[d]+hf[d])*b+8*b+8)))}of(b,"image_sidebyside",1,13);return new Q(9,pf(a))}of(b,"image_stacked",4,2);return new Q(9,pf(a))};function pf(a){return 1200<=a?new lf(1200,600):850<=a?new lf(a,Math.floor(.5*a)):550<=a?new lf(a,Math.floor(.6*a)):468<=a?new lf(a,Math.floor(.7*a)):new lf(a,Math.floor(3.44*a))}var rf=function(a,b){nf(a,b);var c=b.google_content_recommendation_ui_type.split(","),d=b.google_content_recommendation_columns_num.split(","),e=b.google_content_recommendation_rows_num.split(",");a:{if(c.length==d.length&&d.length==e.length){if(1==c.length){var f=0;break a}if(2==c.length){f=a<Ca?0:1;break a}throw new H("The parameter length of attribute data-matched-content-ui-type, data-matched-content-columns-num and data-matched-content-rows-num is too long. At most 2 parameters for each attribute are needed: one for mobile and one for desktop, while "+("you are providing "+c.length+' parameters. Example: \n data-matched-content-rows-num="4,2"\ndata-matched-content-columns-num="1,6"\ndata-matched-content-ui-type="image_stacked,image_card_sidebyside".'))}if(c.length!=d.length)throw new H('The parameter length of data-matched-content-ui-type does not match data-matched-content-columns-num. Example: \n data-matched-content-rows-num="4,2"\ndata-matched-content-columns-num="1,6"\ndata-matched-content-ui-type="image_stacked,image_card_sidebyside".');throw new H('The parameter length of data-matched-content-columns-num does not match data-matched-content-rows-num. Example: \n data-matched-content-rows-num="4,2"\ndata-matched-content-columns-num="1,6"\ndata-matched-content-ui-type="image_stacked,image_card_sidebyside".')}c=c[f];c=0==c.lastIndexOf("pub_control_",0)?c:"pub_control_"+c;d=+d[f];for(var g=kf[c],h=d;a/h<g&&1<h;)h--;h!==d&&l.console&&l.console.warn("adsbygoogle warning: data-matched-content-columns-num "+d+" is too large. We override it to "+h+".");d=h;e=+e[f];of(b,c,d,e);if(Number.isNaN(d)||0===d)throw new H("Wrong value for data-matched-content-columns-num");if(Number.isNaN(e)||0===e)throw new H("Wrong value for data-matched-content-rows-num");b=Math.floor(((a-8*d-8)/d*gf[c]+hf[c])*e+8*e+8);if(1500<a)throw new H("Calculated slot width is too large: "+a);if(1500<b)throw new H("Calculated slot height is too large: "+b);return new Q(9,new lf(a,b))};function nf(a,b){if(0>=a)throw new H("Invalid responsive width from Matched Content slot "+b.google_ad_slot+": "+a+". Please ensure to put this Matched Content slot into a non-zero width div container.")}function of(a,b,c,d){a.google_content_recommendation_ui_type=b;a.google_content_recommendation_columns_num=c;a.google_content_recommendation_rows_num=d};var sf=function(a,b){O.call(this,a,b)};ia(sf,O);sf.prototype.j=function(){return this.minWidth()};sf.prototype.l=function(a,b,c,d){var e=this.j(b);Ve(a,d,d.parentElement,b,e,c);1!=c.google_ad_resize&&(d.style.height=this.height()+"px")};var tf=function(a){return function(b){for(var c=a.length-1;0<=c;--c)if(!a[c](b))return!1;return!0}},uf=function(a,b,c){for(var d=a.length,e=null,f=0;f<d;++f){var g=a[f];if(b(g)){if(!c||c(g))return g;null===e&&(e=g)}}return e};var T=[new P(970,90,2),new P(728,90,2),new P(468,60,2),new P(336,280,1),new P(320,100,2),new P(320,50,2),new P(300,600,4),new P(300,250,1),new P(250,250,1),new P(234,60,2),new P(200,200,1),new P(180,150,1),new P(160,600,4),new P(125,125,1),new P(120,600,4),new P(120,240,4)],vf=[T[6],T[12],T[3],T[0],T[7],T[14],T[1],T[8],T[10],T[4],T[15],T[2],T[11],T[5],T[13],T[9]],wf=new P(120,120,1,!0),xf=new P(120,50,2,!0);var Af=function(a,b,c,d,e){e.gfwroml=d.style.marginLeft;e.gfwromr=d.style.marginRight;e.gfwroh=d.style.height;e.gfwrow=d.style.width;e.gfwroz=d.style.zIndex;e.google_full_width_responsive_allowed=!1;"false"!=e.google_full_width_responsive||yf(c)?zf(b,c,!0)||1==e.google_ad_resize?Re(a,c,d,e)?(e.google_full_width_responsive_allowed=!0,zf(b,c,!1)?b=I(c)||a:(e.google_fwr_non_expansion_reason=15,b=a)):b=a:(e.google_fwr_non_expansion_reason=2,b=a):(e.google_fwr_non_expansion_reason=1,b=a);return b!=a&&d.parentElement?b:a},Cf=function(a,b,c,d,e,f){f=void 0===f?!1:f;var g=Ib({},e);e=a;a=ed(247,gd,function(){return Af(a,b,c,d,g)});return Bf(a,b,c,d,g,e!=a,f)},zf=function(a,b,c){"auto"==a||"autorelaxed"==a&&C(b,qe.u)?b=!0:0<(Ne(a)&1)?(yf(b)?a=!0:(Pb(),a=Wd(),a=tb(a.V[101],!1)?!C(b,Yd.m):C(b,Yd.u)),b=a||c&&C(b,Yd.m)):b=!1;return b},Bf=function(a,b,c,d,e,f,g){g=void 0===g?!1:g;var h="auto"==b?.25>=a/Math.min(1200,I(c))?4:3:Ne(b);e.google_responsive_formats=h;var k=ef()&&!Ye(d,c)&&Me(d,c,e),m=ef()&&Ye(d,c)&&(C(c,ie.D)||C(c,ie.m))&&Me(d,c,e)&&C(c,ie.D),n=(k?vf:T).slice(0);n=Ea(n,Df(c));var p=488>I(c);p=[Xe(a),Ef(p),$e(p,c,d),Ie(h)];null!=e.google_max_responsive_height&&p.push(af(e.google_max_responsive_height));var q=A(e.gfwrow)||0,u=A(e.gfwroh)||0;g&&p.push(function(a){return a.minWidth()>=q&&a.height()>=u});var z=[function(a){return!a.za}];if(k||m)k=k?bf(c,d):cf(c,d),z.push(af(k));var J=uf(n,tf(p),tf(z));g&&(n=new P(q,u,h),J=J||n);if(!J)throw new H("No slot size for availableWidth="+a);J=ed(248,gd,function(){a:{var b=J;var h=g;h=void 0===h?!1:h;if(f){if(e.gfwrnh){var k=A(e.gfwrnh);if(k){h=new sf(a,k);break a}}if(Ye(d,c))h=new sf(a,b.height());else{b=a/1.2;k=bf(c,d);k=Math.min(b,k);if(k<.5*b||100>k)k=b;h&&(h=A(e.gfwroh)||0,k=Math.max(k,h));h=new sf(a,Math.floor(k))}}else h=b}return h});b=Ff(b,h);return new Q(b,J,h,e.google_safe_for_responsive_override,e.google_full_width_responsive_allowed,e.google_fwr_non_expansion_reason,e.gfwroml,e.gfwromr,e.gfwroh,e.gfwrow,e.gfwroz,e.gml,e.gmr,e.gzi)},Ff=function(a,b){if("auto"==a)return 1;switch(b){case 2:return 2;case 1:return 3;case 4:return 4;case 3:return 5;case 6:return 6;case 5:return 7;case 7:return 8}throw Error("bad mask")},Ef=function(a){return function(b){return!(320==b.minWidth()&&(a&&50==b.height()||!a&&100==b.height()))}},yf=function(a){return a.location&&"#google_full_width_responsive_preview"==a.location.hash},Df=function(a){var b=[],c=C(a,le.F);(C(a,le.G)||c)&&b.push(wf);(C(a,le.H)||c)&&b.push(xf);return b};var Gf={"image-top":function(a){return 600>=a?284+.414*(a-250):429},"image-middle":function(a){return 500>=a?196-.13*(a-250):164+.2*(a-500)},"image-side":function(a){return 500>=a?205-.28*(a-250):134+.21*(a-500)},"text-only":function(a){return 500>=a?187-.228*(a-250):130},"in-article":function(a){return 420>=a?a/1.2:460>=a?a/1.91+130:800>=a?a/4:200}},Hf=function(a,b){O.call(this,a,b)};ia(Hf,O);Hf.prototype.j=function(){return Math.min(1200,this.minWidth())};var If=function(a,b,c,d,e){var f=e.google_ad_layout||"image-top";if("in-article"==f&&"false"!=e.google_full_width_responsive&&(C(b,$d.K)||C(b,$d.T)||C(b,$d.m))&&Qe(b,c,a,.2,e)){var g=I(b);if(g&&(e.google_full_width_responsive_allowed=!0,!C(b,$d.m))){var h=c.parentElement;if(h){b:for(var k=c,m=0;100>m&&k.parentElement;++m){for(var n=k.parentElement.childNodes,p=0;p<n.length;++p){var q=n[p];if(q!=k&&Ue(b,q))break b}k=k.parentElement;k.style.width="100%";k.style.height="auto"}Ve(b,c,h,a,g,e);a=g}}}if(250>a)throw new H("Fluid responsive ads must be at least 250px wide: availableWidth="+a);b=Math.min(1200,Math.floor(a));if(d&&"in-article"!=f){f=Math.ceil(d);if(50>f)throw new H("Fluid responsive ads must be at least 50px tall: height="+f);return new Q(11,new O(b,f))}if("in-article"!=f&&(d=e.google_ad_layout_key)){f=""+d;d=Math.pow(10,3);if(c=(e=f.match(/([+-][0-9a-z]+)/g))&&e.length){a=[];for(g=0;g<c;g++)a.push(parseInt(e[g],36)/d);d=a}else d=null;if(!d)throw new H("Invalid data-ad-layout-key value: "+f);f=(b+-725)/1E3;e=0;c=1;a=d.length;for(g=0;g<a;g++)e+=d[g]*c,c*=f;f=Math.ceil(1E3*e- -725+10);if(isNaN(f))throw new H("Invalid height: height="+f);if(50>f)throw new H("Fluid responsive ads must be at least 50px tall: height="+f);if(1200<f)throw new H("Fluid responsive ads must be at most 1200px tall: height="+f);return new Q(11,new O(b,f))}d=Gf[f];if(!d)throw new H("Invalid data-ad-layout value: "+f);d=Math.ceil(d(b));return new Q(11,"in-article"==f?new Hf(b,d):new O(b,d))};var U=function(a,b){O.call(this,a,b)};ia(U,O);U.prototype.j=function(){return this.minWidth()};U.prototype.o=function(a){return O.prototype.o.call(this,a)+"_0ads_al"};var Jf=[new U(728,15),new U(468,15),new U(200,90),new U(180,90),new U(160,90),new U(120,90)],Kf=function(a,b,c,d){var e=90;d=void 0===d?130:d;e=void 0===e?30:e;var f=uf(Jf,Xe(a));if(!f)throw new H("No link unit size for width="+a+"px");a=Math.min(a,1200);f=f.height();b=Math.max(f,b);a=(new Q(10,new U(a,Math.min(b,15==f?e:d)))).w;b=a.minWidth();a=a.height();15<=c&&(a=c);return new Q(10,new U(b,a))};var Lf=function(a){var b=a.google_ad_format;if("autorelaxed"==b)return mf(a)?9:5;if("auto"==b||/^((^|,) *(horizontal|vertical|rectangle) *)+$/.test(b))return 1;if("link"==b)return 4;if("fluid"==b)return 8},Mf=function(a,b,c,d,e){var f=d.google_ad_height||We(c,e,"height");switch(a){case 5:return a=ed(247,gd,function(){return Af(b,d.google_ad_format,e,c,d)}),a!=b&&Ve(e,c,c.parentElement,b,a,d),qf(a,d);case 9:return rf(b,d);case 4:return Kf(b,cf(e,c),f,B(e,be.ea)?250:190);case 8:return If(b,e,c,f,d)}};var Nf=/^(\d+)x(\d+)(|_[a-z]*)$/,Of=function(a){return C(a,"165767636")};var V=function(a){this.s=[];this.l=a||window;this.j=0;this.o=null;this.N=0},Pf;V.prototype.O=function(a,b){0!=this.j||0!=this.s.length||b&&b!=window?this.v(a,b):(this.j=2,this.C(new Qf(a,window)))};V.prototype.v=function(a,b){this.s.push(new Qf(a,b||this.l));Rf(this)};V.prototype.R=function(a){this.j=1;if(a){var b=fd(188,sa(this.A,this,!0));this.o=this.l.setTimeout(b,a)}};V.prototype.A=function(a){a&&++this.N;1==this.j&&(null!=this.o&&(this.l.clearTimeout(this.o),this.o=null),this.j=0);Rf(this)};V.prototype.X=function(){return!(!window||!Array)};V.prototype.P=function(){return this.N};var Rf=function(a){var b=fd(189,sa(a.va,a));a.l.setTimeout(b,0)};V.prototype.va=function(){if(0==this.j&&this.s.length){var a=this.s.shift();this.j=2;var b=fd(190,sa(this.C,this,a));a.j.setTimeout(b,0);Rf(this)}};V.prototype.C=function(a){this.j=0;a.l()};var Sf=function(a){try{return a.sz()}catch(b){return!1}},Tf=function(a){return!!a&&("object"===typeof a||"function"===typeof a)&&Sf(a)&&Jb(a.nq)&&Jb(a.nqa)&&Jb(a.al)&&Jb(a.rl)},Uf=function(){if(Pf&&Sf(Pf))return Pf;var a=nd(),b=a.google_jobrunner;return Tf(b)?Pf=b:a.google_jobrunner=Pf=new V(a)},Vf=function(a,b){Uf().nq(a,b)},Wf=function(a,b){Uf().nqa(a,b)};V.prototype.nq=V.prototype.O;V.prototype.nqa=V.prototype.v;V.prototype.al=V.prototype.R;V.prototype.rl=V.prototype.A;V.prototype.sz=V.prototype.X;V.prototype.tc=V.prototype.P;var Qf=function(a,b){this.l=a;this.j=b};var Xf=function(a,b){var c=Rb(b);if(c){c=I(c);var d=y(a,b)||{},e=d.direction;if("0px"===d.width&&"none"!=d.cssFloat)return-1;if("ltr"===e&&c)return Math.floor(Math.min(1200,c-a.getBoundingClientRect().left));if("rtl"===e&&c)return a=b.document.body.getBoundingClientRect().right-a.getBoundingClientRect().right,Math.floor(Math.min(1200,c-a-Math.floor((c-b.document.body.clientWidth)/2)))}return-1};var Yf=function(a,b,c){c||(c=yb?"https":"http");l.location&&"https:"==l.location.protocol&&"http"==c&&(c="https");return[c,"://",a,b].join("")};var $f=function(a){var b=this;this.j=a;a.google_iframe_oncopy||(a.google_iframe_oncopy={handlers:{},upd:function(a,d){var c=Zf("rx",a);a:{if(a&&(a=a.match("dt=([^&]+)"))&&2==a.length){a=a[1];break a}a=""}a=(new Date).getTime()-a;c=c.replace(/&dtd=(\d+|-?M)/,"&dtd="+(1E5<=a?"M":0<=a?a:"-M"));b.set(d,c);return c}});this.l=a.google_iframe_oncopy};$f.prototype.set=function(a,b){var c=this;this.l.handlers[a]=b;this.j.addEventListener&&this.j.addEventListener("load",function(){var b=c.j.document.getElementById(a);try{var e=b.contentWindow.document;if(b.onload&&e&&(!e.body||!e.body.firstChild))b.onload()}catch(f){}},!1)};var Zf=function(a,b){var c=new RegExp("\\b"+a+"=(\\d+)"),d=c.exec(b);d&&(b=b.replace(c,a+"="+(+d[1]+1||1)));return b},ag=Ra("var i=this.id,s=window.google_iframe_oncopy,H=s&&s.handlers,h=H&&H[i],w=this.contentWindow,d;try{d=w.document}catch(e){}if(h&&d&&(!d.body||!d.body.firstChild)){if(h.call){setTimeout(h,0)}else if(h.match){try{h=s.upd(h,i)}catch(e){}w.location.replace(h)}}");var bg={'"':'\\"',"\\":"\\\\","/":"\\/","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\x0B":"\\u000b"},cg=/\uffff/.test("\uffff")?/[\\"\x00-\x1f\x7f-\uffff]/g:/[\\"\x00-\x1f\x7f-\xff]/g,dg=function(){},fg=function(a,b,c){switch(typeof b){case "string":eg(b,c);break;case "number":c.push(isFinite(b)&&!isNaN(b)?String(b):"null");break;case "boolean":c.push(String(b));break;case "undefined":c.push("null");break;case "object":if(null==b){c.push("null");break}if(b instanceof Array||void 0!=b.length&&b.splice){var d=b.length;c.push("[");for(var e="",f=0;f<d;f++)c.push(e),fg(a,b[f],c),e=",";c.push("]");break}c.push("{");d="";for(e in b)b.hasOwnProperty(e)&&(f=b[e],"function"!=typeof f&&(c.push(d),eg(e,c),c.push(":"),fg(a,f,c),d=","));c.push("}");break;case "function":break;default:throw Error("Unknown type: "+typeof b)}},eg=function(a,b){b.push('"');b.push(a.replace(cg,function(a){if(a in bg)return bg[a];var b=a.charCodeAt(0),c="\\u";16>b?c+="000":256>b?c+="00":4096>b&&(c+="0");return bg[a]=c+b.toString(16)}));b.push('"')};var gg={},hg=(gg.google_ad_modifications=!0,gg.google_analytics_domain_name=!0,gg.google_analytics_uacct=!0,gg),ig=function(a){try{if(l.JSON&&l.JSON.stringify&&l.encodeURIComponent){var b=function(){return this};if(Object.prototype.hasOwnProperty("toJSON")){var c=Object.prototype.toJSON;Object.prototype.toJSON=b}if(Array.prototype.hasOwnProperty("toJSON")){var d=Array.prototype.toJSON;Array.prototype.toJSON=b}var e=l.encodeURIComponent(l.JSON.stringify(a));try{var f=Yb?l.btoa(e):Zb(Ub(e),void 0)}catch(g){f="#"+Zb(Ub(e),!0)}c&&(Object.prototype.toJSON=c);d&&(Array.prototype.toJSON=d);return f}}catch(g){G.j(237,g,void 0,void 0)}return""},jg=function(a){a.google_page_url&&(a.google_page_url=String(a.google_page_url));var b=[];Hb(a,function(a,d){if(null!=a){try{var c=[];fg(new dg,a,c);var f=c.join("")}catch(g){}f&&(f=f.replace(/\//g,"\\$&"),Kb(b,d,"=",f,";"))}});return b.join("")};var mg=function(){var a=l;this.l=a=void 0===a?l:a;this.v="https://securepubads.g.doubleclick.net/static/3p_cookie.html";this.j=2;this.o=[];this.s=!1;a:{a=kb(!1,50);b:{try{var b=l.parent;if(b&&b!=l){var c=b;break b}}catch(g){}c=null}c&&a.unshift(c);a.unshift(l);var d;for(c=0;c<a.length;++c)try{var e=a[c],f=kg(e);if(f){this.j=lg(f);if(2!=this.j)break a;!d&&x(e)&&(d=e)}}catch(g){}this.l=d||this.l}},og=function(a){if(2!=ng(a)){for(var b=1==ng(a),c=0;c<a.o.length;c++)try{a.o[c](b)}catch(d){}a.o=[]}},pg=function(a){var b=kg(a.l);b&&2==a.j&&(a.j=lg(b))},ng=function(a){pg(a);return a.j},rg=function(a){var b=qg;b.o.push(a);if(2!=b.j)og(b);else if(b.s||(Bb(b.l,"message",function(a){var c=kg(b.l);if(c&&a.source==c&&2==b.j){switch(a.data){case "3p_cookie_yes":b.j=1;break;case "3p_cookie_no":b.j=0}og(b)}}),b.s=!0),kg(b.l))og(b);else{a=(new Ab(b.l.document)).j.createElement("IFRAME");a.src=b.v;a.name="detect_3p_cookie";a.style.visibility="hidden";a.style.display="none";a.onload=function(){pg(b);og(b)};try{b.l.document.body.appendChild(a)}catch(c){}}},sg=function(a,b){try{return!(!a.frames||!a.frames[b])}catch(c){return!1}},kg=function(a){return a.frames&&a.frames[fb("detect_3p_cookie")]||null},lg=function(a){return sg(a,"3p_cookie_yes")?1:sg(a,"3p_cookie_no")?0:2};var tg=function(a,b,c,d,e){d=void 0===d?"":d;var f=a.createElement("link");f.rel=c;-1!=c.toLowerCase().indexOf("stylesheet")?b=Ia(b):b instanceof Ha?b=Ia(b):b instanceof Wa?b instanceof Wa&&b.constructor===Wa&&b.wa===Va?b=b.ba:(t(b),b="type_error:SafeUrl"):(b instanceof Wa||(b=b.na?b.aa():String(b),Xa.test(b)||(b="about:invalid#zClosurez"),b=Ya(b)),b=b.aa());f.href=b;d&&"preload"==c&&(f.as=d);e&&(f.nonce=e);if(a=a.getElementsByTagName("head")[0])try{a.appendChild(f)}catch(g){}};var ug=/^\.google\.(com?\.)?[a-z]{2,3}$/,vg=/\.(cn|com\.bi|do|sl|ba|by|ma)$/,wg=function(a){return ug.test(a)&&!vg.test(a)},xg=l,qg,yg=function(a){a="https://"+("adservice"+a+"/adsid/integrator.js");var b=["domain="+encodeURIComponent(l.location.hostname)];W[3]>=+new Date&&b.push("adsid="+encodeURIComponent(W[1]));return a+"?"+b.join("&")},W,X,zg=function(){xg=l;W=xg.googleToken=xg.googleToken||{};var a=+new Date;W[1]&&W[3]>a&&0<W[2]||(W[1]="",W[2]=-1,W[3]=-1,W[4]="",W[6]="");X=xg.googleIMState=xg.googleIMState||{};wg(X[1])||(X[1]=".google.com");"array"==t(X[5])||(X[5]=[]);"boolean"==typeof X[6]||(X[6]=!1);"array"==t(X[7])||(X[7]=[]);r(X[8])||(X[8]=0)},Y={$:function(){return 0<X[8]},Ba:function(){X[8]++},Ca:function(){0<X[8]&&X[8]--},Da:function(){X[8]=0},Ha:function(){return!1},ma:function(){return X[5]},ka:function(a){try{a()}catch(b){l.setTimeout(function(){throw b},0)}},qa:function(){if(!Y.$()){var a=l.document,b=function(b){b=yg(b);a:{try{var c=jb();break a}catch(h){}c=void 0}var d=c;tg(a,b,"preload","script",d);c=a.createElement("script");c.type="text/javascript";d&&(c.nonce=d);c.onerror=function(){return l.processGoogleToken({},2)};b=eb(b);c.src=Ia(b);try{(a.head||a.body||a.documentElement).appendChild(c),Y.Ba()}catch(h){}},c=X[1];b(c);".google.com"!=c&&b(".google.com");b={};var d=(b.newToken="FBT",b);l.setTimeout(function(){return l.processGoogleToken(d,1)},1E3)}}},Ag=function(a){zg();var b=xg.googleToken[5]||0;a&&(0!=b||W[3]>=+new Date?Y.ka(a):(Y.ma().push(a),Y.qa()));W[3]>=+new Date&&W[2]>=+new Date||Y.qa()},Bg=function(a){l.processGoogleToken=l.processGoogleToken||function(a,c){var b=a;b=void 0===b?{}:b;c=void 0===c?0:c;a=b.newToken||"";var e="NT"==a,f=parseInt(b.freshLifetimeSecs||"",10),g=parseInt(b.validLifetimeSecs||"",10);e&&!g&&(g=3600);var h=b["1p_jar"]||"";b=b.pucrd||"";zg();1==c?Y.Da():Y.Ca();var k=xg.googleToken=xg.googleToken||{},m=0==c&&a&&na(a)&&!e&&r(f)&&0<f&&r(g)&&0<g&&na(h);e=e&&!Y.$()&&(!(W[3]>=+new Date)||"NT"==W[1]);var n=!(W[3]>=+new Date)&&0!=c;if(m||e||n)e=+new Date,f=e+1E3*f,g=e+1E3*g,1E-5>Math.random()&&Fb("https://pagead2.googlesyndication.com/pagead/gen_204?id=imerr&err="+c,void 0),k[5]=c,k[1]=a,k[2]=f,k[3]=g,k[4]=h,k[6]=b,zg();if(m||!Y.$()){c=Y.ma();for(a=0;a<c.length;a++)Y.ka(c[a]);c.length=0}};Ag(a)},Cg=function(a){qg=qg||new mg;rg(function(b){b&&a()})};var Z=fb("script"),Gg=function(){var a=B(v,L.J),b=B(v,L.I)||a;if((B(v,L.u)||B(v,L.U)||b)&&!v.google_sa_queue){v.google_sa_queue=[];v.google_sl_win=v;v.google_process_slots=function(){return Dg(v,!a)};var c=b?Eg():Eg("/show_ads_impl_single_load.js");tg(v.document,c,"preload","script");b?(b=document.createElement("IFRAME"),b.id="google_shimpl",b.style.display="none",v.document.documentElement.appendChild(b),Fe(v,"google_shimpl","<!doctype html><html><body>"+("<"+Z+">")+"google_sailm=true;google_sl_win=window.parent;google_async_iframe_id='google_shimpl';"+("</"+Z+">")+Fg()+"</body></html>"),b.contentWindow.document.close()):lb(v.document,c)}},Dg=fd(215,function(a,b,c){c=void 0===c?+new Date:c;var d=a.google_sa_queue,e=d.shift();"function"==t(e)&&ed(216,gd,e);d.length&&(b||50<+new Date-c?a.setTimeout(function(){return Dg(a,b)},0):Dg(a,b,c))}),Fg=function(a){return["<",Z,' src="',Eg(void 0===a?"/show_ads_impl.js":a),'"></',Z,">"].join("")},Eg=function(a){a=void 0===a?"/show_ads_impl.js":a;var b=xb?"https":"http";a:{if(vb)try{var c=v.google_cafe_host||v.top.google_cafe_host;if(c){var d=c;break a}}catch(e){}d=Ba("","pagead2.googlesyndication.com")}return Yf(d,["/pagead/js/",ub(),"/r20170110",a,""].join(""),b)},Hg=function(a,b,c,d){return function(){var e=!1;d&&Uf().al(3E4);try{Fe(a,b,c),e=!0}catch(g){var f=nd().google_jobrunner;Tf(f)&&f.rl()}e&&(e=Zf("google_async_rrc",c),(new $f(a)).set(b,Hg(a,b,e,!1)))}},Ig=function(a){var b=["<iframe"];Hb(a,function(a,d){null!=a&&b.push(" "+d+'="'+Ra(a)+'"')});b.push("></iframe>");return b.join("")},Kg=function(a,b,c){Jg(a,b,c,function(a,b,f){a=a.document;for(var d=b.id,e=0;!d||a.getElementById(d);)d="aswift_"+e++;b.id=d;b.name=d;d=Number(f.google_ad_width);e=Number(f.google_ad_height);16==f.google_reactive_ad_format?(f=a.createElement("div"),a=Ee(b,d,e),f.innerHTML=a,c.appendChild(f.firstChild)):(f=Ee(b,d,e),c.innerHTML=f);return b.id})},Jg=function(a,b,c,d){var e={},f=b.google_ad_width,g=b.google_ad_height;null!=f&&(e.width=f&&'"'+f+'"');null!=g&&(e.height=g&&'"'+g+'"');e.frameborder='"0"';e.marginwidth='"0"';e.marginheight='"0"';e.vspace='"0"';e.hspace='"0"';e.allowtransparency='"true"';e.scrolling='"no"';e.allowfullscreen='"true"';e.onload='"'+ag+'"';d=d(a,e,b);f=b.google_ad_output;e=b.google_ad_format;g=b.google_ad_width||0;var h=b.google_ad_height||0;e||"html"!=f&&null!=f||(e=g+"x"+h);f=!b.google_ad_slot||b.google_override_format||!xa[b.google_ad_width+"x"+b.google_ad_height]&&"aa"==b.google_loader_used;e&&f?e=e.toLowerCase():e="";b.google_ad_format=e;if(!r(b.google_reactive_sra_index)||!b.google_ad_unit_key){e=[b.google_ad_slot,b.google_orig_ad_format||b.google_ad_format,b.google_ad_type,b.google_orig_ad_width||b.google_ad_width,b.google_orig_ad_height||b.google_ad_height];f=[];g=0;for(h=c;h&&25>g;h=h.parentNode,++g)f.push(9!==h.nodeType&&h.id||"");(f=f.join())&&e.push(f);b.google_ad_unit_key=ob(e.join(":")).toString();e=[];for(f=0;c&&25>f;++f){g=(g=9!==c.nodeType&&c.id)?"/"+g:"";a:{if(c&&c.nodeName&&c.parentElement){h=c.nodeName.toString().toLowerCase();for(var k=c.parentElement.childNodes,m=0,n=0;n<k.length;++n){var p=k[n];if(p.nodeName&&p.nodeName.toString().toLowerCase()===h){if(c===p){h="."+m;break a}++m}}}h=""}e.push((c.nodeName&&c.nodeName.toString().toLowerCase())+g+h);c=c.parentElement}c=e.join()+":";e=a;f=[];if(e)try{var q=e.parent;for(g=0;q&&q!==e&&25>g;++g){var u=q.frames;for(h=0;h<u.length;++h)if(e===u[h]){f.push(h);break}e=q;q=e.parent}}catch(J){}b.google_ad_dom_fingerprint=ob(c+f.join()).toString()}q=jg(b);u=ig(b);var z;b=b.google_ad_client;if(!Ge)b:{c=kb();for(e=0;e<c.length;e++)try{if(z=c[e].frames.google_esf){Ge=z;break b}}catch(J){}Ge=null}Ge?z="":(z={style:"display:none"},/[^a-z0-9-]/.test(b)?z="":(z["data-ad-client"]=De(b),z.id="google_esf",z.name="google_esf",z.src=Yf(zb(),["/pagead/html/",ub(),"/r20170110/zrt_lookup.html#"].join("")),z=Ig(z)));b=z;z=B(a,L.u)||B(a,L.U)||B(a,L.I)||B(a,L.J);c=B(a,L.I)||B(a,L.J)||B(a,je.u);e=va;f=(new Date).getTime();a.google_t12n_vars=Td;g=a;g=Eb(Db(g))||g;g=g.google_unique_id;B(a,je.u)?(h="<"+Z+">window.google_process_slots=function(){window.google_sa_impl({iframeWin: window, pubWin: window.parent});"+("};</"+Z+">"),k=Fg(),h+=k):h=B(a,L.m)?Fg("/show_ads_impl.js?"+L.m):B(a,L.u)||B(a,L.U)?"<"+Z+">window.parent.google_sa_impl.call("+("this, window, document, location);</"+Z+">"):B(a,L.I)||B(a,L.J)?"<"+Z+">window.parent.google_sa_impl({iframeWin: window, pubWin: window.parent});</"+Z+">":B(a,me.u)?Fg("/show_ads_impl_le.js"):B(a,me.m)?Fg("/show_ads_impl_le_c.js"):Fg();q=["<!doctype html><html><body>",b,"<"+Z+">",q,"google_sailm="+c+";",z?"google_sl_win=window.parent;":"","google_unique_id="+("number"===typeof g?g:0)+";",'google_async_iframe_id="'+d+'";',"google_start_time="+e+";",u?'google_pub_vars="'+u+'";':"","google_bpp="+(f>e?f-e:1)+";","google_async_rrc=0;google_iframe_start_time=new Date().getTime();","</"+Z+">",h,"</body></html>"].join("");b=a.document.getElementById(d)?Vf:Wf;d=Hg(a,d,q,!0);z?(a.google_sa_queue=a.google_sa_queue||[],a.google_sa_impl?b(d):a.google_sa_queue.push(d)):b(d)},Lg=function(a,b){var c=navigator;a&&b&&c&&(a=a.document,b=De(b),/[^a-z0-9-]/.test(b)||((c=Ja("r20160913"))&&(c+="/"),lb(a,Yf("pagead2.googlesyndication.com","/pub-config/"+c+b+".js"))))};var Mg=function(a,b,c){for(var d=a.attributes,e=d.length,f=0;f<e;f++){var g=d[f];if(/data-/.test(g.name)){var h=Ja(g.name.replace("data-matched-content","google_content_recommendation").replace("data","google").replace(/-/g,"_"));if(!b.hasOwnProperty(h)){g=g.value;var k={};k=(k.google_reactive_ad_format=za,k.google_allow_expandable_ads=tb,k);g=k.hasOwnProperty(h)?k[h](g,null):g;null===g||(b[h]=g)}}}if(c.document&&c.document.body&&!Lf(b)&&!b.google_reactive_ad_format&&(d=parseInt(a.style.width,10),e=Xf(a,c),0<e&&d>e))if(f=parseInt(a.style.height,10),d=!!xa[d+"x"+f],B(c,fe.Y))b.google_ad_resize=0;else{h=e;if(d)if(g=ya(e,f))h=g,b.google_ad_format=g+"x"+f+"_0ads_al";else throw Error("TSS="+e);b.google_ad_resize=1;b.google_ad_width=h;d||(b.google_ad_format=null,b.google_override_format=!0);e=h;a.style.width=e+"px";f=Cf(e,"auto",c,a,b);h=e;f.w.l(c,h,b,a);df(f,h,b);f=f.w;b.google_responsive_formats=null;f.minWidth()>e&&!d&&(b.google_ad_width=f.minWidth(),a.style.width=f.minWidth()+"px")}d=b.google_reactive_ad_format;if(!b.google_enable_content_recommendations||1!=d&&2!=d){d=a.offsetWidth||(b.google_ad_resize?parseInt(a.style.width,10):0);a:if(e=ta(Cf,d,"auto",c,a,b,!0),f=B(c,"182982000"),h=B(c,"182982100"),(f||h)&&ef()&&!b.google_reactive_ad_format&&!Lf(b)){for(h=a;h;h=h.parentElement){if(k=g=y(h,c)){b:if(g=g.position,k=["static","relative"],na(k))g=na(g)&&1==g.length?k.indexOf(g,0):-1;else{for(var m=0;m<k.length;m++)if(m in k&&k[m]===g){g=m;break b}g=-1}k=0<=g}if(!k)break a}b.google_resizing_allowed=!0;f?(f={},df(e(),d,f),b.google_resizing_width=f.google_ad_width,b.google_resizing_height=f.google_ad_height):b.google_ad_format="auto"}if(d=Lf(b))e=a.offsetWidth||(b.google_ad_resize?parseInt(a.style.width,10):0),f=(f=Mf(d,e,a,b,c))?f:Cf(e,b.google_ad_format,c,a,b,b.google_resizing_allowed),f.w.l(c,e,b,a),df(f,e,b),1!=d&&(b=f.w.height(),a.style.height=b+"px");else{if(!rb.test(b.google_ad_width)&&!qb.test(a.style.width)||!rb.test(b.google_ad_height)&&!qb.test(a.style.height)){if(d=y(a,c))a.style.width=d.width,a.style.height=d.height,Je(d,b);b.google_ad_width||(b.google_ad_width=a.offsetWidth);b.google_ad_height||(b.google_ad_height=a.offsetHeight);b.google_loader_features_used=256;d=Db(c);b.google_responsive_auto_format=d?d.data&&"rspv"==d.data.autoFormat?13:14:12}else Je(a.style,b),b.google_ad_output&&"html"!=b.google_ad_output||300!=b.google_ad_width||250!=b.google_ad_height||(d=a.style.width,a.style.width="100%",e=a.offsetWidth,a.style.width=d,b.google_available_width=e);C(c,"153762914")||C(c,"153762975")||C(c,"164692081")||Of(c)?(b.google_resizing_allowed=!1,d=!0):d=!1;if(d&&(e=a.parentElement)){d=b.google_ad_format;if(f=Nf.test(d)||!d){f=Rb(c);if(!(h=null==f||b.google_reactive_ad_format)){h=I(f);if(!(f=!(488>h&&320<h)||!(f.innerHeight>=f.innerWidth)||Oe(e,c)))a:{b:{f=e;for(h=0;100>h&&f;h++){if((g=y(f,c))&&-1!=g.display.indexOf("table")){f=!0;break b}f=f.parentElement}f=!1}if(f)for(f=e,h=!1,g=0;100>g&&f;g++){k=f.style;if("auto"==k.margin||"auto"==k.marginLeft||"auto"==k.marginRight)h=!0;if(h){f=!0;break a}f=f.parentElement}f=!1}h=f}f=(h?!1:!0)&&Le(a,c)}if(f&&(f=a.offsetWidth||parseInt(a.style.width,10)||b.google_ad_width,h=I(c))&&(g=y(e,c))&&(g=Te(g,h,f),m=g.pa,k=g.direction,g=g.la,!(5>g||.4<g/h))){g=b.google_resizing_allowed=!0;if(C(c,"164692081")||Of(c))g=Pe(e,c);e=-1*(Se(e)+m)+"px";if(C(c,"153762975")||Of(c))"rtl"==k?a.style.marginRight=e:a.style.marginLeft=e,a.style.width=h+"px",a.style.zIndex=1932735282;e="";k=parseInt(a.offsetHeight||a.style.height||b.google_ad_height,10);d&&(d=d.match(Nf),e=d[3],k=parseInt(d[2],10));g&&Of(c)&&(d=f/k,1.15<d&&(Ke(a,c)<rd(c).clientHeight||(k=3>d?Math.round(5*h/6):Math.round(k*h/f))));if(C(c,"153762975")||Of(c))b.google_ad_format=h+"x"+k+e,b.google_ad_width=h,b.google_ad_height=k,a.style.height=k+"px";b.google_resizing_width=h;b.google_resizing_height=k}}C(c,ae.u)&&12==b.google_responsive_auto_format&&(b.efwr=Re(a.offsetWidth||parseInt(a.style.width,10)||b.google_ad_width,c,a,b))}}else b.google_ad_width=I(c),b.google_ad_height=50,a.style.display="none"};var Ng=!1,Og=0,Pg=!1,Qg=!1,Rg=function(a){return Qb.test(a.className)&&"done"!=a.getAttribute("data-adsbygoogle-status")},Tg=function(a,b){var c=window;a.setAttribute("data-adsbygoogle-status","done");Sg(a,b,c)},Sg=function(a,b,c){var d=Pb();d.google_spfd||(d.google_spfd=Mg);(d=b.google_reactive_ads_config)||Mg(a,b,c);if(!Ug(a,b,c)){if(d){if(Ng)throw new H("Only one 'enable_page_level_ads' allowed per page.");Ng=!0}else b.google_ama||Mb(c);Pg||(Pg=!0,Lg(c,b.google_ad_client));Hb(hg,function(a,d){b[d]=b[d]||c[d]});b.google_loader_used="aa";b.google_reactive_tag_first=1===Og;if((d=b.google_ad_output)&&"html"!=d&&"js"!=d)throw new H("No support for google_ad_output="+d);ed(164,gd,function(){Kg(c,b,a)})}},Ug=function(a,b,c){var d=b.google_reactive_ads_config;if(d){var e=d.page_level_pubvars;var f=(pa(e)?e:{}).google_tag_origin}if(b.google_ama||"js"===b.google_ad_output)return!1;var g=b.google_ad_slot;e=c.google_ad_modifications;!e||Sb(e.ad_whitelist,g,f||b.google_tag_origin)?e=null:(f=e.space_collapsing||"none",e=(g=Sb(e.ad_blacklist,g))?{ia:!0,ra:g.space_collapsing||f}:e.remove_ads_by_default?{ia:!0,ra:f}:null);if(e&&e.ia&&"on"!=b.google_adtest)return"slot"==e.ra&&(null!==sb(a.getAttribute("width"))&&a.setAttribute("width",0),null!==sb(a.getAttribute("height"))&&a.setAttribute("height",0),a.style.width="0px",a.style.height="0px"),!0;if((e=y(a,c))&&"none"==e.display&&!("on"==b.google_adtest||0<b.google_reactive_ad_format||d))return c.document.createComment&&a.appendChild(c.document.createComment("No ad requested because of display:none on the adsbygoogle tag")),!0;a=null==b.google_pgb_reactive||3===b.google_pgb_reactive;return 1!==b.google_reactive_ad_format&&8!==b.google_reactive_ad_format||!a?!1:(l.console&&l.console.warn("Adsbygoogle tag with data-reactive-ad-format="+b.google_reactive_ad_format+" is deprecated. Check out page-level ads at https://www.google.com/adsense"),!0)},Vg=function(a){for(var b=document.getElementsByTagName("ins"),c=0,d=b[c];c<b.length;d=b[++c]){var e=d;if(Rg(e)&&"reserved"!=e.getAttribute("data-adsbygoogle-status")&&(!a||d.id==a))return d}return null},Wg=function(a){if(!Qg){Qg=!0;try{var b=l.localStorage.getItem("google_ama_config")}catch(da){b=null}try{var c=b?new oc(b?JSON.parse(b):null):null}catch(da){c=null}if(b=c)if(c=ec(b,pc,3),!c||E(c,1)<=+new Date)try{l.localStorage.removeItem("google_ama_config")}catch(da){kd(l,{lserr:1})}else try{var d=dc(b,5);if(0<d.length){var e=new rc,f=d||[];2<e.v?e.l[2+e.s]=f:(bc(e),e.o[2]=f);var g=e}else b:{f=l.location.pathname;var h=fc(b,rc,7);e={};for(d=0;d<h.length;++d){var k=E(h[d],1);r(k)&&!e[k]&&(e[k]=h[d])}for(var m=f.replace(/(^\/)|(\/$)/g,"");;){var n=ob(m);if(e[n]){g=e[n];break b}if(!m){g=null;break b}m=m.substring(0,m.lastIndexOf("/"))}}var p;if(p=g)a:{var q=dc(g,2);if(q)for(g=0;g<q.length;g++)if(1==q[g]){p=!0;break a}p=!1}if(p){var u=new Kd;(new Od(new Gd(a,b),u)).start();var z=u.l;var J=ta(Rd,l);if(z.ca)throw Error("Then functions already set.");z.ca=ta(Qd,l);z.sa=J;Md(z)}}catch(da){kd(l,{atf:-1})}}},Xg=function(){var a=document.createElement("ins");a.className="adsbygoogle";a.style.display="none";return a},Yg=function(a){var b={};Hb(Tb,function(c,d){!1===a.enable_page_level_ads?b[d]=!1:a.hasOwnProperty(d)&&(b[d]=a[d])});pa(a.enable_page_level_ads)&&(b.page_level_pubvars=a.enable_page_level_ads);var c=Xg();wa.body.appendChild(c);var d={};d=(d.google_reactive_ads_config=b,d.google_ad_client=a.google_ad_client,d);Tg(c,d)},Zg=function(a){var b=Rb(window);if(!b)throw new H("Page-level tag does not work inside iframes.");b.google_reactive_ads_global_state||(b.google_reactive_ads_global_state=new Sd);b.google_reactive_ads_global_state.wasPlaTagProcessed=!0;wa.body?Yg(a):Bb(wa,"DOMContentLoaded",fd(191,function(){Yg(a)}))},ah=function(a){var b={};ed(165,hd,function(){$g(a,b)},function(c){c.client=c.client||b.google_ad_client||a.google_ad_client;c.slotname=c.slotname||b.google_ad_slot;c.tag_origin=c.tag_origin||b.google_tag_origin})},$g=function(a,b){va=(new Date).getTime();a:{if(void 0!=a.enable_page_level_ads){if(na(a.google_ad_client)){var c=!0;break a}throw new H("'google_ad_client' is missing from the tag config.")}c=!1}if(c)0===Og&&(Og=1),Wg(a.google_ad_client),Zg(a);else{0===Og&&(Og=2);c=a.element;(a=a.params)&&Hb(a,function(a,c){b[c]=a});if("js"===b.google_ad_output){l.google_ad_request_done_fns=l.google_ad_request_done_fns||[];l.google_radlink_request_done_fns=l.google_radlink_request_done_fns||[];if(b.google_ad_request_done){if("function"!=t(b.google_ad_request_done))throw new H("google_ad_request_done parameter must be a function.");l.google_ad_request_done_fns.push(b.google_ad_request_done);delete b.google_ad_request_done;b.google_ad_request_done_index=l.google_ad_request_done_fns.length-1}else throw new H("google_ad_request_done parameter must be specified.");if(b.google_radlink_request_done){if("function"!=t(b.google_radlink_request_done))throw new H("google_radlink_request_done parameter must be a function.");l.google_radlink_request_done_fns.push(b.google_radlink_request_done);delete b.google_radlink_request_done;b.google_radlink_request_done_index=l.google_radlink_request_done_fns.length-1}a=Xg();l.document.documentElement.appendChild(a);c=a}if(c){if(!Rg(c)&&(c.id?c=Vg(c.id):c=null,!c))throw new H("'element' has already been filled.");if(!("innerHTML"in c))throw new H("'element' is not a good DOM element.")}else if(c=Vg(),!c)throw new H("All ins elements in the DOM with class=adsbygoogle already have ads in them.");Tg(c,b)}},ch=function(){dd();ed(166,id,bh)},bh=function(){var a=Eb(Db(v))||v;Be(a);ad(B(v,ee.B)||B(v,ce.B)||B(v,ce.da));Gg();if(B(v,ne.ha)||B(v,ne.Z)||B(v,ne.ga)||B(v,ne.fa))zg(),wg(".google.co.id")&&(X[1]=".google.co.id"),B(v,ne.Z)?(a=cb(),Cg(a),Bg(a)):Bg(null);if((a=window.adsbygoogle)&&a.shift)try{for(var b,c=20;0<a.length&&(b=a.shift())&&0<c;)ah(b),--c}catch(d){throw window.setTimeout(ch,0),d}if(!a||!a.loaded){B(v,pe.u)&&(b=qd()?Ba("","pagead2.googlesyndication.com"):zb(),tg(Pb().document,b,"preconnect"));window.adsbygoogle={push:ah,loaded:!0};a&&dh(a.onload);try{Object.defineProperty(window.adsbygoogle,"onload",{set:dh})}catch(d){}}},dh=function(a){Jb(a)&&window.setTimeout(a,0)};ch()}).call(this)
noahp / Aes CAES-128 ECB c code
adanilo / Base128codecCodec for base128 and base192 encoding schemes
takeshineshiro / Fpga Linear 128this module is the fpga code for gening utrasound image which the element type is linear and the num is 128
larygwil / ZBar Bar Code Reader(Unofficial mirror) reading bar codes from various sources, such as video streams, image files and raw intensity sensors. It supports EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 39, Interleaved 2 of 5 and QR Code
renaud1239 / KreyviumReference code of the KREYVIUM algorithm, a FHE-friendly 128-bit key stream cipher.
rajaryan / FDR Is Not Supported On This Devicelibi error on 6G device Setting to interface 0:0 WARNING: set interface failed, error -8 Recovery Mode Environment: iBoot build-version=iBoot-2817.60.2 iBoot build-style=RELEASE Sending AppleLogo... DEBUG: tss_response_get_path_by_entry: No entry 'AppleLogo' in TSS response NOTE: No path for component AppleLogo in TSS, will fetch from build_identity Extracting applelogo@2x~iphone.t7000.im4p... Writing data to AppleLogo Sending AppleLogo (12140 bytes)... DEBUG: tss_response_get_path_by_entry: No entry 'RestoreRamDisk' in TSS response NOTE: No path for component RestoreRamDisk in TSS, will fetch from build_identity Extracting 058-49166-036.dmg... Writing data to RestoreRamDisk Sending RestoreRamDisk (24208893 bytes)... DEBUG: tss_response_get_path_by_entry: No entry 'RestoreDeviceTree' in TSS response NOTE: No path for component RestoreDeviceTree in TSS, will fetch from build_identity Extracting DeviceTree.n61ap.im4p... Writing data to RestoreDeviceTree Sending RestoreDeviceTree (122870 bytes)... DEBUG: tss_response_get_path_by_entry: No entry 'RestoreKernelCache' in TSS response NOTE: No path for component RestoreKernelCache in TSS, will fetch from build_identity Extracting kernelcache.release.n61... Writing data to RestoreKernelCache Sending RestoreKernelCache (12023621 bytes)... About to restore device... Waiting for device... Attempt 1 to connect to restore mode device... Attempt 2 to connect to restore mode device... Attempt 3 to connect to restore mode device... Attempt 4 to connect to restore mode device... Attempt 5 to connect to restore mode device... Attempt 6 to connect to restore mode device... restore_is_current_device: Connected to com.apple.mobile.restored, version 13 Attempt 7 to connect to restore mode device... Device is now connected in restore mode... Connecting now... Connected to com.apple.mobile.restored, version 13 Device has successfully entered restore mode Hardware Information: BoardID: 6 ChipID: 28672 UniqueChipID: 7992728590225446 ProductionMode: true Previous restore exit status: 0x100 About to send NORData... DEBUG: tss_response_get_path_by_entry: No entry 'LLB' in TSS response NOTE: Could not get LLB path from TSS data, will fetch from build identity Found firmware path Firmware/all_flash/all_flash.n61ap.production Getting firmware manifest Firmware/all_flash/all_flash.n61ap.production/manifest Extracting LLB.n61.RELEASE.im4p... Writing data to LLB Extracting iBoot.n61.RELEASE.im4p... Writing data to iBoot Extracting DeviceTree.n61ap.im4p... Writing data to DeviceTree Extracting applelogo@2x~iphone.t7000.im4p... Writing data to AppleLogo Extracting recoverymode@1334~iphone-lightning.t7000.im4p... Writing data to RecoveryMode Extracting batterylow0@2x~iphone.t7000.im4p... Writing data to BatteryLow0 Extracting batterylow1@2x~iphone.t7000.im4p... Writing data to BatteryLow1 Extracting batterycharging0@2x~iphone.t7000.im4p... Writing data to BatteryCharging0 Extracting batterycharging1@2x~iphone.t7000.im4p... Writing data to BatteryCharging1 Extracting glyphplugin@1334~iphone-lightning.t7000.im4p... Writing data to BatteryPlugin Extracting batteryfull@2x~iphone.t7000.im4p... Writing data to BatteryFull Extracting sep-firmware.n61.RELEASE.im4p... Writing data to RestoreSEP Extracting sep-firmware.n61.RELEASE.im4p... Writing data to SEP common.c:supressed printing 14481617 bytes plist... Sending NORData now... Done sending NORData About to send RootTicket... Sending RootTicket now... Done sending RootTicket Partition NAND device (28) About to send FDR Trust data... Sending FDR Trust data now... Done sending FDR Trust Data Got status message Status: Disk Failure Log is available: SYSLOG: Sep 10 05:16:50 localhost bootlog[0] <Notice>: BOOT_TIME 1473484610 0 SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: obe iDAC=1973 default SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleOscarProcessor::OscarStartGated: baudRate=0 SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleOscarProcessor::setOscarStateGated: setting oscar-state=10001 SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleOscarProcessor::publishFirmware: firmware published successfu lly SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleOscarProcessor::OscarBootGated: Starting Oscar2, baudRate=150 0000 SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleSynopsysOTG3Device::gated_handleUSBCableConnect cable connect ed, but don't have device configuration yet SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: ready - 00000000: 3f | ? SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleOscarProcessor::WaitForBootROMReady: _BootROMReady=1 SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleOscarFirmware::waitForFirmwareImage: waiting for firmware SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleARMPMUCharger: AppleUSBCableDetect 0 SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleARMPMUCharger: AppleUSBCableType Detached SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleSynopsysOTG3Device::gated_handleUSBCableConnect cable connect ed, but don't have device configuration yet SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: ASPStorage::ASPIsReadOnly - Ramdisk rooted. Returning readonly tru e SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: ASPStorage::ASPIsReadOnly - Ramdisk rooted. Returning readonly tru e SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: LwVM::probe - failed to read header from media SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: [effaceable:INIT] found current generation, 116, in group 0 SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: [effaceable:INIT] started SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: ASPStorage::ASPIsReadOnly - Ramdisk rooted. Returning readonly tru e SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: [ANS syslog: nand] Util_Host:attempting to read element=PANICLOG n ot yet written, returning ERR_ABORT SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: LwVM::probe - failed to read header from media SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: [ANS syslog: nand] Util_Host:attempting to read element=PANICLOG n ot yet written, returning ERR_ABORT SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: [ANS syslog: nand] Util_Host:attempting to read element=PANICLOG n ot yet written, returning ERR_ABORT SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: [ANS syslog: nand] Util_Host:attempting to read element=PANICLOG n ot yet written, returning ERR_ABORT SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleMesa::start: sensor sanity checking failed on start, power cy cle SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleARMPMUCharger: AppleUSBCableDetect 1 SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleARMPMUCharger: AppleUSBCableType USBHost SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleSynopsysOTG3Device::gated_handleUSBCableConnect cable connect ed, but don't have device configuration yet SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleMultitouchN1SPI: detected HBPP. driver will be kept alive SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: [ PCI configuration begin ] SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: [ PCI configuration end, bridges 2, devices 1 ] SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: 000026.470793 wlan0.C[0] setPowerStateGated@7234:Power transition before init (Off --> On) SYSLOG: Sep 10 05:16:51 localhost syslogd[4] <Notice>: ASL Sender Statistics SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleMesa::start: sensor sanity checking failed on start, power cy cle SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: 000026.562630 wlan0.C[1] start@807:Waiting for PCIe to enumerate SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: 000026.563076 wlan0.A[2] createFirmwareLogger@8240: CCFlags: 0x0, CCLevel: 127 ConsoleFlags: 0x0, ConsoleLevel: -1 SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleBCMWLANCore::init IO80211-177.6 "IO80211-177.6" Aug 19 2016 1 0:48:47 SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: IO80211Controller::createIOReporters 0xc2851a7e587864e5 SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: CCFlags: 0x0, CCLevel: 5 ConsoleFlags: 0x0, ConsoleLevel: -1 SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleSynopsysOTG3Device::gated_handleUSBCableConnect cable connect ed, but don't have device configuration yet SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleSynopsysOTG3Device::gated_handleUSBCableConnect cable connect ed, but don't have device configuration yet SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: No Service found 10000039d SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: configureInterests - nElements <= 0!Failed to addSubscription for group Chip subgroup Bytes Transferred driver 0xc2851a7e587864e5 - data underrun SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: IO80211ControllerMonitor::configureSubscriptions() failed to add s ubscriptionIO80211Controller::start _controller is 0xc2851a7e587864e5, provider is 0xc2851a7f6e0f64e5 SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: 000026.565214 wlan0.A[3] gatherDeviceTreeData@774:WiFi 'serial bau d rate' is invalid! SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: 000026.566806 wlan0.N[4] start@1179:Starting with MAC Address: 70: 3e:ac:5d:ee:47 SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleBCMWLANCore::apple80211RequestIoctl type 0xc cmd GET SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleBCMWLANCore::apple80211RequestIoctl type 0x50 cmd GET SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: 000026.566907 wlan0.N[5] setPowerStateGated@15307: powerState 1, fStateFlags 0x20, dev 0xc2851a7e587864e5 (this 1, provider 0) SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: 000026.566911 wlan0.N[6] setPowerStateGated@15310: Received power state change before driver has initialized, ignoring SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: IO80211PeerManager::initWithInterface can't add monitoring timer SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: IO80211Interface::init peerManager=0xc2851a7f6e2a24e5 SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: IO80211Controller::configureInterface: Setting mac address on inte rface SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: 000026.568941 wlan0.N[7] populateRequestedFiles@1299:FW C-4345__s- B1/tempranillo.trx SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: 000026.568975 wlan0.N[8] populateRequestedFiles@1305:CLM C-4345__s -B1/tempranillo.clmb SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: 000026.568987 wlan0.N[9] populateRequestedFiles@1313:Tx Cap C-4345 __s-B1/tempranillo.txcb SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: 000026.568993 wlan0.N[10] populateRequestedFiles@1326:NVRAM C-4345 __s-B1/P-tempranillo_M-CORO_V-m__m-5.1.txt SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleSynopsysOTG3Device::gated_handleUSBCableConnect cable connect ed, but don't have device configuration yet SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleSynopsysOTG3Device::gated_handleUSBCableConnect cable connect ed, but don't have device configuration yet unable to open /dev/klog: Resource busy SYSLOG: Sep 10 05:16:51 localhost restored_external[6] <Error>: libMobileGestalt MobileGestalt.c:154: couldn't load supp ort library SYSLOG: Sep 10 05:16:51 localhost restored_external[6] <Error>: libMobileGestalt MobileGestalt.c:520: _MGSCopyAnswerFrom Server can't be loaded SYSLOG: Sep 10 05:16:51 localhost restored_external[6] <Error>: libMobileGestalt MobileGestalt.c:124: called dummy funct ion! display-scale = 2 display-rotation = 0 found applelogo at /usr/share/progressui/applelogo@2x.tga SYSLOG: Sep 10 05:16:51 localhost restored_external[6] <Error>: IOMFB: /System/Library/Frameworks/MediaToolbox.framework /MediaToolbox not found SYSLOG: Sep 10 05:16:51 localhost restored_external[6] <Error>: IOMFB: /System/Library/PrivateFrameworks/MediaToolbox.fr amework/MediaToolbox not found SYSLOG: Sep 10 05:16:51 localhost restored_external[6] <Error>: IOMFB: /System/Library/PrivateFrameworks/Celestial.frame work/Celestial not found SYSLOG: Sep 10 05:16:51 localhost restored_external[6] <Error>: IOMFB: FigInstallVirtualDisplay not found SYSLOG: Sep 10 05:16:51 localhost restored_external[6] <Error>: CFPreferences could not connect to its daemon. Preferences using the connection 0x0 will be volatile and will not be persisted to disk. found display: primary display: 750 x 1334 powering on display SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: Loading diags data region 1 SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleSynopsysOTG3Device - Configuration: Apple Mobile Device SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleSynopsysOTG3Device Interface: AppleUSBMux waiting for matching IOKit service: <CFBasicHash 0x15550bbb0 [0x100bf2a08]>{type = mutable dict, count = 1, entries => 0 : <CFString 0x100e7ef10 [0x100bf2a08]>{contents = "IOProviderClass"} = <CFString 0x15550bca0 [0x100bf2a08]>{co ntents = "AppleUSBDeviceMux"} } SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: virtual bool AppleUSBDeviceMux::start(IOService *) build: Aug 19 2 016 10:50:21 SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleSynopsysOTG3Device::gated_registerFunction Register function AppleUSBMux SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleSynopsysOTG3Device::startUSBStack Starting usb stack SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleMesa::start: disabling the sensor SYSLOG: Sep 10 05:16:51 localhost kernel[0] <Notice>: AppleDRV2604Vibrator::start() mode=rtp cal=0a:67:a5:01 init=0 SYSLOG: Sep 10 05:16:54 localhost kernel[0] <Notice>: IOReturn AppleUSBDeviceMux::setPropertiesGated(OSObject *) setting debug level to 7 recv(9, 4) failed: connection closed unable to read message size: -1 could not receive message recv(9, 4) failed: connection closed recv(10, 4) failed: connection closed unable to read message size: -1 unable to read message size: -1 could not receive message could not receive message recv(14, 4) failed: connection closed recv(15, 4) failed: connection closed recv(9, 4) failed: connection closed recv(12, 4) failed: connection closed recv(11, 4) failed: connection closed unable to read message size: -1 recv(16, 4) failed: connection closed unable to read message size: -1 recv(13, 4) failed: connection closed unable to read message size: -1 unable to read message size: -1 unable to read message size: -1 could not receive message unable to read message size: -1 could not receive message recv(18, 4) failed: connection closed unable to read message size: -1 recv(19, 4) failed: connection closed could not receive message could not receive message could not receive message recv(20, 4) failed: connection closed recv(21, 4) failed: connection closed could not receive message recv(22, 4) failed: connection closed recv(14, 4) failed: connection closed unable to read message size: -1 could not receive message unable to read message size: -1 unable to read message size: -1 unable to read message size: -1 unable to read message size: -1 unable to read message size: -1 could not receive message could not receive message could not receive message could not receive message could not receive message could not receive message client protocol version 13 *** UUID 9A713E8C-8EC4-6F52-5B83-A150C021547E *** Restore options: MinimumSystemPartition => <CFNumber 0xb00000000000a9f3 [0x100bf2a08]>{value = +2719, type = kCFNumberSIn t64Type} UUID => <CFString 0x15560ac00 [0x100bf2a08]>{contents = "9A713E8C-8EC4-6F52-5B83-A150C 021547E"} SystemPartitionSize => <CFNumber 0xb00000000000a9f3 [0x100bf2a08]>{value = +2719, type = kCFNumberSIn t64Type} SystemPartitionPadding => <CFBasicHash 0x15560aa10 [0x100bf2a08]>{type = mutable dict, count = 9, entries => 0 : <CFString 0x1556071f0 [0x100bf2a08]>{contents = "512"} = <CFNumber 0xb000000000005003 [0x100bf2a08]>{value = +1280, type = kCFNumberSInt64Type} 2 : <CFString 0x155606670 [0x100bf2a08]>{contents = "128"} = <CFNumber 0xb000000000005003 [0x100bf2a08]>{value = +1280, type = kCFNumberSInt64Type} 3 : <CFString 0x155603160 [0x100bf2a08]>{contents = "16"} = <CFNumber 0xb000000000000a03 [0x100bf2a08]>{value = +160, type = kCFNumberSInt64Type} 4 : <CFString 0x15560b530 [0x100bf2a08]>{contents = "1024"} = <CFNumber 0xb000000000005003 [0x100bf2a08]>{value = +1280, type = kCFNumberSInt64Type} 5 : <CFString 0x15560b4f0 [0x100bf2a08]>{contents = "32"} = <CFNumber 0xb000000000001403 [0x100bf2a08]>{value = +320, type = kCFNumberSInt64Type} 6 : <CFString 0x155600330 [0x100bf2a08]>{contents = "768"} = <CFNumber 0xb000000000005003 [0x100bf2a08]>{value = +1280, type = kCFNumberSInt64Type} 7 : <CFString 0x100b9b240 [0x100bf2a08]>{cont... PersonalizedDuringPreflight => <CFBoolean 0x100bf2f80 [0x100bf2a08]>{value = true} entering load_sep_os device has sep - getting firmware entering copy_restore_sep got sep firmware - making call to load it entering ramrod_load_sep_os entering ramrod_execute_command_with_input_data: /usr/libexec/seputil (0x10534c000 - 4642298) executing /usr/libexec/seputil waiting for child to exit SYSLOG: Sep 10 05:16:56 localhost kernel[0] <Notice>: bool AppleSEPFirmware::_initFromMemory(IOMemoryDescriptor *): load ed 4642298 bytes of firmware from client SYSLOG: Sep 10 05:16:56 localhost kernel[0] <Notice>: AppleSEP:WARNING: Could not register SEP root shmcon (err=-1) SYSLOG: Sep 10 05:16:56 localhost kernel[0] <Notice>: AppleSEP:WARNING: Could not register SEP debugger shmcon (err=-1) SYSLOG: Sep 10 05:16:56 localhost kernel[0] <Notice>: IOReturn AppleSEPManager::setFirmwareBytes(IOMemoryDescriptor *, b ool, bool): SEP Shared Memory Buffer at <ptr> SYSLOG: Sep 10 05:16:56 localhost kernel[0] <Notice>: void AppleSEPBooter::_bootAction(void *, void *): SEP status: 1 SYSLOG: Sep 10 05:16:56 localhost kernel[0] <Notice>: void AppleSEPBooter::_bootAction(void *, void *): SEP accepted Tz0 SYSLOG: Sep 10 05:16:56 localhost kernel[0] <Notice>: void AppleSEPBooter::_bootAction(void *, void *): SEP status: 2 SYSLOG: Sep 10 05:16:56 localhost kernel[0] <Notice>: void AppleSEPBooter::_bootAction(void *, void *): SEP status: 2 SYSLOG: Sep 10 05:16:56 localhost kernel[0] <Notice>: IOReturn AppleSEPBooter::bootSEP(AppleSEPFirmware *, AppleSEPShare dMemoryBuffer *, bool): load the art SYSLOG: Sep 10 05:16:56 localhost kernel[0] <Notice>: IOReturn AppleSEPBooter::bootSEP(AppleSEPFirmware *, AppleSEPShare dMemoryBuffer *, bool): separt returned is <ptr> SYSLOG: Sep 10 05:16:56 localhost kernel[0] <Notice>: void AppleSEPBooter::_bootAction(void *, void *): SEP accepted SEP ART SYSLOG: Sep 10 05:16:56 localhost kernel[0] <Notice>: IOReturn AppleSEPBooter::bootSEP(AppleSEPFirmware *, AppleSEPShare dMemoryBuffer *, bool): SEP booting SYSLOG: Sep 10 05:16:56 localhost kernel[0] <Notice>: IOReturn AppleSEPBooter::bootSEP(AppleSEPFirmware *, AppleSEPShare dMemoryBuffer *, bool): Shmbuf for SEP: { paddr = 0x805e60000, size = 0x10000 } SYSLOG: Sep 10 05:16:58 localhost kernel[0] <Notice>: void AppleSEPBooter::_bootAction(void *, void *): SEP accepted IMG 4 child exited exit status: 0 entering ramrod_ticket_update looking up boot manifest hash crypto-hash-method found. Using SHA1 device tree ticket_hash: 85EA3FA2D3D80CC1A6118B0DCF38BB9FFADEA1EC computed ticket_hash : 85EA3FA2D3D80CC1A6118B0DCF38BB9FFADEA1EC received valid ticket (5468 bytes) entering partition_nand_device No IOFlashController instance found entering wait_for_storage_device Searching for NAND service Found NAND service: ASPStorage NAND initialized. Waiting for devnode. entering clear_remap_variable executing /usr/sbin/nvram Service name : ASPStorage SYSLOG: Sep 10 05:16:58 localhost kernel[0] <Notice>: [ANS syslog: nand] Push_PowerGovernorInit:Nand Die:2 MLC: 2 N o SLC: 2 No Erase:2 SYSLOG: Sep 10 05:16:58 localhost kernel[0] <Notice>: ASPStorage::ASPIsReadOnly - Ramdisk rooted. Returning readonly fal se SYSLOG: Sep 10 05:16:58 localhost kernel[0] <Notice>: ASPStorage::ASPIsRootDeviceRamdisk - Root device is md0 SYSLOG: Sep 10 05:16:58 localhost kernel[0] <Notice>: ASPStorage::ASPIsRootDeviceRamdisk - Root device is a ramdisk SYSLOG: Sep 10 05:16:58 localhost kernel[0] <Notice>: IOFirmwareDevice::updateMediaParams - prev num blks 1024 new num b lks 1024 SYSLOG: Sep 10 05:16:58 localhost kernel[0] <Notice>: ASPStorage::ASPIsReadOnly - Ramdisk rooted. Returning readonly fal se SYSLOG: Sep 10 05:16:58 localhost kernel[0] <Notice>: ASPStorage::ASPIsReadOnly - Ramdisk rooted. Returning readonly fal se Set ASP writable successfully entering ramrod_reprobe_device_path entering ramrod_probe_media SYSLOG: Sep 10 05:16:58 localhost kernel[0] <Notice>: void AppleSEPManager::_notifyOSActiveGated(): SEP/OS is alive SYSLOG: Sep 10 05:16:58 localhost kernel[0] <Notice>: IOReturn AppleSEPARTRequests::handle_first_connected(): Configurin g in buffer SYSLOG: Sep 10 05:16:58 localhost kernel[0] <Notice>: IOReturn AppleSEPARTRequests::handle_first_connected(): Configurin g out buffer SYSLOG: Sep 10 05:16:58 localhost kernel[0] <Notice>: IOReturn AppleSEPARTStorage::handle_first_connected(): Sending MAN IFEST with timeout device partitioning scheme is GPT find_filesystem_partitions: storage=/dev/disk0s1 system=/dev/disk0s1s1 data=/dev/disk0s1s2 baseband data=/dev/disk0s1s3 log= entering ramrod_reprobe_device_path entering ramrod_probe_media device partitioning scheme is GPT find_filesystem_partitions: storage=/dev/disk0s1 system=/dev/disk0s1s1 data=/dev/disk0s1s2 baseband data=/dev/disk0s1s3 log= entering ramrod_probe_media device partitioning scheme is GPT find_filesystem_partitions: storage=/dev/disk0s1 system=/dev/disk0s1s1 data=/dev/disk0s1s2 baseband data=/dev/disk0s1s3 log= entering mount_partition executing /sbin/fsck_hfs SYSLOG: Sep 10 05:16:58 localhost kernel[0] <Notice>: ASPSEPNotifier::message - msg = 1 SYSLOG: Sep 10 05:16:58 localhost kernel[0] <Notice>: ASPSEPNotifier::message - kSEPNotifyOK2Wrap SYSLOG: Sep 10 05:16:58 localhost kernel[0] <Notice>: IOReturn AppleSEPARTStorage::handle_first_connected(): Sending ART _LOAD with timeout SYSLOG: Sep 10 05:16:58 localhost kernel[0] <Notice>: ASPStorage::ASPIsRootDeviceRamdisk - Root device is md0 SYSLOG: Sep 10 05:16:58 localhost kernel[0] <Notice>: ASPStorage::ASPIsRootDeviceRamdisk - Root device is a ramdisk SYSLOG: Sep 10 05:16:58 localhost kernel[0] <Notice>: bool AppleSEPARTStorage::save_incoming_art(const uint8_t *, const uint8_t *): Incoming art set and synched journal_replay(/dev/disk0s1s1) returned 0 ** /dev/rdisk0s1s1 Using cacheBlockSize=32K cacheTotalBlock=3956 cacheSize=126592K. Executing fsck_hfs (version hfs-305.10.1). ** Checking Journaled HFS Plus volume. The volume name is Untitled ** Checking extents overflow file. ** Checking catalog file. ** Checking multi-linked files. ** Checking catalog hierarchy. ** Checking extended attributes file. ** Checking volume bitmap. ** Checking volume information. ** Trimming unused blocks. ** The volume Untitled appears to be OK. CheckHFS returned 0, fsmodified = 0 executing /sbin/mount_hfs mount_hfs: Invalid argument mount_hfs: error on mount(): error = -1. mounting /dev/disk0s1s1 on /mnt1 failed block size for /dev/disk0s1s1: 4096 /sbin/newfs_hfs -s -v System /dev/disk0s1s1 executing /sbin/newfs_hfs -s -v System /dev/disk0s1s1 Initialized /dev/rdisk0s1s1 as a 3 GB case-sensitive HFS Plus volume entering ramrod_probe_media device partitioning scheme is GPT find_filesystem_partitions: storage=/dev/disk0s1 system=/dev/disk0s1s1 data=/dev/disk0s1s2 baseband data=/dev/disk0s1s3 log= entering mount_partition executing /sbin/fsck_hfs journal_replay(/dev/disk0s1s1) returned 0 ** /dev/rdisk0s1s1 Using cacheBlockSize=32K cacheTotalBlock=3956 cacheSize=126592K. Executing fsck_hfs (version hfs-305.10.1). ** Checking non-journaled HFS Plus Volume. ** Detected a case-sensitive volume. The volume name is System ** Checking extents overflow file. ** Checking catalog file. ** Checking multi-linked files. ** Checking catalog hierarchy. ** Checking extended attributes file. ** Checking volume bitmap. ** Checking volume information. ** Trimming unused blocks. ** The volume System appears to be OK. CheckHFS returned 0, fsmodified = 0 executing /sbin/mount_hfs /dev/disk0s1s1 mounted on /mnt1 System mounted read-only unable to open /mnt1/System/Library/CoreServices/SystemVersion.plist: No such file or directory ramrod_read_previous_os_build_version: Unable to read system version plist restored_fdr_initialize: FDR is supported CryptoAcceleratorEncrypt: perform aes => 0 (kIOReturnSuccess) pseudo_ccrng_allocate: ccdrbg_init() -> 0 CryptoGenerateRSAKeys: ccrsa_generate_key() -> 0 CryptoGenerateRSAKeys: [RSA Public Key SHA1: 20 bytes] : 85 13 37 f3 e4 a7 d9 10 6b 7e f4 7e 28 f3 ed 66 : 78 6b 26 69 : ----------------------------------------------- CryptoGenerateRSAKeys: SecKeyCreateRSAPrivateKey -> 0x10014c460 CryptoGenerateRSAKeys: SecKeyCreateRSAPublicKey -> 0x10014c458 SYSLOG: Sep 10 05:17:00 localhost restored_external[6] <Error>: libMobileGestalt utility.c:260: IOServiceGetMatchingServ ice failed SYSLOG: Sep 10 05:17:00 localhost restored_external[6] <Error>: libMobileGestalt MobileGestalt.c:3433: failed to connect to service AppleBiometricServices _copyDataInstanceForSealingMapEntry: Could not query MobileGestalt for key 'MesaSerialNumber' AMFDRSealingMapCreateRecoveryPermissions: Failed to construct data instance for sealing map entry: <CFBasicHash 0x155612 7f0 [0x100bf2a08]>{type = immutable dict, count = 4, entries => 0 : <CFString 0x155612700 [0x100bf2a08]>{contents = "Attributes"} = <CFArray 0x1556127b0 [0x100bf2a08]>{type = i mmutable, count = 2, values = ( 0 : <CFString 0x155612770 [0x100bf2a08]>{contents = "RequiredToSeal"} 1 : <CFString 0x155612790 [0x100bf2a08]>{contents = "StoreCombined"} )} 1 : <CFString 0x155612690 [0x100bf2a08]>{contents = "Tag"} = <CFString 0x155612720 [0x100bf2a08]>{contents = "FS Cl"} 5 : <CFString 0x1556126b0 [0x100bf2a08]>{contents = "MaxSize"} = <CFNumber 0xb000000000c00003 [0x100bf2a08]>{val ue = +786432, type = kCFNumberSInt64Type} 6 : <CFString 0x1556126d0 [0x100bf2a08]>{contents = "DataInstanceIdentifier"} = <CFString 0x155612740 [0x100bf2a 08]>{contents = "MesaSerialNumber"} } Continuing anyway. SYSLOG: Sep 10 05:17:00 localhost restored_external[6] <Error>: libMobileGestalt utility.c:260: IOServiceGetMatchingServ ice failed SYSLOG: Sep 10 05:17:00 localhost restored_external[6] <Error>: libMobileGestalt MobileGestalt.c:3433: failed to connect to service AppleBiometricServices _copyDataInstanceForSealingMapEntry: Could not query MobileGestalt for key 'MesaSerialNumber' AMFDRSealingMapCreateRecoveryPermissions: Failed to construct data instance for sealing map entry: <CFBasicHash 0x155612 a10 [0x100bf2a08]>{type = immutable dict, count = 4, entries => 0 : <CFString 0x155612920 [0x100bf2a08]>{contents = "Attributes"} = <CFArray 0x1556129d0 [0x100bf2a08]>{type = i mmutable, count = 2, values = ( 0 : <CFString 0x155612990 [0x100bf2a08]>{contents = "RequiredToSeal"} 1 : <CFString 0x1556129b0 [0x100bf2a08]>{contents = "StoreCombined"} )} 1 : <CFString 0x1556128b0 [0x100bf2a08]>{contents = "Tag"} = <CFString 0x155612940 [0x100bf2a08]>{contents = "ho p0"} 5 : <CFString 0x1556128d0 [0x100bf2a08]>{contents = "MaxSize"} = <CFNumber 0xb000000000010003 [0x100bf2a08]>{val ue = +4096, type = kCFNumberSInt64Type} 6 : <CFString 0x1556128f0 [0x100bf2a08]>{contents = "DataInstanceIdentifier"} = <CFString 0x155612960 [0x100bf2a 08]>{contents = "MesaSerialNumber"} } Continuing anyway. SYSLOG: Sep 10 05:17:00 localhost restored_external[6] <Error>: libMobileGestalt utility.c:260: IOServiceGetMatchingServ ice failed SYSLOG: Sep 10 05:17:00 localhost restored_external[6] <Error>: libMobileGestalt MobileGestalt.c:3433: failed to connect to service AppleBiometricServices _copyDataInstanceForSealingMapEntry: Could not query MobileGestalt for key 'MesaSerialNumber' AMFDRSealingMapCreateRecoveryPermissions: Failed to construct data instance for sealing map entry: <CFBasicHash 0x155612 c30 [0x100bf2a08]>{type = immutable dict, count = 4, entries => 0 : <CFString 0x155612b40 [0x100bf2a08]>{contents = "Attributes"} = <CFArray 0x155612bf0 [0x100bf2a08]>{type = i mmutable, count = 2, values = ( 0 : <CFString 0x155612bb0 [0x100bf2a08]>{contents = "RequiredToSeal"} 1 : <CFString 0x155612bd0 [0x100bf2a08]>{contents = "StoreCombined"} )} 1 : <CFString 0x155612ad0 [0x100bf2a08]>{contents = "Tag"} = <CFString 0x155612b60 [0x100bf2a08]>{contents = "Nv MR"} 5 : <CFString 0x155612af0 [0x100bf2a08]>{contents = "MaxSize"} = <CFNumber 0xb000000000c00003 [0x100bf2a08]>{val ue = +786432, type = kCFNumberSInt64Type} 6 : <CFString 0x155612b10 [0x100bf2a08]>{contents = "DataInstanceIdentifier"} = <CFString 0x155612b80 [0x100bf2a 08]>{contents = "MesaSerialNumber"} } Continuing anyway. created HTTP FDR client 0x155618260 SYSLOG: Sep 10 05:17:01 localhost restored_external[6] <Error>: libMobileGestalt utility.c:260: IOServiceGetMatchingServ ice failed SYSLOG: Sep 10 05:17:01 localhost restored_external[6] <Error>: libMobileGestalt MobileGestalt.c:3433: failed to connect to service AppleBiometricServices _copyDataInstanceForSealingMapEntry: Could not query MobileGestalt for key 'MesaSerialNumber' AMFDRSealingMapCreateRecoveryPermissions: Failed to construct data instance for sealing map entry: <CFBasicHash 0x155612 7f0 [0x100bf2a08]>{type = immutable dict, count = 4, entries => 0 : <CFString 0x155612700 [0x100bf2a08]>{contents = "Attributes"} = <CFArray 0x1556127b0 [0x100bf2a08]>{type = i mmutable, count = 2, values = ( 0 : <CFString 0x155612770 [0x100bf2a08]>{contents = "RequiredToSeal"} 1 : <CFString 0x155612790 [0x100bf2a08]>{contents = "StoreCombined"} )} 1 : <CFString 0x155612690 [0x100bf2a08]>{contents = "Tag"} = <CFString 0x155612720 [0x100bf2a08]>{contents = "FS Cl"} 5 : <CFString 0x1556126b0 [0x100bf2a08]>{contents = "MaxSize"} = <CFNumber 0xb000000000c00003 [0x100bf2a08]>{val ue = +786432, type = kCFNumberSInt64Type} 6 : <CFString 0x1556126d0 [0x100bf2a08]>{contents = "DataInstanceIdentifier"} = <CFString 0x155612740 [0x100bf2a 08]>{contents = "MesaSerialNumber"} } Continuing anyway. SYSLOG: Sep 10 05:17:01 localhost restored_external[6] <Error>: libMobileGestalt utility.c:260: IOServiceGetMatchingServ ice failed SYSLOG: Sep 10 05:17:01 localhost restored_external[6] <Error>: libMobileGestalt MobileGestalt.c:3433: failed to connect to service AppleBiometricServices _copyDataInstanceForSealingMapEntry: Could not query MobileGestalt for key 'MesaSerialNumber' AMFDRSealingMapCreateRecoveryPermissions: Failed to construct data instance for sealing map entry: <CFBasicHash 0x155612 a10 [0x100bf2a08]>{type = immutable dict, count = 4, entries => 0 : <CFString 0x155612920 [0x100bf2a08]>{contents = "Attributes"} = <CFArray 0x1556129d0 [0x100bf2a08]>{type = i mmutable, count = 2, values = ( 0 : <CFString 0x155612990 [0x100bf2a08]>{contents = "RequiredToSeal"} 1 : <CFString 0x1556129b0 [0x100bf2a08]>{contents = "StoreCombined"} )} 1 : <CFString 0x1556128b0 [0x100bf2a08]>{contents = "Tag"} = <CFString 0x155612940 [0x100bf2a08]>{contents = "ho p0"} 5 : <CFString 0x1556128d0 [0x100bf2a08]>{contents = "MaxSize"} = <CFNumber 0xb000000000010003 [0x100bf2a08]>{val ue = +4096, type = kCFNumberSInt64Type} 6 : <CFString 0x1556128f0 [0x100bf2a08]>{contents = "DataInstanceIdentifier"} = <CFString 0x155612960 [0x100bf2a 08]>{contents = "MesaSerialNumber"} } Continuing anyway. SYSLOG: Sep 10 05:17:01 localhost restored_external[6] <Error>: libMobileGestalt utility.c:260: IOServiceGetMatchingServ ice failed SYSLOG: Sep 10 05:17:01 localhost restored_external[6] <Error>: libMobileGestalt MobileGestalt.c:3433: failed to connect to service AppleBiometricServices _copyDataInstanceForSealingMapEntry: Could not query MobileGestalt for key 'MesaSerialNumber' AMFDRSealingMapCreateRecoveryPermissions: Failed to construct data instance for sealing map entry: <CFBasicHash 0x155612 c30 [0x100bf2a08]>{type = immutable dict, count = 4, entries => 0 : <CFString 0x155612b40 [0x100bf2a08]>{contents = "Attributes"} = <CFArray 0x155612bf0 [0x100bf2a08]>{type = i mmutable, count = 2, values = ( 0 : <CFString 0x155612bb0 [0x100bf2a08]>{contents = "RequiredToSeal"} 1 : <CFString 0x155612bd0 [0x100bf2a08]>{contents = "StoreCombined"} )} 1 : <CFString 0x155612ad0 [0x100bf2a08]>{contents = "Tag"} = <CFString 0x155612b60 [0x100bf2a08]>{contents = "Nv MR"} 5 : <CFString 0x155612af0 [0x100bf2a08]>{contents = "MaxSize"} = <CFNumber 0xb000000000c00003 [0x100bf2a08]>{val ue = +786432, type = kCFNumberSInt64Type} 6 : <CFString 0x155612b10 [0x100bf2a08]>{contents = "DataInstanceIdentifier"} = <CFString 0x155612b80 [0x100bf2a 08]>{contents = "MesaSerialNumber"} } Continuing anyway. created local FDR client 0x155619520 Received response without expected RESTORED_FDR_TRUST_DATA AMSupportPlatformMakeDirectoryForURL: Could not mkdir (Read-only file system) AMFDRCreateError: AMFDRDataLocalCopyDataStoragePath: AMSupportMakeDirectory failed: code=4 AMFDRCreateError: AMFDRDataLocalCopy: missing data storage path: code=4 failed to copy trust object from fdrLocal 0: AMFDRError/4: missing data storage path 1: AMFDRError/4: AMSupportMakeDirectory failed _AMFDRHttpRequestSendSyncNoRetry: No cookie found _AMFDRHttpCopyProxyInformation: Failed to get proxy info for URL 'http://gg.apple.com/fdrtrustobject/5340B6A059BDB732E71 5E7BB1B292EDCD45C2A8D1D07E6039D3F338D7C4428AB' _AMFDRHttpMessageSendSync: Failed to copy proxy information and proxy is enabled. AMFDRCreateError: _AMFDRHttpRequestSendSyncNoRetry: _AMFDRHttpMessageSendSync failed: code=8 AMFDRCreateError: _AMFDRHttpRequestSendSync: httpResponseHeader is NULL: code=10 AMFDRCreateError: AMFDRDataHTTPCopyTrustObject: AMFDRDataHTTPCopyTrustObject failed: code=8 failed to copy trust object from fdrHttp 0: AMFDRError/8: AMFDRDataHTTPCopyTrustObject failed 1: AMFDRError/a: httpResponseHeader is NULL 2: AMFDRError/8: _AMFDRHttpMessageSendSync failed 3: AMFDRError/4: missing data storage path 4: AMFDRError/4: AMSupportMakeDirectory failed RestoredFDRCreate() returned 6 FDR is not supported on this device ERROR: Unable to successfully restore device No data to read ERROR: Unable to restore device
Nenu-doc / DOCTYPE Html Html Head Title Biblioteca Title Head <!DOCTYPE html> <html> <head> <title>Biblioteca</title> </head> <body> <h2>LIBRARY SSH</h2> <strong><h1>libssh 0.8.90</h1></strong><br /> <p> <button><li>La biblioteca SSH</li></button> <button><i>PAGINA PRINCIPAL</li></button> <button><li>PÁGINAS RELACIONADAS</li></button> <button><li>MÓDULOS</li></button> <button><li>ESTRUCTURAS DE DATOS</li></button> <button><li>ARCHIVOS</li></button> </p> <ul> <button><h3> incluir </h3></button> <button><h3> libssh </h3></button> <button><h3> libssh.h </h3></button> <br /> </ul> <small>Esta biblioteca es software gratuito; puedes redistribuirlo y / o 7 * modificarlo según los términos del GNU Lesser General Public 8 * Licencia publicada por la Free Software Foundation; ya sea 9 * versión 2.1 de la Licencia, o (a su elección) cualquier versión posterior. 10 * 11 * Esta biblioteca se distribuye con la esperanza de que sea útil, 12 * pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de 21 #ifndef _LIBSSH_H 22 #define _LIBSSH_H 23 24 #si está definido _WIN32 || definido __CYGWIN__ 25 #ifdef LIBSSH_STATIC 26 #define LIBSSH_API 27 #más 28 #ifdef LIBSSH_EXPORTS 29 #ifdef __GNUC__ 30 #define LIBSSH_API __attribute __ ((dllexport)) 31 #más 32 #define LIBSSH_API __declspec (dllexport) 33 #endif 34 #más 35 #ifdef __GNUC__ 36 #define LIBSSH_API __attribute __ ((dllimport)) 37 #más 38 #define LIBSSH_API __declspec (dllimport) 39 #endif 40 #endif 41 #endif 42 #más 43 #if __GNUC__> = 4 &&! Definido (__ OS2__) 44 #define LIBSSH_API __attribute __ ((visibilidad ("predeterminado"))) 45 #más 46 #define LIBSSH_API 47 #endif 48 #endif 49 50 #ifdef _MSC_VER 51 / * Visual Studio no tiene inttypes.h así que no conoce uint32_t * / 52 typedef int int32_t; 53 typedef unsigned int uint32_t; 54 typedef unsigned short uint16_t; 55 typedef unsigned char uint8_t; 56 typedef unsigned long long uint64_t; 57 typedef int mode_t; 58 #else / * _MSC_VER * / 59 #include <unistd.h> 60 #include <inttypes.h> 61 #include <sys / types.h> 62 #endif / * _MSC_VER * / 63 64 #ifdef _WIN32 65 #include <winsock2.h> 66 #else / * _WIN32 * / 67 #include <sys / select.h> / * para fd_set * * / 68 #include <netdb.h> 69 #endif / * _WIN32 * / 70 71 #define SSH_STRINGIFY (s) SSH_TOSTRING (s) 72 #define SSH_TOSTRING (s) #s 73 74 / * macros de versión libssh * / 75 #define SSH_VERSION_INT (a, b, c) ((a) << 16 | (b) << 8 | (c)) 76 #define SSH_VERSION_DOT (a, b, c) a ##. ## b ##. ## c 77 #define SSH_VERSION (a, b, c) SSH_VERSION_DOT (a, b, c) 78 79 / * versión libssh * / 80 #define LIBSSH_VERSION_MAJOR 0 81 #define LIBSSH_VERSION_MINOR 8 82 #define LIBSSH_VERSION_MICRO 90 83 84 #define LIBSSH_VERSION_INT SSH_VERSION_INT (LIBSSH_VERSION_MAJOR, \ 85 LIBSSH_VERSION_MINOR, \ 86 LIBSSH_VERSION_MICRO) 87 #define LIBSSH_VERSION SSH_VERSION (LIBSSH_VERSION_MAJOR, \ 88 LIBSSH_VERSION_MINOR, \ 89 LIBSSH_VERSION_MICRO) 90 91 / * GCC tiene verificación de atributo de tipo printf. * / 92 #ifdef __GNUC__ 93 #define PRINTF_ATTRIBUTE (a, b) __attribute__ ((__format__ (__printf__, a, b))) 94 #más 95 #define PRINTF_ATTRIBUTE (a, b) 96 #endif / * __GNUC__ * / 97 98 #ifdef __GNUC__ 99 #define SSH_DEPRECATED __attribute__ ((obsoleto)) 100 #más 101 #define SSH_DEPRECATED 102 #endif 103 104 #ifdef __cplusplus 105 externa "C" { 106 #endif 107 108 struct ssh_counter_struct { 109 uint64_t in_bytes; 110 uint64_t out_bytes; 111 uint64_t in_packets; 112 uint64_t out_packets; 113 }; 114 typedef struct ssh_counter_struct * ssh_counter ; 115 116 typedef struct ssh_agent_struct * ssh_agent ; 117 typedef struct ssh_buffer_struct * ssh_buffer ; 118 typedef struct ssh_channel_struct * ssh_channel ; 119 typedef struct ssh_message_struct * ssh_message ; 120 typedef struct ssh_pcap_file_struct * ssh_pcap_file; 121 typedef struct ssh_key_struct * ssh_key ; 122 typedef struct ssh_scp_struct * ssh_scp ; 123 typedef struct ssh_session_struct * ssh_session ; 124 typedef struct ssh_string_struct * ssh_string ; 125 typedef struct ssh_event_struct * ssh_event ; 126 typedef struct ssh_connector_struct * ssh_connector ; 127 typedef void * ssh_gssapi_creds; 128 129 / * Tipo de enchufe * / 130 #ifdef _WIN32 131 #ifndef socket_t 132 typedef SOCKET socket_t; 133 #endif / * socket_t * / 134 #else / * _WIN32 * / 135 #ifndef socket_t 136 typedef int socket_t; 137 #endif 138 #endif / * _WIN32 * / 139 140 #define SSH_INVALID_SOCKET ((socket_t) -1) 141 142 / * las compensaciones de los métodos * / 143 enum ssh_kex_types_e { 144 SSH_KEX = 0, 145 SSH_HOSTKEYS, 146 SSH_CRYPT_C_S, 147 SSH_CRYPT_S_C, 148 SSH_MAC_C_S, 149 SSH_MAC_S_C, 150 SSH_COMP_C_S, 151 SSH_COMP_S_C, 152 SSH_LANG_C_S, 153 SSH_LANG_S_C 154 }; 155 156 #define SSH_CRYPT 2 157 #define SSH_MAC 3 158 #define SSH_COMP 4 159 #define SSH_LANG 5 160 161 enum ssh_auth_e { 162 SSH_AUTH_SUCCESS = 0, 163 SSH_AUTH_DENIED, 164 SSH_AUTH_PARTIAL, 165 SSH_AUTH_INFO, 166 SSH_AUTH_AGAIN, 167 SSH_AUTH_ERROR = -1 168 }; 169 170 / * banderas de autenticación * / 171 #define SSH_AUTH_METHOD_UNKNOWN 0 172 #define SSH_AUTH_METHOD_NONE 0x0001 173 #define SSH_AUTH_METHOD_PASSWORD 0x0002 174 #define SSH_AUTH_METHOD_PUBLICKEY 0x0004 175 #define SSH_AUTH_METHOD_HOSTBASED 0x0008 176 #define SSH_AUTH_METHOD_INTERACTIVE 0x0010 177 #define SSH_AUTH_METHOD_GSSAPI_MIC 0x0020 178 179 / * mensajes * / 180 enum ssh_requests_e { 181 SSH_REQUEST_AUTH = 1, 182 SSH_REQUEST_CHANNEL_OPEN, 183 SSH_REQUEST_CHANNEL, 184 SSH_REQUEST_SERVICE, 185 SSH_REQUEST_GLOBAL 186 }; 187 188 enum ssh_channel_type_e { 189 SSH_CHANNEL_UNKNOWN = 0, 190 SSH_CHANNEL_SESSION, 191 SSH_CHANNEL_DIRECT_TCPIP, 192 SSH_CHANNEL_FORWARDED_TCPIP, 193 SSH_CHANNEL_X11, 194 SSH_CHANNEL_AUTH_AGENT 195 }; 196 197 enum ssh_channel_requests_e { 198 SSH_CHANNEL_REQUEST_UNKNOWN = 0, 199 SSH_CHANNEL_REQUEST_PTY, 200 SSH_CHANNEL_REQUEST_EXEC, 201 SSH_CHANNEL_REQUEST_SHELL, 202 SSH_CHANNEL_REQUEST_ENV, 203 SSH_CHANNEL_REQUEST_SUBSYSTEM, 204 SSH_CHANNEL_REQUEST_WINDOW_CHANGE, 205 SSH_CHANNEL_REQUEST_X11 206 }; 207 208 enum ssh_global_requests_e { 209 SSH_GLOBAL_REQUEST_UNKNOWN = 0, 210 SSH_GLOBAL_REQUEST_TCPIP_FORWARD, 211 SSH_GLOBAL_REQUEST_CANCEL_TCPIP_FORWARD, 212 SSH_GLOBAL_REQUEST_KEEPALIVE 213 }; 214 215 enum ssh_publickey_state_e { 216 SSH_PUBLICKEY_STATE_ERROR = -1, 217 SSH_PUBLICKEY_STATE_NONE = 0, 218 SSH_PUBLICKEY_STATE_VALID = 1, 219 SSH_PUBLICKEY_STATE_WRONG = 2 220 }; 221 222 / * Indicadores de estado * / 224 #define SSH_CLOSED 0x01 225 226 #define SSH_READ_PENDING 0x02 227 228 #define SSH_CLOSED_ERROR 0x04 229 230 #define SSH_WRITE_PENDING 0x08 231 232 enum ssh_server_known_e { 233 SSH_SERVER_ERROR = -1, 234 SSH_SERVER_NOT_KNOWN = 0, 235 SSH_SERVER_KNOWN_OK, 236 SSH_SERVER_KNOWN_CHANGED, 237 SSH_SERVER_FOUND_OTHER, 238 SSH_SERVER_FILE_NOT_FOUND 239 }; 240 241 enum ssh_known_hosts_e { 245 SSH_KNOWN_HOSTS_ERROR = -2, 246 251 SSH_KNOWN_HOSTS_NOT_FOUND = -1, 252 257 SSH_KNOWN_HOSTS_UNKNOWN = 0, 258 262 SSH_KNOWN_HOSTS_OK, 263 269 SSH_KNOWN_HOSTS_CHANGED, 270 275 SSH_KNOWN_HOSTS_OTHER, 276 }; 277 278 #ifndef MD5_DIGEST_LEN 279 #define MD5_DIGEST_LEN 16 280 #endif 281 / * errores * / 282 283 enum ssh_error_types_e { 284 SSH_NO_ERROR = 0, 285 SSH_REQUEST_DENIED, 286 SSH_FATAL, 287 SSH_EINTR 288 }; 289 290 / * algunos tipos de claves * / 291 enum ssh_keytypes_e { 292 SSH_KEYTYPE_UNKNOWN = 0, 293 SSH_KEYTYPE_DSS = 1, 294 SSH_KEYTYPE_RSA, 295 SSH_KEYTYPE_RSA1, 296 SSH_KEYTYPE_ECDSA, 297 SSH_KEYTYPE_ED25519, 298 SSH_KEYTYPE_DSS_CERT01, 299 SSH_KEYTYPE_RSA_CERT01 300 }; 301 302 enum ssh_keycmp_e { 303 SSH_KEY_CMP_PUBLIC = 0, 304 SSH_KEY_CMP_PRIVATE 305 }; 306 307 #define SSH_ADDRSTRLEN 46 308 309 struct ssh_knownhosts_entry { 310 char * nombre de host; 311 char * sin analizar; 312 ssh_key publickey; 313 char * comentario; 314 }; 315 316 317 / * Códigos de retorno de error * / 318 #define SSH_OK 0 / * Sin error * / 319 #define SSH_ERROR -1 / * Error de algún tipo * / 320 #define SSH_AGAIN -2 / * La llamada sin bloqueo debe repetirse * / 321 #define SSH_EOF -127 / * Ya tenemos un eof * / 322 329 enum { 332 SSH_LOG_NOLOG = 0, 335 SSH_LOG_WARNING , 338 SSH_LOG_PROTOCOL , 341 SSH_LOG_PACKET , 344 SSH_LOG_FUNCTIONS 345 }; 347 #define SSH_LOG_RARE SSH_LOG_WARNING 348 357 #define SSH_LOG_NONE 0 358 359 #define SSH_LOG_WARN 1 360 361 #define SSH_LOG_INFO 2 362 363 #define SSH_LOG_DEBUG 3 364 365 #define SSH_LOG_TRACE 4 366 369 enum ssh_options_e { 370 SSH_OPTIONS_HOST, 371 SSH_OPTIONS_PORT, 372 SSH_OPTIONS_PORT_STR, 373 SSH_OPTIONS_FD, 374 SSH_OPTIONS_USER, 375 SSH_OPTIONS_SSH_DIR, 376 SSH_OPTIONS_IDENTITY, 377 SSH_OPTIONS_ADD_IDENTITY, 378 SSH_OPTIONS_KNOWNHOSTS, 379 SSH_OPTIONS_TIMEOUT, 380 SSH_OPTIONS_TIMEOUT_USEC, 381 SSH_OPTIONS_SSH1, 382 SSH_OPTIONS_SSH2, 383 SSH_OPTIONS_LOG_VERBOSITY, 384 SSH_OPTIONS_LOG_VERBOSITY_STR, 385 SSH_OPTIONS_CIPHERS_C_S, 386 SSH_OPTIONS_CIPHERS_S_C, 387 SSH_OPTIONS_COMPRESSION_C_S, 388 SSH_OPTIONS_COMPRESSION_S_C, 389 SSH_OPTIONS_PROXYCOMMAND, 390 SSH_OPTIONS_BINDADDR, 391 SSH_OPTIONS_STRICTHOSTKEYCHECK, 392 SSH_OPTIONS_COMPRESSION, 393 SSH_OPTIONS_COMPRESSION_LEVEL, 394 SSH_OPTIONS_KEY_EXCHANGE, 395 SSH_OPTIONS_HOSTKEYS, 396 SSH_OPTIONS_GSSAPI_SERVER_IDENTITY, 397 SSH_OPTIONS_GSSAPI_CLIENT_IDENTITY, 398 SSH_OPTIONS_GSSAPI_DELEGATE_CREDENTIALS, 399 SSH_OPTIONS_HMAC_C_S, 400 SSH_OPTIONS_HMAC_S_C, 401 SSH_OPTIONS_PASSWORD_AUTH, 402 SSH_OPTIONS_PUBKEY_AUTH, 403 SSH_OPTIONS_KBDINT_AUTH, 404 SSH_OPTIONS_GSSAPI_AUTH, 405 SSH_OPTIONS_GLOBAL_KNOWNHOSTS, 406 SSH_OPTIONS_NODELAY, 407 SSH_OPTIONS_PUBLICKEY_ACCEPTED_TYPES, 408 SSH_OPTIONS_PROCESS_CONFIG, 409 SSH_OPTIONS_REKEY_DATA, 410 SSH_OPTIONS_REKEY_TIME, 411 }; 412 413 enum { 415 SSH_SCP_WRITE, 417 SSH_SCP_READ, 418 SSH_SCP_RECURSIVE = 0x10 419 }; 420 421 enum ssh_scp_request_types { 423 SSH_SCP_REQUEST_NEWDIR = 1, 425 SSH_SCP_REQUEST_NEWFILE, 427 SSH_SCP_REQUEST_EOF, 429 SSH_SCP_REQUEST_ENDDIR, 431 SSH_SCP_REQUEST_WARNING 432 }; 433 434 enum ssh_connector_flags_e { 436 SSH_CONNECTOR_STDOUT = 1, 438 SSH_CONNECTOR_STDERR = 2, 440 SSH_CONNECTOR_BOTH = 3 441 }; 442 443 LIBSSH_API int ssh_blocking_flush ( sesión ssh_session , int timeout); 444 LIBSSH_API ssh_channel ssh_channel_accept_x11 ( canal ssh_channel , int timeout_ms); 445 LIBSSH_API int ssh_channel_change_pty_size ( canal ssh_channel , int cols, int filas); 446 LIBSSH_API int ssh_channel_close ( canal ssh_channel ); 447 LIBSSH_API void ssh_channel_free ( canal ssh_channel ); 448 LIBSSH_API int ssh_channel_get_exit_status ( canal ssh_channel ); 449 LIBSSH_API ssh_session ssh_channel_get_session ( canal ssh_channel ); 450 LIBSSH_API int ssh_channel_is_closed ( canal ssh_channel ); 451 LIBSSH_API int ssh_channel_is_eof ( canal ssh_channel ); 452 LIBSSH_API int ssh_channel_is_open ( canal ssh_channel ); 453 LIBSSH_API ssh_channel ssh_channel_new ( sesión ssh_session ); 454 LIBSSH_API int ssh_channel_open_auth_agent ( canal ssh_channel ); 455 LIBSSH_API int ssh_channel_open_forward ( canal ssh_channel , const char * host remoto, 456 int puerto remoto, const char * sourcehost, int localport); 457 LIBSSH_API int ssh_channel_open_session ( canal ssh_channel ); 458 LIBSSH_API int ssh_channel_open_x11 ( canal ssh_channel , const char * orig_addr, int orig_port); 459 LIBSSH_API int ssh_channel_poll ( canal ssh_channel , int is_stderr); 460 LIBSSH_API int ssh_channel_poll_timeout ( canal ssh_channel , int timeout, int is_stderr); 461 LIBSSH_API int ssh_channel_read ( canal ssh_channel , void * dest, uint32_t count, int is_stderr); 462 LIBSSH_API int ssh_channel_read_timeout ( ssh_channel channel, void * dest, uint32_t count, int is_stderr, int timeout_ms); 463 LIBSSH_API int ssh_channel_read_nonblocking ( canal ssh_channel , void * dest, uint32_t count, 464 int is_stderr); 465 LIBSSH_API int ssh_channel_request_env ( canal ssh_channel , const char * nombre, const char * valor); 466 LIBSSH_API int ssh_channel_request_exec ( canal ssh_channel , const char * cmd); 467 LIBSSH_API int ssh_channel_request_pty ( canal ssh_channel ); 468 LIBSSH_API int ssh_channel_request_pty_size ( canal ssh_channel , const char * term, 469 int cols, int filas); 470 LIBSSH_API int ssh_channel_request_shell ( canal ssh_channel ); 471 LIBSSH_API int ssh_channel_request_send_signal ( canal ssh_channel , const char * signum); 472 LIBSSH_API int ssh_channel_request_send_break ( ssh_channel canal, longitud uint32_t); 473 LIBSSH_API int ssh_channel_request_sftp ( canal ssh_channel ); 474 LIBSSH_API int ssh_channel_request_subsystem ( canal ssh_channel , const char * subsistema); 475 LIBSSH_API int ssh_channel_request_x11 ( canal ssh_channel , int single_connection, const char * protocolo, 476 const char * cookie, int número_pantalla); 477 LIBSSH_API int ssh_channel_request_auth_agent ( canal ssh_channel ); 478 LIBSSH_API int ssh_channel_send_eof ( canal ssh_channel ); 479 LIBSSH_API int ssh_channel_select ( ssh_channel * readchans, ssh_channel * writechans, ssh_channel * exceptchans, struct 480 timeval * tiempo de espera); 481 LIBSSH_API void ssh_channel_set_blocking ( canal ssh_channel , bloqueo int ); 482 LIBSSH_API void ssh_channel_set_counter ( canal ssh_channel , 483 contador ssh_counter ); 484 LIBSSH_API int ssh_channel_write ( canal ssh_channel , const void * datos, uint32_t len); 485 LIBSSH_API int ssh_channel_write_stderr ( canal ssh_channel , 486 const void * datos, 487 uint32_t len); 488 LIBSSH_API uint32_t ssh_channel_window_size ( canal ssh_channel ); 489 490 LIBSSH_API char * ssh_basename ( const char * ruta); 491 LIBSSH_API void ssh_clean_pubkey_hash ( carácter sin firmar ** hash); 492 LIBSSH_API int ssh_connect ( sesión ssh_session ); 493 494 LIBSSH_API ssh_connector ssh_connector_new ( sesión ssh_session ); 495 LIBSSH_API void ssh_connector_free ( conector ssh_connector ); 496 LIBSSH_API int ssh_connector_set_in_channel ( conector ssh_connector , 497 canal ssh_channel , 498 enum ssh_connector_flags_e banderas); 499 LIBSSH_API int ssh_connector_set_out_channel ( conector ssh_connector , 500 canal ssh_channel , 501 enum ssh_connector_flags_e flags); 502 LIBSSH_API void ssh_connector_set_in_fd ( ssh_connector conector, fd socket_t); 503 LIBSSH_API vacío ssh_connector_set_out_fd ( ssh_connector conector, fd socket_t); 504 505 LIBSSH_API const char * ssh_copyright ( void ); 506 LIBSSH_API void ssh_disconnect ( sesión ssh_session ); 507 LIBSSH_API char * ssh_dirname ( const char * ruta); 508 LIBSSH_API int ssh_finalize ( void ); 509 510 / * REENVÍO DE PUERTO INVERSO * / 511 LIBSSH_API ssh_channel ssh_channel_accept_forward ( sesión ssh_session , 512 int timeout_ms, 513 int * puerto_destino); 514 LIBSSH_API int ssh_channel_cancel_forward ( sesión ssh_session , 515 const char * dirección, 516 int puerto); 517 LIBSSH_API int ssh_channel_listen_forward ( sesión ssh_session , 518 const char * dirección, 519 puerto internacional , 520 int * puerto_delimitado); 521 522 LIBSSH_API void ssh_free ( sesión ssh_session ); 523 LIBSSH_API const char * ssh_get_disconnect_message ( sesión ssh_session ); 524 LIBSSH_API const char * ssh_get_error ( void * error); 525 LIBSSH_API int ssh_get_error_code ( void * error); 526 LIBSSH_API socket_t ssh_get_fd ( sesión ssh_session ); 527 LIBSSH_API char * ssh_get_hexa ( const unsigned char * what, size_t len); 528 LIBSSH_API char * ssh_get_issue_banner ( sesión ssh_session ); 529 LIBSSH_API int ssh_get_openssh_version ( sesión ssh_session ); 530 531 LIBSSH_API int ssh_get_server_publickey ( ssh_session sesión, clave ssh tecla *); 532 533 enum ssh_publickey_hash_type { 534 SSH_PUBLICKEY_HASH_SHA1, 535 SSH_PUBLICKEY_HASH_MD5, 536 SSH_PUBLICKEY_HASH_SHA256 537 }; 538 LIBSSH_API int ssh_get_publickey_hash ( clave const ssh_key , 539 enum ssh_publickey_hash_type type, 540 char ** hash sin firmar , 541 size_t * HLEN); 542 543 / * FUNCIONES ANULADAS * / 544 SSH_DEPRECATED LIBSSH_API int ssh_get_pubkey_hash ( sesión ssh_session , carácter sin firmar ** hash); 545 SSH_DEPRECATED LIBSSH_API ssh_channel ssh_forward_accept ( sesión ssh_session , int timeout_ms); 546 SSH_DEPRECATED LIBSSH_API int ssh_forward_cancel ( sesión ssh_session , const char * dirección, int puerto); 547 SSH_DEPRECATED LIBSSH_API int ssh_forward_listen ( sesión ssh_session , const char * dirección, int puerto, int * bound_port); 548 SSH_DEPRECATED LIBSSH_API int ssh_get_publickey ( ssh_session sesión, clave ssh tecla *); 549 SSH_DEPRECATED LIBSSH_API int ssh_write_knownhost ( sesión ssh_session ); 550 SSH_DEPRECATED LIBSSH_API char * ssh_dump_knownhost ( sesión ssh_session ); 551 SSH_DEPRECATED LIBSSH_API int ssh_is_server_known ( sesión ssh_session ); 552 SSH_DEPRECATED LIBSSH_API void ssh_print_hexa ( const char * descr, const unsigned char * what, size_t len); 553 554 555 556 LIBSSH_API int ssh_get_random ( void * donde, int len, int fuerte); 557 LIBSSH_API int ssh_get_version ( sesión ssh_session ); 558 LIBSSH_API int ssh_get_status ( sesión ssh_session ); 559 LIBSSH_API int ssh_get_poll_flags ( sesión ssh_session ); 560 LIBSSH_API int ssh_init ( vacío ); 561 LIBSSH_API int ssh_is_blocking ( sesión ssh_session ); 562 LIBSSH_API int ssh_is_connected ( sesión ssh_session ); 563 564 / * HOSTS CONOCIDOS * / 565 LIBSSH_API void ssh_knownhosts_entry_free ( struct ssh_knownhosts_entry * entrada); 566 #define SSH_KNOWNHOSTS_ENTRY_FREE (e) do {\ 567 si ((e)! = NULO) {\ 568 ssh_knownhosts_entry_free (e); \ 569 e = NULO; \ 570 } \ 571 } mientras (0) 572 573 LIBSSH_API int ssh_known_hosts_parse_line ( const char * host, 574 const char * línea, 575 entrada struct ssh_knownhosts_entry **); 576 LIBSSH_API enumeración ssh_known_hosts_e ssh_session_has_known_hosts_entry ( sesión ssh_session ); 577 578 LIBSSH_API int ssh_session_export_known_hosts_entry ( sesión ssh_session , 579 Char ** pentry_string); 580 LIBSSH_API int ssh_session_update_known_hosts ( sesión ssh_session ); 581 582 LIBSSH_API enumeración ssh_known_hosts_e 583 ssh_session_get_known_hosts_entry ( sesión ssh_session , 584 struct ssh_knownhosts_entry ** pentry); 585 LIBSSH_API enumeración ssh_known_hosts_e ssh_session_is_known_server ( sesión ssh_session ); 586 587 / * REGISTRO * / 588 LIBSSH_API int ssh_set_log_level ( nivel int ); 589 LIBSSH_API int ssh_get_log_level ( void ); 590 LIBSSH_API void * ssh_get_log_userdata ( void ); 591 LIBSSH_API int ssh_set_log_userdata ( void * datos); 592 LIBSSH_API void _ssh_log ( int verbosidad, 593 const char * función , 594 const char * formato, ...) PRINTF_ATTRIBUTE (3, 4); 595 596 / * legado * / 597 SSH_DEPRECATED LIBSSH_API void ssh_log ( sesión ssh_session , 598 int prioridad, 599 const char * formato, ...) PRINTF_ATTRIBUTE (3, 4); 600 601 LIBSSH_API ssh_channel ssh_message_channel_request_open_reply_accept ( ssh_message msg); 602 LIBSSH_API int ssh_message_channel_request_reply_success ( ssh_message msg); 603 #define SSH_MESSAGE_FREE (x) \ 604 hacer {if ((x)! = NULL) {ssh_message_free (x); (x) = NULO; }} mientras (0) 605 LIBSSH_API void ssh_message_free ( ssh_message msg); 606 LIBSSH_API ssh_message ssh_message_get ( sesión ssh_session ); 607 LIBSSH_API int ssh_message_subtype ( ssh_message msg); 608 LIBSSH_API int ssh_message_type ( ssh_message msg); 609 LIBSSH_API int ssh_mkdir ( const char * nombre de ruta, modo_t); 610 LIBSSH_API ssh_session ssh_new(void); 611 612 LIBSSH_API int ssh_options_copy(ssh_session src, ssh_session *dest); 613 LIBSSH_API int ssh_options_getopt(ssh_session session, int *argcptr, char **argv); 614 LIBSSH_API int ssh_options_parse_config(ssh_session session, const char *filename); 615 LIBSSH_API int ssh_options_set(ssh_session session, enum ssh_options_e type, 616 const void *value); 617 LIBSSH_API int ssh_options_get(ssh_session session, enum ssh_options_e type, 618 char **value); 619 LIBSSH_API int ssh_options_get_port(ssh_session session, unsigned int * port_target); 620 LIBSSH_API int ssh_pcap_file_close(ssh_pcap_file pcap); 621 LIBSSH_API void ssh_pcap_file_free(ssh_pcap_file pcap); 622 LIBSSH_API ssh_pcap_file ssh_pcap_file_new(void); 623 LIBSSH_API int ssh_pcap_file_open(ssh_pcap_file pcap, const char *filename); 624 638 typedef int (*ssh_auth_callback) (const char *prompt, char *buf, size_t len, 639 int echo, int verify, void *userdata); 640 641 LIBSSH_API ssh_key ssh_key_new(void); 642 #define SSH_KEY_FREE(x) \ 643 do { if ((x) != NULL) { ssh_key_free(x); x = NULL; } } while(0) 644 LIBSSH_API void ssh_key_free (ssh_key key); 645 LIBSSH_API enum ssh_keytypes_e ssh_key_type(const ssh_key key); 646 LIBSSH_API const char *ssh_key_type_to_char(enum ssh_keytypes_e type); 647 LIBSSH_API enum ssh_keytypes_e ssh_key_type_from_name(const char *name); 648 LIBSSH_API int ssh_key_is_public(const ssh_key k); 649 LIBSSH_API int ssh_key_is_private(const ssh_key k); 650 LIBSSH_API int ssh_key_cmp(const ssh_key k1, 651 const ssh_key k2, 652 enum ssh_keycmp_e what); 653 654 LIBSSH_API int ssh_pki_generate(enum ssh_keytypes_e type, int parameter, 655 ssh_key *pkey); 656 LIBSSH_API int ssh_pki_import_privkey_base64(const char *b64_key, 657 const char *passphrase, 658 ssh_auth_callback auth_fn, 659 void *auth_data, 660 ssh_key *pkey); 661 LIBSSH_API int ssh_pki_export_privkey_base64(const ssh_key privkey, 662 const char *passphrase, 663 ssh_auth_callback auth_fn, 664 void *auth_data, 665 char **b64_key); 666 LIBSSH_API int ssh_pki_import_privkey_file(const char *filename, 667 const char *passphrase, 668 ssh_auth_callback auth_fn, 669 void *auth_data, 670 ssh_key *pkey); 671 LIBSSH_API int ssh_pki_export_privkey_file(const ssh_key privkey, 672 const char *passphrase, 673 ssh_auth_callback auth_fn, 674 void *auth_data, 675 const char *filename); 676 677 LIBSSH_API int ssh_pki_copy_cert_to_privkey(const ssh_key cert_key, 678 ssh_key privkey); 679 680 LIBSSH_API int ssh_pki_import_pubkey_base64(const char *b64_key, 681 enum ssh_keytypes_e type, 682 ssh_key *pkey); 683 LIBSSH_API int ssh_pki_import_pubkey_file(const char *filename, 684 ssh_key *pkey); 685 686 LIBSSH_API int ssh_pki_import_cert_base64(const char *b64_cert, 687 enum ssh_keytypes_e type, 688 ssh_key *pkey); 689 LIBSSH_API int ssh_pki_import_cert_file(const char *filename, 690 ssh_key *pkey); 691 692 LIBSSH_API int ssh_pki_export_privkey_to_pubkey(const ssh_key privkey, 693 ssh_key *pkey); 694 LIBSSH_API int ssh_pki_export_pubkey_base64(const ssh_key key, 695 char **b64_key); 696 LIBSSH_API int ssh_pki_export_pubkey_file(const ssh_key key, 697 const char *filename); 698 699 LIBSSH_API const char *ssh_pki_key_ecdsa_name(const ssh_key key); 700 701 LIBSSH_API char *ssh_get_fingerprint_hash(enum ssh_publickey_hash_type type, 702 unsigned char *hash, 703 size_t len); 704 LIBSSH_API void ssh_print_hash(enum ssh_publickey_hash_type type, unsigned char *hash, size_t len); 705 LIBSSH_API int ssh_send_ignore (ssh_session session, const char *data); 706 LIBSSH_API int ssh_send_debug (ssh_session session, const char *message, int always_display); 707 LIBSSH_API void ssh_gssapi_set_creds(ssh_session session, const ssh_gssapi_creds creds); 708 LIBSSH_API int ssh_scp_accept_request(ssh_scp scp); 709 LIBSSH_API int ssh_scp_close(ssh_scp scp); 710 LIBSSH_API int ssh_scp_deny_request(ssh_scp scp, const char *reason); 711 LIBSSH_API void ssh_scp_free(ssh_scp scp); 712 LIBSSH_API int ssh_scp_init(ssh_scp scp); 713 LIBSSH_API int ssh_scp_leave_directory(ssh_scp scp); 714 LIBSSH_API ssh_scp ssh_scp_new(ssh_session session, int mode, const char *location); 715 LIBSSH_API int ssh_scp_pull_request(ssh_scp scp); 716 LIBSSH_API int ssh_scp_push_directory(ssh_scp scp, const char *dirname, int mode); 717 LIBSSH_API int ssh_scp_push_file(ssh_scp scp, const char *filename, size_t size, int perms); 718 LIBSSH_API int ssh_scp_push_file64(ssh_scp scp, const char *filename, uint64_t size, int perms); 719 LIBSSH_API int ssh_scp_read(ssh_scp scp, void *buffer, size_t size); 720 LIBSSH_API const char *ssh_scp_request_get_filename(ssh_scp scp); 721 LIBSSH_API int ssh_scp_request_get_permissions(ssh_scp scp); 722 LIBSSH_API size_t ssh_scp_request_get_size(ssh_scp scp); 723 LIBSSH_API uint64_t ssh_scp_request_get_size64(ssh_scp scp); 724 LIBSSH_API const char *ssh_scp_request_get_warning(ssh_scp scp); 725 LIBSSH_API int ssh_scp_write(ssh_scp scp, const void *buffer, size_t len); 726 LIBSSH_API int ssh_select(ssh_channel *channels, ssh_channel *outchannels, socket_t maxfd, 727 fd_set *readfds, struct timeval *timeout); 728 LIBSSH_API int ssh_service_request(ssh_session session, const char *service); 729 LIBSSH_API int ssh_set_agent_channel(ssh_session session, ssh_channel channel); 730 LIBSSH_API int ssh_set_agent_socket(ssh_session session, socket_t fd); 731 LIBSSH_API void ssh_set_blocking(ssh_session session, int blocking); 732 LIBSSH_API void ssh_set_counters(ssh_session session, ssh_counter scounter, 733 ssh_counter rcounter); 734 LIBSSH_API void ssh_set_fd_except(ssh_session session); 735 LIBSSH_API void ssh_set_fd_toread(ssh_session session); 736 LIBSSH_API void ssh_set_fd_towrite(ssh_session session); 737 LIBSSH_API void ssh_silent_disconnect(ssh_session session); 738 LIBSSH_API int ssh_set_pcap_file(ssh_session session, ssh_pcap_file pcapfile); 739 740 /* USERAUTH */ 741 LIBSSH_API int ssh_userauth_none(ssh_session session, const char *username); 742 LIBSSH_API int ssh_userauth_list(ssh_session session, const char *username); 743 LIBSSH_API int ssh_userauth_try_publickey(ssh_session session, 744 const char *username, 745 const ssh_key pubkey); 746 LIBSSH_API int ssh_userauth_publickey(ssh_session session, 747 const char *username, 748 const ssh_key privkey); 749 #ifndef _WIN32 750 LIBSSH_API int ssh_userauth_agent(ssh_session session, 751 const char *username); 752 #endif 753 LIBSSH_API int ssh_userauth_publickey_auto(ssh_session session, 754 const char *username, 755 const char *passphrase); 756 LIBSSH_API int ssh_userauth_password(ssh_session session, 757 const char *username, 758 const char *password); 759 760 LIBSSH_API int ssh_userauth_kbdint(ssh_session session, const char *user, const char *submethods); 761 LIBSSH_API const char *ssh_userauth_kbdint_getinstruction(ssh_session session); 762 LIBSSH_API const char *ssh_userauth_kbdint_getname(ssh_session session); 763 LIBSSH_API int ssh_userauth_kbdint_getnprompts(ssh_session session); 764 LIBSSH_API const char *ssh_userauth_kbdint_getprompt(ssh_session session, unsigned int i, char *echo); 765 LIBSSH_API int ssh_userauth_kbdint_getnanswers(ssh_session session); 766 LIBSSH_API const char *ssh_userauth_kbdint_getanswer(ssh_session session, unsigned int i); 767 LIBSSH_API int ssh_userauth_kbdint_setanswer(ssh_session session, unsigned int i, 768 const char *answer); 769 LIBSSH_API int ssh_userauth_gssapi(ssh_session session); 770 LIBSSH_API const char *ssh_version(int req_version); 771 772 LIBSSH_API void ssh_string_burn(ssh_string str); 773 LIBSSH_API ssh_string ssh_string_copy(ssh_string str); 774 LIBSSH_API void *ssh_string_data(ssh_string str); 775 LIBSSH_API int ssh_string_fill(ssh_string str, const void *data, size_t len); 776 #define SSH_STRING_FREE(x) \ 777 do { if ((x) != NULL) { ssh_string_free(x); x = NULL; } } while(0) 778 LIBSSH_API void ssh_string_free(ssh_string str); 779 LIBSSH_API ssh_string ssh_string_from_char(const char *what); 780 LIBSSH_API size_t ssh_string_len(ssh_string str); 781 LIBSSH_API ssh_string ssh_string_new(size_t size); 782 LIBSSH_API const char *ssh_string_get_char(ssh_string str); 783 LIBSSH_API char *ssh_string_to_char(ssh_string str); 784 #define SSH_STRING_FREE_CHAR(x) \ 785 do { if ((x) != NULL) { ssh_string_free_char(x); x = NULL; } } while(0) 786 LIBSSH_API void ssh_string_free_char(char *s); 787 788 LIBSSH_API int ssh_getpass(const char *prompt, char *buf, size_t len, int echo, 789 int verify); 790 791 792 typedef int (*ssh_event_callback)(socket_t fd, int revents, void *userdata); 793 794 LIBSSH_API ssh_event ssh_event_new(void); 795 LIBSSH_API int ssh_event_add_fd(ssh_event event, socket_t fd, short events, 796 ssh_event_callback cb, void *userdata); 797 LIBSSH_API int ssh_event_add_session(ssh_event event, ssh_session session); 798 LIBSSH_API int ssh_event_add_connector(ssh_event event, ssh_connector connector); 799 LIBSSH_API int ssh_event_dopoll(ssh_event event, int timeout); 800 LIBSSH_API int ssh_event_remove_fd(ssh_event event, socket_t fd); 801 LIBSSH_API int ssh_event_remove_session(ssh_event event, ssh_session session); 802 LIBSSH_API int ssh_event_remove_connector(ssh_event event, ssh_connector connector); 803 LIBSSH_API void ssh_event_free(ssh_event event); 804 LIBSSH_API const char* ssh_get_clientbanner(ssh_session session); 805 LIBSSH_API const char* ssh_get_serverbanner(ssh_session session); 806 LIBSSH_API const char* ssh_get_kex_algo(ssh_session session); 807 LIBSSH_API const char* ssh_get_cipher_in(ssh_session session); 808 LIBSSH_API const char* ssh_get_cipher_out(ssh_session session); 809 LIBSSH_API const char* ssh_get_hmac_in(ssh_session session); 810 LIBSSH_API const char* ssh_get_hmac_out(ssh_session session); 811 812 LIBSSH_API ssh_buffer ssh_buffer_new(void); 813 LIBSSH_API void ssh_buffer_free(ssh_buffer buffer); 814 #define SSH_BUFFER_FREE(x) \ 815 do { if ((x) != NULL) { ssh_buffer_free(x); x = NULL; } } while(0) 816 LIBSSH_API int ssh_buffer_reinit(ssh_buffer buffer); 817 LIBSSH_API int ssh_buffer_add_data(ssh_buffer buffer, const void *data, uint32_t len); 818 LIBSSH_API uint32_t ssh_buffer_get_data(ssh_buffer buffer, void *data, uint32_t requestedlen); 819 LIBSSH_API void *ssh_buffer_get(ssh_buffer buffer); 820 LIBSSH_API uint32_t ssh_buffer_get_len(ssh_buffer buffer); 821 822 #ifndef LIBSSH_LEGACY_0_4 823 #include "libssh/legacy.h" 824 #endif 825 826 #ifdef __cplusplus 827 } 828 #endif 829 #endif /* _LIBSSH_H */</small> </body> </html> <!-- Juan Angel Luzardo Muslera / montevideo Uruguay -->
Nenu-doc / Acta Non Verba<!DOCTYPE html> <html> <head> <title>Biblioteca</title> </head> <body> <pre style='color:#d1d1d1;background:#000000;'><span style='color:#008073; '><!DOCTYPE html></span> <span style='color:#ff8906; '><</span><span style='color:#e66170; font-weight:bold; '>html</span><span style='color:#ff8906; '>></span> <span style='color:#ff8906; '><</span><span style='color:#e66170; font-weight:bold; '>head</span><span style='color:#ff8906; '>></span> <span style='color:#ff8906; '><</span><span style='color:#e66170; font-weight:bold; '>title</span><span style='color:#ff8906; '>></span>Biblioteca<span style='color:#ff8906; '></</span><span style='color:#e66170; font-weight:bold; '>title</span><span style='color:#ff8906; '>></span> <span style='color:#ff8906; '></</span><span style='color:#e66170; font-weight:bold; '>head</span><span style='color:#ff8906; '>></span> <span style='color:#ff8906; '><</span><span style='color:#e66170; font-weight:bold; '>body</span><span style='color:#ff8906; '>></span> <span style='color:#ff8906; '><</span><span style='color:#e66170; font-weight:bold; '>h2</span> id<span style='color:#d2cd86; '>=</span><span style='color:#00c4c4; '>"fly"</span><span style='color:#ff8906; '>></span>White flag Juan Angel / Montevideo Uruguay<span style='color:#ff8906; '></</span><span style='color:#e66170; font-weight:bold; '>h2</span><span style='color:#ff8906; '>></span> <span style='color:#ff8906; '><</span><span style='color:#e66170; font-weight:bold; '>script</span> type<span style='color:#d2cd86; '>=</span><span style='color:#00c4c4; '>"text/javascript"</span><span style='color:#ff8906; '>></span> message <span style='color:#d2cd86; '>=</span> document<span style='color:#d2cd86; '>.</span>getElementById<span style='color:#d2cd86; '>(</span><span style='color:#02d045; '>"</span><span style='color:#00c4c4; '>fly</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>.</span>innerHTML<span style='color:#b060b0; '>;</span> distance <span style='color:#d2cd86; '>=</span> <span style='color:#008c00; '>50</span><span style='color:#b060b0; '>;</span> speed <span style='color:#d2cd86; '>=</span> <span style='color:#008c00; '>200</span><span style='color:#b060b0; '>;</span> <span style='color:#e66170; font-weight:bold; '>var</span> txt<span style='color:#d2cd86; '>=</span><span style='color:#02d045; '>"</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>,</span> num<span style='color:#d2cd86; '>=</span><span style='color:#008c00; '>0</span><span style='color:#d2cd86; '>,</span> num4<span style='color:#d2cd86; '>=</span><span style='color:#008c00; '>0</span><span style='color:#d2cd86; '>,</span> flyofle<span style='color:#d2cd86; '>=</span><span style='color:#02d045; '>"</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>,</span> flyofwi<span style='color:#d2cd86; '>=</span><span style='color:#02d045; '>"</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>,</span> flyofto<span style='color:#d2cd86; '>=</span><span style='color:#02d045; '>"</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>,</span> fly<span style='color:#d2cd86; '>=</span>document<span style='color:#d2cd86; '>.</span>getElementById<span style='color:#d2cd86; '>(</span><span style='color:#02d045; '>"</span><span style='color:#00c4c4; '>fly</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>)</span><span style='color:#b060b0; '>;</span> <span style='color:#e66170; font-weight:bold; '>function</span> stfly<span style='color:#d2cd86; '>(</span><span style='color:#d2cd86; '>)</span> <span style='color:#b060b0; '>{</span> <span style='color:#e66170; font-weight:bold; '>for</span><span style='color:#d2cd86; '>(</span>i<span style='color:#d2cd86; '>=</span><span style='color:#008c00; '>0</span><span style='color:#b060b0; '>;</span>i <span style='color:#d2cd86; '>!=</span> message<span style='color:#d2cd86; '>.</span><span style='color:#e66170; font-weight:bold; '>length</span><span style='color:#b060b0; '>;</span>i<span style='color:#d2cd86; '>++</span><span style='color:#d2cd86; '>)</span> <span style='color:#b060b0; '>{</span> <span style='color:#e66170; font-weight:bold; '>if</span><span style='color:#d2cd86; '>(</span>message<span style='color:#d2cd86; '>.</span><span style='color:#e66170; font-weight:bold; '>charAt</span><span style='color:#d2cd86; '>(</span>i<span style='color:#d2cd86; '>)</span> <span style='color:#d2cd86; '>!=</span> <span style='color:#02d045; '>"</span><span style='color:#00c4c4; '>$</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>)</span> txt <span style='color:#d2cd86; '>+=</span> <span style='color:#02d045; '>"</span><span style='color:#00c4c4; '><span style='position:relative;visibility:hidden;' id='n</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>+</span>i<span style='color:#d2cd86; '>+</span><span style='color:#02d045; '>"</span><span style='color:#00c4c4; '>'></span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>+</span>message<span style='color:#d2cd86; '>.</span><span style='color:#e66170; font-weight:bold; '>charAt</span><span style='color:#d2cd86; '>(</span>i<span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>+</span><span style='color:#02d045; '>"</span><span style='color:#00c4c4; '><\/span></span><span style='color:#02d045; '>"</span><span style='color:#b060b0; '>;</span> <span style='color:#e66170; font-weight:bold; '>else</span> txt <span style='color:#d2cd86; '>+=</span> <span style='color:#02d045; '>"</span><span style='color:#00c4c4; '><br></span><span style='color:#02d045; '>"</span><span style='color:#b060b0; '>;</span> <span style='color:#b060b0; '>}</span> fly<span style='color:#d2cd86; '>.</span>innerHTML <span style='color:#d2cd86; '>=</span> txt<span style='color:#b060b0; '>;</span> txt <span style='color:#d2cd86; '>=</span> <span style='color:#02d045; '>"</span><span style='color:#02d045; '>"</span><span style='color:#b060b0; '>;</span> flyofle <span style='color:#d2cd86; '>=</span> fly<span style='color:#d2cd86; '>.</span>offsetLeft<span style='color:#b060b0; '>;</span> flyofwi <span style='color:#d2cd86; '>=</span> fly<span style='color:#d2cd86; '>.</span>offsetWidth<span style='color:#b060b0; '>;</span> flyofto <span style='color:#d2cd86; '>=</span> fly<span style='color:#d2cd86; '>.</span>offsetTop<span style='color:#b060b0; '>;</span> fly2b<span style='color:#d2cd86; '>(</span><span style='color:#d2cd86; '>)</span><span style='color:#b060b0; '>;</span> <span style='color:#b060b0; '>}</span> <span style='color:#e66170; font-weight:bold; '>function</span> fly2b<span style='color:#d2cd86; '>(</span><span style='color:#d2cd86; '>)</span> <span style='color:#b060b0; '>{</span> <span style='color:#e66170; font-weight:bold; '>if</span><span style='color:#d2cd86; '>(</span>num4 <span style='color:#d2cd86; '>!=</span> message<span style='color:#d2cd86; '>.</span><span style='color:#e66170; font-weight:bold; '>length</span><span style='color:#d2cd86; '>)</span> <span style='color:#b060b0; '>{</span> <span style='color:#e66170; font-weight:bold; '>if</span><span style='color:#d2cd86; '>(</span>message<span style='color:#d2cd86; '>.</span><span style='color:#e66170; font-weight:bold; '>charAt</span><span style='color:#d2cd86; '>(</span>num4<span style='color:#d2cd86; '>)</span> <span style='color:#d2cd86; '>!=</span> <span style='color:#02d045; '>"</span><span style='color:#00c4c4; '>$</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>)</span> <span style='color:#b060b0; '>{</span> <span style='color:#e66170; font-weight:bold; '>var</span> then <span style='color:#d2cd86; '>=</span> document<span style='color:#d2cd86; '>.</span>getElementById<span style='color:#d2cd86; '>(</span><span style='color:#02d045; '>"</span><span style='color:#00c4c4; '>n</span><span style='color:#02d045; '>"</span> <span style='color:#d2cd86; '>+</span> num4<span style='color:#d2cd86; '>)</span><span style='color:#b060b0; '>;</span> then<span style='color:#d2cd86; '>.</span>style<span style='color:#d2cd86; '>.</span>left <span style='color:#d2cd86; '>=</span> flyofle <span style='color:#d2cd86; '>-</span> then<span style='color:#d2cd86; '>.</span>offsetLeft <span style='color:#d2cd86; '>+</span> flyofwi <span style='color:#02d045; '>/</span><span style='color:#00c4c4; '> 2 </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> 'px';</span> <span style='color:#00c4c4; '>then</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>top = flyofto - then</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>offsetTop </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> distance </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> 'px';</span> <span style='color:#00c4c4; '>fly3</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>then</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>id, parseInt</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>then</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>left</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '>, parseInt</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>then</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>left</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> / 5, parseInt</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>then</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>top</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '>, parseInt</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>then</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>top</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> / 5</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '>;</span> <span style='color:#00c4c4; '>        }</span> <span style='color:#00c4c4; '>        num4</span><span style='color:#d2cd86; '>+</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>;</span> <span style='color:#00c4c4; '>        setTimeout</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>"fly2b</span><span style='color:#d2cd86; '>(</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '>", speed</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '>;</span> <span style='color:#00c4c4; '>    }</span> <span style='color:#00c4c4; '>}</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>function fly3</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>target,lef2,num2,top2,num3</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> {</span> <span style='color:#00c4c4; '>    if</span><span style='color:#d2cd86; '>(</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>top2</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> != 0 && Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>top2</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> != -1</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> </span><span style='color:#b060b0; '>|</span><span style='color:#b060b0; '>|</span><span style='color:#00c4c4; '> </span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>lef2</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> != 0 && Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>lef2</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> != -1</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> {</span> <span style='color:#00c4c4; '>        if</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>lef2 >= 0</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>            lef2 -= num2;</span> <span style='color:#00c4c4; '>        else</span> <span style='color:#00c4c4; '>            lef2 </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>= num2 </span><span style='color:#d2cd86; '>*</span><span style='color:#00c4c4; '> -1;</span> <span style='color:#00c4c4; '>        if</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>lef2</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> != -1</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> {</span> <span style='color:#00c4c4; '>document</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>getElementById</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>target</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>visibility = "visible";</span> <span style='color:#00c4c4; '>document</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>getElementById</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>target</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>left = Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>lef2</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> 'px';</span> <span style='color:#00c4c4; '>        } else {</span> <span style='color:#00c4c4; '>            document</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>getElementById</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>target</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>visibility = "visible";</span> <span style='color:#00c4c4; '>            document</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>getElementById</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>target</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>left = Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>lef2 </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> 1</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> 'px';</span> <span style='color:#00c4c4; '>        }</span> <span style='color:#00c4c4; '>        if</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>lef2 >= 0</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>            top2 -= num3</span> <span style='color:#00c4c4; '>        else</span> <span style='color:#00c4c4; '>            top2 </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>= num3 </span><span style='color:#d2cd86; '>*</span><span style='color:#00c4c4; '> -1;</span> <span style='color:#00c4c4; '>        if</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>top2</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> != -1</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>            document</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>getElementById</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>target</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>top = Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>top2</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> 'px';</span> <span style='color:#00c4c4; '>        else</span> <span style='color:#00c4c4; '>            document</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>getElementById</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>target</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>top = Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>top2 </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> 1</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> 'px';</span> <span style='color:#00c4c4; '>        setTimeout</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>"fly3</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>'"</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>target</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>"',"</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>lef2</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>","</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>num2</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>","</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>top2</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>","</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>num3</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>"</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '>",50</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>    }</span> <span style='color:#00c4c4; '>}</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>stfly</span><span style='color:#d2cd86; '>(</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '><</span><span style='color:#02d045; '>/</span>script<span style='color:#d2cd86; '>></span> <span style='color:#d2cd86; '><</span>h2<span style='color:#d2cd86; '>></span>LIBRARY SSH<span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>h2<span style='color:#d2cd86; '>></span> <span style='color:#d2cd86; '><</span>strong<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span>h1<span style='color:#d2cd86; '>></span>libssh <span style='color:#009f00; '>0.8</span><span style='color:#d2cd86; '>.</span><span style='color:#008c00; '>90</span><span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>h1<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>strong<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span>br <span style='color:#d2cd86; '>/</span><span style='color:#d2cd86; '>></span> <span style='color:#d2cd86; '><</span>p<span style='color:#d2cd86; '>></span> <span style='color:#d2cd86; '><</span>button<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span>li<span style='color:#d2cd86; '>></span>La biblioteca SSH<span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>li<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>button<span style='color:#d2cd86; '>></span> <span style='color:#d2cd86; '><</span>button<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span>i<span style='color:#d2cd86; '>></span>PAGINA PRINCIPAL<span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>li<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>button<span style='color:#d2cd86; '>></span> <span style='color:#d2cd86; '><</span>button<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span>li<span style='color:#d2cd86; '>></span>PÁGINAS RELACIONADAS<span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>li<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>button<span style='color:#d2cd86; '>></span> <span style='color:#d2cd86; '><</span>button<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span>li<span style='color:#d2cd86; '>></span>M�<span style='color:#02d045; '>"</span><span style='color:#00c4c4; '>DULOS</li></button></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>   <button><li>ESTRUCTURAS DE DATOS</li></button></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>      <button><li>ARCHIVOS</li></button></span> <span style='color:#00c4c4; '>          </span> <span style='color:#00c4c4; '>          </p></span> <span style='color:#00c4c4; '>          </span> <span style='color:#00c4c4; '>          <ul></span> <span style='color:#00c4c4; '>             </span> <span style='color:#00c4c4; '>      <button><h3> incluir </h3></button></span> <span style='color:#00c4c4; '>      <button><h3> libssh </h3></button></span> <span style='color:#00c4c4; '>      <button><h3> libssh.h </h3></button></span> <span style='color:#00c4c4; '>                 </span> <span style='color:#00c4c4; '>             <br /></span> <span style='color:#00c4c4; '>             </span> <span style='color:#00c4c4; '>          </ul> </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>   <small>Esta biblioteca es software gratuito; </span> <span style='color:#00c4c4; '>puedes redistribuirlo y / o</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>7 * modificarlo según los términos del GNU Lesser General Public</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>8 * Licencia publicada por la Free Software Foundation; ya sea</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>9 * versión 2.1 de la Licencia, o (a su elección) </span> <span style='color:#00c4c4; '>cualquier versión posterior.</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>10 *</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>11 * Esta biblioteca se distribuye con la esperanza de que sea útil,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>12 * pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de</span> <span style='color:#00c4c4; '> </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>21 #ifndef _LIBSSH_H</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>22 #define _LIBSSH_H</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>23 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>24 #si está definido _WIN32 || definido __CYGWIN__</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>25 #ifdef LIBSSH_STATIC</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>26 #define LIBSSH_API</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>27 #más</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>28 #ifdef LIBSSH_EXPORTS</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>29 #ifdef __GNUC__</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>30 #define LIBSSH_API __attribute __ ((dllexport))</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>31 #más</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>32 #define LIBSSH_API __declspec (dllexport)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>33 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>34 #más</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>35 #ifdef __GNUC__</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>36 #define LIBSSH_API __attribute __ ((dllimport))</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>37 #más</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>38 #define LIBSSH_API __declspec (dllimport)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>39 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>40 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>41 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>42 #más</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>43 #if __GNUC__> = 4 &&! Definido (__ OS2__)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>44 #define LIBSSH_API __attribute __ </span> <span style='color:#00c4c4; '>((visibilidad (</span><span style='color:#02d045; '>"</span>predeterminado<span style='color:#02d045; '>"</span><span style='color:#00c4c4; '>)))</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>45 #más</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>46 #define LIBSSH_API</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>47 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>48 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>49 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>50 #ifdef _MSC_VER</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>51 / * Visual Studio no tiene inttypes.h </span> <span style='color:#00c4c4; '>así que no conoce uint32_t * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>52 typedef int int32_t;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>53 typedef unsigned int uint32_t;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>54 typedef unsigned short uint16_t;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>55 typedef unsigned char uint8_t;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>56 typedef unsigned long long uint64_t;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>57 typedef int mode_t;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>58 #else / * _MSC_VER * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>59 #include <unistd.h></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>60 #include <inttypes.h></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>61 #include <sys / types.h></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>62 #endif / * _MSC_VER * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>63 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>64 #ifdef _WIN32</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>65 #include <winsock2.h></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>66 #else / * _WIN32 * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>67 #include <sys / select.h> / * para fd_set * * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>68 #include <netdb.h></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>69 #endif / * _WIN32 * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>70 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>71 #define SSH_STRINGIFY (s) SSH_TOSTRING (s)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>72 #define SSH_TOSTRING (s) #s</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>73 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>74 / * macros de versión libssh * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>75 #define SSH_VERSION_INT (a, b, c) ((a) << 16 | (b) << 8 | (c))</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>76 #define SSH_VERSION_DOT (a, b, c) a ##. ## b ##. ## c</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>77 #define SSH_VERSION (a, b, c) SSH_VERSION_DOT (a, b, c)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>78 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>79 / * versión libssh * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>80 #define LIBSSH_VERSION_MAJOR 0</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>81 #define LIBSSH_VERSION_MINOR 8</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>82 #define LIBSSH_VERSION_MICRO 90</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>83 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>84 #define LIBSSH_VERSION_INT SSH_VERSION_INT </span> <span style='color:#00c4c4; '>(LIBSSH_VERSION_MAJOR, \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>85 LIBSSH_VERSION_MINOR, \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>86 LIBSSH_VERSION_MICRO)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>87 #define LIBSSH_VERSION SSH_VERSION (LIBSSH_VERSION_MAJOR, \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>88 LIBSSH_VERSION_MINOR, \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>89 LIBSSH_VERSION_MICRO)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>90 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>91 / * GCC tiene verificación de atributo de </span> <span style='color:#00c4c4; '>tipo printf. * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>92 #ifdef __GNUC__</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>93 #define PRINTF_ATTRIBUTE (a, b) __attribute__ </span> <span style='color:#00c4c4; '>((__format__ (__printf__, a, b)))</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>94 #más</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>95 #define PRINTF_ATTRIBUTE (a, b)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>96 #endif / * __GNUC__ * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>97 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>98 #ifdef __GNUC__</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>99 #define SSH_DEPRECATED __attribute__ ((obsoleto))</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>100 #más</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>101 #define SSH_DEPRECATED</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>102 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>103 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>104 #ifdef __cplusplus</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>105 externa </span><span style='color:#02d045; '>"</span>C<span style='color:#02d045; '>"</span><span style='color:#00c4c4; '> {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>106 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>107 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>108 struct ssh_counter_struct {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>109 uint64_t in_bytes;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>110 uint64_t out_bytes;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>111 uint64_t in_packets;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>112 uint64_t out_packets;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>113 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>114 typedef struct ssh_counter_struct * ssh_counter ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>115 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>116 typedef struct ssh_agent_struct * ssh_agent ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>117 typedef struct ssh_buffer_struct * ssh_buffer ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>118 typedef struct ssh_channel_struct * ssh_channel ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>119 typedef struct ssh_message_struct * ssh_message ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>120 typedef struct ssh_pcap_file_struct </span> <span style='color:#00c4c4; '>* ssh_pcap_file;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>121 typedef struct ssh_key_struct * ssh_key ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>122 typedef struct ssh_scp_struct * ssh_scp ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>123 typedef struct ssh_session_struct * ssh_session ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>124 typedef struct ssh_string_struct * ssh_string ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>125 typedef struct ssh_event_struct * ssh_event ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>126 typedef struct ssh_connector_struct </span> <span style='color:#00c4c4; '>* ssh_connector ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>127 typedef void * ssh_gssapi_creds;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>128 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>129 / * Tipo de enchufe * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>130 #ifdef _WIN32</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>131 #ifndef socket_t</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>132 typedef SOCKET socket_t;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>133 #endif / * socket_t * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>134 #else / * _WIN32 * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>135 #ifndef socket_t</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>136 typedef int socket_t;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>137 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>138 #endif / * _WIN32 * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>139 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>140 #define SSH_INVALID_SOCKET ((socket_t) -1)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>141 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>142 / * las compensaciones de los métodos * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>143 enum ssh_kex_types_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>144 SSH_KEX = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>145 SSH_HOSTKEYS,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>146 SSH_CRYPT_C_S,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>147 SSH_CRYPT_S_C,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>148 SSH_MAC_C_S,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>149 SSH_MAC_S_C,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>150 SSH_COMP_C_S,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>151 SSH_COMP_S_C,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>152 SSH_LANG_C_S,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>153 SSH_LANG_S_C</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>154 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>155 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>156 #define SSH_CRYPT 2</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>157 #define SSH_MAC 3</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>158 #define SSH_COMP 4</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>159 #define SSH_LANG 5</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>160 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>161 enum ssh_auth_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>162 SSH_AUTH_SUCCESS = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>163 SSH_AUTH_DENIED,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>164 SSH_AUTH_PARTIAL,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>165 SSH_AUTH_INFO,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>166 SSH_AUTH_AGAIN,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>167 SSH_AUTH_ERROR = -1</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>168 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>169 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>170 / * banderas de autenticación * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>171 #define SSH_AUTH_METHOD_UNKNOWN 0</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>172 #define SSH_AUTH_METHOD_NONE 0x0001</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>173 #define SSH_AUTH_METHOD_PASSWORD 0x0002</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>174 #define SSH_AUTH_METHOD_PUBLICKEY 0x0004</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>175 #define SSH_AUTH_METHOD_HOSTBASED 0x0008</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>176 #define SSH_AUTH_METHOD_INTERACTIVE 0x0010</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>177 #define SSH_AUTH_METHOD_GSSAPI_MIC 0x0020</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>178 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>179 / * mensajes * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>180 enum ssh_requests_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>181 SSH_REQUEST_AUTH = 1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>182 SSH_REQUEST_CHANNEL_OPEN,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>183 SSH_REQUEST_CHANNEL,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>184 SSH_REQUEST_SERVICE,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>185 SSH_REQUEST_GLOBAL</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>186 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>187 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>188 enum ssh_channel_type_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>189 SSH_CHANNEL_UNKNOWN = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>190 SSH_CHANNEL_SESSION,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>191 SSH_CHANNEL_DIRECT_TCPIP,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>192 SSH_CHANNEL_FORWARDED_TCPIP,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>193 SSH_CHANNEL_X11,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>194 SSH_CHANNEL_AUTH_AGENT</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>195 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>196 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>197 enum ssh_channel_requests_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>198 SSH_CHANNEL_REQUEST_UNKNOWN = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>199 SSH_CHANNEL_REQUEST_PTY,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>200 SSH_CHANNEL_REQUEST_EXEC,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>201 SSH_CHANNEL_REQUEST_SHELL,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>202 SSH_CHANNEL_REQUEST_ENV,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>203 SSH_CHANNEL_REQUEST_SUBSYSTEM,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>204 SSH_CHANNEL_REQUEST_WINDOW_CHANGE,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>205 SSH_CHANNEL_REQUEST_X11</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>206 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>207 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>208 enum ssh_global_requests_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>209 SSH_GLOBAL_REQUEST_UNKNOWN = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>210 SSH_GLOBAL_REQUEST_TCPIP_FORWARD,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>211 SSH_GLOBAL_REQUEST_CANCEL_TCPIP_FORWARD,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>212 SSH_GLOBAL_REQUEST_KEEPALIVE</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>213 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>214 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>215 enum ssh_publickey_state_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>216 SSH_PUBLICKEY_STATE_ERROR = -1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>217 SSH_PUBLICKEY_STATE_NONE = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>218 SSH_PUBLICKEY_STATE_VALID = 1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>219 SSH_PUBLICKEY_STATE_WRONG = 2</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>220 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>221 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>222 / * Indicadores de estado * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>224 #define SSH_CLOSED 0x01</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>225 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>226 #define SSH_READ_PENDING 0x02</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>227 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>228 #define SSH_CLOSED_ERROR 0x04</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>229 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>230 #define SSH_WRITE_PENDING 0x08</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>231 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>232 enum ssh_server_known_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>233 SSH_SERVER_ERROR = -1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>234 SSH_SERVER_NOT_KNOWN = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>235 SSH_SERVER_KNOWN_OK,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>236 SSH_SERVER_KNOWN_CHANGED,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>237 SSH_SERVER_FOUND_OTHER,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>238 SSH_SERVER_FILE_NOT_FOUND</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>239 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>240 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>241 enum ssh_known_hosts_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>245 SSH_KNOWN_HOSTS_ERROR = -2,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>246 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>251 SSH_KNOWN_HOSTS_NOT_FOUND = -1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>252 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>257 SSH_KNOWN_HOSTS_UNKNOWN = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>258 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>262 SSH_KNOWN_HOSTS_OK,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>263 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>269 SSH_KNOWN_HOSTS_CHANGED,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>270 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>275 SSH_KNOWN_HOSTS_OTHER,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>276 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>277 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>278 #ifndef MD5_DIGEST_LEN</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>279 #define MD5_DIGEST_LEN 16</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>280 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>281 / * errores * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>282 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>283 enum ssh_error_types_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>284 SSH_NO_ERROR = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>285 SSH_REQUEST_DENIED,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>286 SSH_FATAL,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>287 SSH_EINTR</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>288 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>289 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>290 / * algunos tipos de claves * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>291 enum ssh_keytypes_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>292 SSH_KEYTYPE_UNKNOWN = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>293 SSH_KEYTYPE_DSS = 1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>294 SSH_KEYTYPE_RSA,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>295 SSH_KEYTYPE_RSA1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>296 SSH_KEYTYPE_ECDSA,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>297 SSH_KEYTYPE_ED25519,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>298 SSH_KEYTYPE_DSS_CERT01,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>299 SSH_KEYTYPE_RSA_CERT01</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>300 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>301 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>302 enum ssh_keycmp_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>303 SSH_KEY_CMP_PUBLIC = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>304 SSH_KEY_CMP_PRIVATE</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>305 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>306 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>307 #define SSH_ADDRSTRLEN 46</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>308 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>309 struct ssh_knownhosts_entry {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>310 char * nombre de host;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>311 char * sin analizar;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>312 ssh_key publickey;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>313 char * comentario;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>314 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>315 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>316 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>317 / * Códigos de retorno de error * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>318 #define SSH_OK 0 / * Sin error * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>319 #define SSH_ERROR -1 / </span> <span style='color:#00c4c4; '>* Error de algún tipo * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>320 #define SSH_AGAIN -2 / </span> <span style='color:#00c4c4; '>* La llamada sin bloqueo debe repetirse * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>321 #define SSH_EOF -127 / * Ya tenemos un eof * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>322 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>329 enum {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>332 SSH_LOG_NOLOG = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>335 SSH_LOG_WARNING ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>338 SSH_LOG_PROTOCOL ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>341 SSH_LOG_PACKET ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>344 SSH_LOG_FUNCTIONS</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>345 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>347 #define SSH_LOG_RARE SSH_LOG_WARNING</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>348 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>357 #define SSH_LOG_NONE 0</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>358 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>359 #define SSH_LOG_WARN 1</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>360 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>361 #define SSH_LOG_INFO 2</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>362 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>363 #define SSH_LOG_DEBUG 3</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>364 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>365 #define SSH_LOG_TRACE 4</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>366 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>369 enum ssh_options_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>370 SSH_OPTIONS_HOST,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>371 SSH_OPTIONS_PORT,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>372 SSH_OPTIONS_PORT_STR,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>373 SSH_OPTIONS_FD,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>374 SSH_OPTIONS_USER,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>375 SSH_OPTIONS_SSH_DIR,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>376 SSH_OPTIONS_IDENTITY,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>377 SSH_OPTIONS_ADD_IDENTITY,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>378 SSH_OPTIONS_KNOWNHOSTS,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>379 SSH_OPTIONS_TIMEOUT,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>380 SSH_OPTIONS_TIMEOUT_USEC,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>381 SSH_OPTIONS_SSH1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>382 SSH_OPTIONS_SSH2,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>383 SSH_OPTIONS_LOG_VERBOSITY,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>384 SSH_OPTIONS_LOG_VERBOSITY_STR,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>385 SSH_OPTIONS_CIPHERS_C_S,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>386 SSH_OPTIONS_CIPHERS_S_C,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>387 SSH_OPTIONS_COMPRESSION_C_S,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>388 SSH_OPTIONS_COMPRESSION_S_C,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>389 SSH_OPTIONS_PROXYCOMMAND,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>390 SSH_OPTIONS_BINDADDR,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>391 SSH_OPTIONS_STRICTHOSTKEYCHECK,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>392 SSH_OPTIONS_COMPRESSION,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>393 SSH_OPTIONS_COMPRESSION_LEVEL,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>394 SSH_OPTIONS_KEY_EXCHANGE,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>395 SSH_OPTIONS_HOSTKEYS,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>396 SSH_OPTIONS_GSSAPI_SERVER_IDENTITY,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>397 SSH_OPTIONS_GSSAPI_CLIENT_IDENTITY,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>398 SSH_OPTIONS_GSSAPI_DELEGATE_CREDENTIALS,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>399 SSH_OPTIONS_HMAC_C_S,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>400 SSH_OPTIONS_HMAC_S_C,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>401 SSH_OPTIONS_PASSWORD_AUTH,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>402 SSH_OPTIONS_PUBKEY_AUTH,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>403 SSH_OPTIONS_KBDINT_AUTH,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>404 SSH_OPTIONS_GSSAPI_AUTH,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>405 SSH_OPTIONS_GLOBAL_KNOWNHOSTS,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>406 SSH_OPTIONS_NODELAY,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>407 SSH_OPTIONS_PUBLICKEY_ACCEPTED_TYPES,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>408 SSH_OPTIONS_PROCESS_CONFIG,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>409 SSH_OPTIONS_REKEY_DATA,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>410 SSH_OPTIONS_REKEY_TIME,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>411 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>412 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>413 enum {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>415 SSH_SCP_WRITE,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>417 SSH_SCP_READ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>418 SSH_SCP_RECURSIVE = 0x10</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>419 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>420 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>421 enum ssh_scp_request_types {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>423 SSH_SCP_REQUEST_NEWDIR = 1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>425 SSH_SCP_REQUEST_NEWFILE,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>427 SSH_SCP_REQUEST_EOF,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>429 SSH_SCP_REQUEST_ENDDIR,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>431 SSH_SCP_REQUEST_WARNING</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>432 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>433 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>434 enum ssh_connector_flags_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>436 SSH_CONNECTOR_STDOUT = 1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>438 SSH_CONNECTOR_STDERR = 2,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>440 SSH_CONNECTOR_BOTH = 3</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>441 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>442 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>443 LIBSSH_API int ssh_blocking_flush </span> <span style='color:#00c4c4; '>( sesión ssh_session , int timeout);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>444 LIBSSH_API ssh_channel ssh_channel_accept_x11 </span> <span style='color:#00c4c4; '>( canal ssh_channel , int timeout_ms);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>445 LIBSSH_API int ssh_channel_change_pty_size </span> <span style='color:#00c4c4; '>( canal ssh_channel , int cols, int filas);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>446 LIBSSH_API int ssh_channel_close </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>447 LIBSSH_API void ssh_channel_free </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>448 LIBSSH_API int ssh_channel_get_exit_status </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>449 LIBSSH_API ssh_session ssh_channel_get_session </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>450 LIBSSH_API int ssh_channel_is_closed </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>451 LIBSSH_API int ssh_channel_is_eof </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>452 LIBSSH_API int ssh_channel_is_open </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>453 LIBSSH_API ssh_channel ssh_channel_new </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>454 LIBSSH_API int ssh_channel_open_auth_agent </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>455 LIBSSH_API int ssh_channel_open_forward </span> <span style='color:#00c4c4; '>( canal ssh_channel , const char * host remoto,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>456 int puerto remoto, const char </span> <span style='color:#00c4c4; '>* sourcehost, int localport);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>457 LIBSSH_API int ssh_channel_open_session </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>458 LIBSSH_API int ssh_channel_open_x11 </span> <span style='color:#00c4c4; '>( canal ssh_channel , const char * orig_addr, </span> <span style='color:#00c4c4; '>int orig_port);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>459 LIBSSH_API int ssh_channel_poll </span> <span style='color:#00c4c4; '>( canal ssh_channel , int is_stderr);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>460 LIBSSH_API int ssh_channel_poll_timeout </span> <span style='color:#00c4c4; '>( canal ssh_channel , int timeout, int is_stderr);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>461 LIBSSH_API int ssh_channel_read </span> <span style='color:#00c4c4; '>( canal ssh_channel , void * dest, uint32_t </span> <span style='color:#00c4c4; '>count, int is_stderr);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>462 LIBSSH_API int ssh_channel_read_timeout </span> <span style='color:#00c4c4; '>( ssh_channel channel, void * dest, </span> <span style='color:#00c4c4; '>uint32_t count, int is_stderr, int timeout_ms);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>463 LIBSSH_API int ssh_channel_read_nonblocking </span> <span style='color:#00c4c4; '>( canal ssh_channel , void * dest, uint32_t count,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>464 int is_stderr);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>465 LIBSSH_API int ssh_channel_request_env </span> <span style='color:#00c4c4; '>( canal ssh_channel , const char * nombre, const char </span> <span style='color:#00c4c4; '>* valor);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>466 LIBSSH_API int ssh_channel_request_exec </span> <span style='color:#00c4c4; '>( canal ssh_channel , const char * cmd);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>467 LIBSSH_API int ssh_channel_request_pty </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>468 LIBSSH_API int ssh_channel_request_pty_size </span> <span style='color:#00c4c4; '>( canal ssh_channel , const char * term,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>469 int cols, int filas);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>470 LIBSSH_API int ssh_channel_request_shell </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>471 LIBSSH_API int ssh_channel_request_send_signal </span> <span style='color:#00c4c4; '>( canal ssh_channel , const char * signum);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>472 LIBSSH_API int ssh_channel_request_send_break </span> <span style='color:#00c4c4; '>( ssh_channel canal, longitud uint32_t);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>473 LIBSSH_API int ssh_channel_request_sftp </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>474 LIBSSH_API int ssh_channel_request_subsystem </span> <span style='color:#00c4c4; '>( canal ssh_channel , const char * subsistema);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>475 LIBSSH_API int ssh_channel_request_x11 </span> <span style='color:#00c4c4; '>( canal ssh_channel , int single_connection, </span> <span style='color:#00c4c4; '>const char * protocolo,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>476 const char * cookie, int número_pantalla);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>477 LIBSSH_API int ssh_channel_request_auth_agent </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>478 LIBSSH_API int ssh_channel_send_eof </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>479 LIBSSH_API int ssh_channel_select </span> <span style='color:#00c4c4; '>( ssh_channel * readchans, ssh_channel * </span> <span style='color:#00c4c4; '>writechans, ssh_channel * exceptchans, struct</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>480 timeval * tiempo de espera);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>481 LIBSSH_API void ssh_channel_set_blocking </span> <span style='color:#00c4c4; '>( canal ssh_channel , bloqueo int );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>482 LIBSSH_API void ssh_channel_set_counter </span> <span style='color:#00c4c4; '>( canal ssh_channel ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>483 contador ssh_counter );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>484 LIBSSH_API int ssh_channel_write </span> <span style='color:#00c4c4; '>( canal ssh_channel , const void * datos, uint32_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>485 LIBSSH_API int ssh_channel_write_stderr </span> <span style='color:#00c4c4; '>( canal ssh_channel ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>486 const void * datos,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>487 uint32_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>488 LIBSSH_API uint32_t ssh_channel_window_size </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>489 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>490 LIBSSH_API char * ssh_basename </span> <span style='color:#00c4c4; '>( const char * ruta);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>491 LIBSSH_API void ssh_clean_pubkey_hash (</span> <span style='color:#00c4c4; '> carácter sin firmar ** hash);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>492 LIBSSH_API int ssh_connect ( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>493 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>494 LIBSSH_API ssh_connector ssh_connector_new </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>495 LIBSSH_API void ssh_connector_free </span> <span style='color:#00c4c4; '>( conector ssh_connector );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>496 LIBSSH_API int ssh_connector_set_in_channel </span> <span style='color:#00c4c4; '>( conector ssh_connector ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>497 canal ssh_channel ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>498 enum ssh_connector_flags_e banderas);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>499 LIBSSH_API int ssh_connector_set_out_channel </span> <span style='color:#00c4c4; '>( conector ssh_connector ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>500 canal ssh_channel ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>501 enum ssh_connector_flags_e flags);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>502 LIBSSH_API void ssh_connector_set_in_fd </span> <span style='color:#00c4c4; '>( ssh_connector conector, fd socket_t);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>503 LIBSSH_API vacío ssh_connector_set_out_fd </span> <span style='color:#00c4c4; '>( ssh_connector conector, fd socket_t);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>504 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>505 LIBSSH_API const char * ssh_copyright ( void );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>506 LIBSSH_API void ssh_disconnect </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>507 LIBSSH_API char * ssh_dirname ( const char * ruta);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>508 LIBSSH_API int ssh_finalize ( void );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>509 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>510 / * REENVÍO DE PUERTO INVERSO * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>511 LIBSSH_API ssh_channel ssh_channel_accept_forward </span> <span style='color:#00c4c4; '>( sesión ssh_session ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>512 int timeout_ms,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>513 int * puerto_destino);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>514 LIBSSH_API int ssh_channel_cancel_forward </span> <span style='color:#00c4c4; '>( sesión ssh_session ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>515 const char * dirección,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>516 int puerto);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>517 LIBSSH_API int ssh_channel_listen_forward </span> <span style='color:#00c4c4; '>( sesión ssh_session ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>518 const char * dirección,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>519 puerto internacional ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>520 int * puerto_delimitado);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>521 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>522 LIBSSH_API void ssh_free ( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>523 LIBSSH_API const char * ssh_get_disconnect_message </span> <span style='color:#00c4c4; '> ( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>524 LIBSSH_API const char * ssh_get_error </span> <span style='color:#00c4c4; '>( void * error);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>525 LIBSSH_API int ssh_get_error_code </span> <span style='color:#00c4c4; '>( void * error);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>526 LIBSSH_API socket_t ssh_get_fd </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>527 LIBSSH_API char * ssh_get_hexa </span> <span style='color:#00c4c4; '>( const unsigned char * what, size_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>528 LIBSSH_API char * ssh_get_issue_banner </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>529 LIBSSH_API int ssh_get_openssh_version </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>530 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>531 LIBSSH_API int ssh_get_server_publickey </span> <span style='color:#00c4c4; '>( ssh_session sesión, clave ssh tecla *);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>532 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>533 enum ssh_publickey_hash_type {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>534 SSH_PUBLICKEY_HASH_SHA1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>535 SSH_PUBLICKEY_HASH_MD5,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>536 SSH_PUBLICKEY_HASH_SHA256</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>537 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>538 LIBSSH_API int ssh_get_publickey_hash </span> <span style='color:#00c4c4; '>( clave const ssh_key ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>539 enum ssh_publickey_hash_type type,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>540 char ** hash sin firmar ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>541 size_t * HLEN);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>542 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>543 / * FUNCIONES ANULADAS * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>544 SSH_DEPRECATED LIBSSH_API int ssh_get_pubkey_hash </span> <span style='color:#00c4c4; '>( sesión ssh_session , carácter sin firmar ** hash);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>545 SSH_DEPRECATED LIBSSH_API ssh_channel </span> <span style='color:#00c4c4; '>ssh_forward_accept ( sesión ssh_session , int timeout_ms);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>546 SSH_DEPRECATED LIBSSH_API int ssh_forward_cancel </span> <span style='color:#00c4c4; '>( sesión ssh_session , const char * dirección, int puerto);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>547 SSH_DEPRECATED LIBSSH_API int ssh_forward_listen </span> <span style='color:#00c4c4; '>( sesión ssh_session , const char * dirección, int puerto, int * bound_port);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>548 SSH_DEPRECATED LIBSSH_API int ssh_get_publickey </span> <span style='color:#00c4c4; '>( ssh_session sesión, clave ssh tecla *);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>549 SSH_DEPRECATED LIBSSH_API int ssh_write_knownhost </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>550 SSH_DEPRECATED LIBSSH_API char * ssh_dump_knownhost </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>551 SSH_DEPRECATED LIBSSH_API int ssh_is_server_known </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>552 SSH_DEPRECATED LIBSSH_API void ssh_print_hexa ( const char * descr, const unsigned char * what, size_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>553 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>554 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>555 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>556 LIBSSH_API int ssh_get_random </span> <span style='color:#00c4c4; '>( void * donde, int len, int fuerte);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>557 LIBSSH_API int ssh_get_version </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>558 LIBSSH_API int ssh_get_status </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>559 LIBSSH_API int ssh_get_poll_flags </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>560 LIBSSH_API int ssh_init ( vacío );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>561 LIBSSH_API int ssh_is_blocking </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>562 LIBSSH_API int ssh_is_connected </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>563 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>564 / * HOSTS CONOCIDOS * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>565 LIBSSH_API void ssh_knownhosts_entry_free </span> <span style='color:#00c4c4; '>( struct ssh_knownhosts_entry * entrada);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>566 #define SSH_KNOWNHOSTS_ENTRY_FREE (e) do {\</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>567 si ((e)! = NULO) {\</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>568 ssh_knownhosts_entry_free (e); \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>569 e = NULO; \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>570 } \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>571 } mientras (0)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>572 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>573 LIBSSH_API int ssh_known_hosts_parse_line </span> <span style='color:#00c4c4; '>( const char * host,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>574 const char * línea,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>575 entrada struct ssh_knownhosts_entry **);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>576 LIBSSH_API enumeración ssh_known_hosts_e </span> <span style='color:#00c4c4; '>ssh_session_has_known_hosts_entry ( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>577 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>578 LIBSSH_API int ssh_session_export_known_hosts_entry </span> <span style='color:#00c4c4; '>( sesión ssh_session ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>579 Char ** pentry_string);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>580 LIBSSH_API int ssh_session_update_known_hosts </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>581 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>582 LIBSSH_API enumeración ssh_known_hosts_e</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>583 ssh_session_get_known_hosts_entry </span> <span style='color:#00c4c4; '>( sesión ssh_session ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>584 struct ssh_knownhosts_entry ** pentry);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>585 LIBSSH_API enumeración ssh_known_hosts_e </span> <span style='color:#00c4c4; '>ssh_session_is_known_server ( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>586 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>587 / * REGISTRO * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>588 LIBSSH_API int ssh_set_log_level ( nivel int );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>589 LIBSSH_API int ssh_get_log_level ( void );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>590 LIBSSH_API void * ssh_get_log_userdata ( void );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>591 LIBSSH_API int ssh_set_log_userdata ( void * datos);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>592 LIBSSH_API void _ssh_log ( int verbosidad,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>593 const char * función ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>594 const char * formato, ...) PRINTF_ATTRIBUTE (3, 4);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>595 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>596 / * legado * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>597 SSH_DEPRECATED LIBSSH_API void ssh_log </span> <span style='color:#00c4c4; '>( sesión ssh_session ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>598 int prioridad,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>599 const char * formato, ...) PRINTF_ATTRIBUTE (3, 4);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>600 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>601 LIBSSH_API ssh_channel ssh_message_channel_request_open_reply_accept </span> <span style='color:#00c4c4; '>( ssh_message msg);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>602 LIBSSH_API int ssh_message_channel_request_reply_success </span> <span style='color:#00c4c4; '>( ssh_message msg);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>603 #define SSH_MESSAGE_FREE (x) \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>604 hacer {if ((x)! = NULL) {ssh_message_free (x); (x) = NULO; }} mientras (0)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>605 LIBSSH_API void ssh_message_free ( ssh_message msg);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>606 LIBSSH_API ssh_message ssh_message_get ( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>607 LIBSSH_API int ssh_message_subtype ( ssh_message msg);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>608 LIBSSH_API int ssh_message_type ( ssh_message msg);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>609 LIBSSH_API int ssh_mkdir ( const char * nombre de ruta, modo_t);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>610 LIBSSH_API ssh_session ssh_new(void);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>611 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>612 LIBSSH_API int ssh_options_copy(ssh_session src, ssh_session *dest);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>613 LIBSSH_API int ssh_options_getopt(ssh_session session, int *argcptr, char **argv);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>614 LIBSSH_API int ssh_options_parse_config(ssh_session session, const char *filename);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>615 LIBSSH_API int ssh_options_set(ssh_session session, enum ssh_options_e type,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>616 const void *value);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>617 LIBSSH_API int ssh_options_get(ssh_session session, enum ssh_options_e type,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>618 char **value);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>619 LIBSSH_API int ssh_options_get_port(ssh_session session, unsigned int * port_target);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>620 LIBSSH_API int ssh_pcap_file_close(ssh_pcap_file pcap);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>621 LIBSSH_API void ssh_pcap_file_free(ssh_pcap_file pcap);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>622 LIBSSH_API ssh_pcap_file ssh_pcap_file_new(void);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>623 LIBSSH_API int ssh_pcap_file_open(ssh_pcap_file pcap, const char *filename);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>624 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>638 typedef int (*ssh_auth_callback) (const char *prompt, char *buf, size_t len,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>639 int echo, int verify, void *userdata);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>640 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>641 LIBSSH_API ssh_key ssh_key_new(void);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>642 #define SSH_KEY_FREE(x) \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>643 do { if ((x) != NULL) { ssh_key_free(x); x = NULL; } } while(0)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>644 LIBSSH_API void ssh_key_free (ssh_key key);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>645 LIBSSH_API enum ssh_keytypes_e ssh_key_type(const ssh_key key);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>646 LIBSSH_API const char *ssh_key_type_to_char(enum ssh_keytypes_e type);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>647 LIBSSH_API enum ssh_keytypes_e ssh_key_type_from_name(const char *name);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>648 LIBSSH_API int ssh_key_is_public(const ssh_key k);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>649 LIBSSH_API int ssh_key_is_private(const ssh_key k);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>650 LIBSSH_API int ssh_key_cmp(const ssh_key k1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>651 const ssh_key k2,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>652 enum ssh_keycmp_e what);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>653 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>654 LIBSSH_API int ssh_pki_generate(enum ssh_keytypes_e type, int parameter,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>655 ssh_key *pkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>656 LIBSSH_API int ssh_pki_import_privkey_base64(const char *b64_key,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>657 const char *passphrase,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>658 ssh_auth_callback auth_fn,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>659 void *auth_data,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>660 ssh_key *pkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>661 LIBSSH_API int ssh_pki_export_privkey_base64(const ssh_key privkey,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>662 const char *passphrase,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>663 ssh_auth_callback auth_fn,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>664 void *auth_data,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>665 char **b64_key);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>666 LIBSSH_API int ssh_pki_import_privkey_file(const char *filename,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>667 const char *passphrase,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>668 ssh_auth_callback auth_fn,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>669 void *auth_data,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>670 ssh_key *pkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>671 LIBSSH_API int ssh_pki_export_privkey_file(const ssh_key privkey,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>672 const char *passphrase,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>673 ssh_auth_callback auth_fn,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>674 void *auth_data,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>675 const char *filename);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>676 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>677 LIBSSH_API int ssh_pki_copy_cert_to_privkey(const ssh_key cert_key,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>678 ssh_key privkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>679 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>680 LIBSSH_API int ssh_pki_import_pubkey_base64(const char *b64_key,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>681 enum ssh_keytypes_e type,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>682 ssh_key *pkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>683 LIBSSH_API int ssh_pki_import_pubkey_file(const char *filename,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>684 ssh_key *pkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>685 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>686 LIBSSH_API int ssh_pki_import_cert_base64(const char *b64_cert,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>687 enum ssh_keytypes_e type,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>688 ssh_key *pkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>689 LIBSSH_API int ssh_pki_import_cert_file(const char *filename,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>690 ssh_key *pkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>691 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>692 LIBSSH_API int ssh_pki_export_privkey_to_pubkey(const ssh_key privkey,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>693 ssh_key *pkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>694 LIBSSH_API int ssh_pki_export_pubkey_base64(const ssh_key key,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>695 char **b64_key);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>696 LIBSSH_API int ssh_pki_export_pubkey_file(const ssh_key key,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>697 const char *filename);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>698 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>699 LIBSSH_API const char *ssh_pki_key_ecdsa_name(const ssh_key key);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>700 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>701 LIBSSH_API char *ssh_get_fingerprint_hash(enum ssh_publickey_hash_type type,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>702 unsigned char *hash,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>703 size_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>704 LIBSSH_API void ssh_print_hash</span> <span style='color:#00c4c4; '>(enum ssh_publickey_hash_type type, unsigned char *hash, size_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>705 LIBSSH_API int ssh_send_ignore (ssh_session session, const char *data);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>706 LIBSSH_API int ssh_send_debug (ssh_session session, const char *message, int always_display);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>707 LIBSSH_API void ssh_gssapi_set_creds(ssh_session session, const ssh_gssapi_creds creds);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>708 LIBSSH_API int ssh_scp_accept_request(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>709 LIBSSH_API int ssh_scp_close(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>710 LIBSSH_API int ssh_scp_deny_request(ssh_scp scp, const char *reason);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>711 LIBSSH_API void ssh_scp_free(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>712 LIBSSH_API int ssh_scp_init(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>713 LIBSSH_API int ssh_scp_leave_directory(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>714 LIBSSH_API ssh_scp ssh_scp_new(ssh_session session, int mode, const char *location);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>715 LIBSSH_API int ssh_scp_pull_request(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>716 LIBSSH_API int ssh_scp_push_directory(ssh_scp scp, const char *dirname, int mode);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>717 LIBSSH_API int ssh_scp_push_file(ssh_scp scp, const char *filename, size_t size, int perms);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>718 LIBSSH_API int ssh_scp_push_file64(ssh_scp scp, const char *filename, uint64_t size, int perms);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>719 LIBSSH_API int ssh_scp_read(ssh_scp scp, void *buffer, size_t size);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>720 LIBSSH_API const char *ssh_scp_request_get_filename(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>721 LIBSSH_API int ssh_scp_request_get_permissions(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>722 LIBSSH_API size_t ssh_scp_request_get_size(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>723 LIBSSH_API uint64_t ssh_scp_request_get_size64(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>724 LIBSSH_API const char *ssh_scp_request_get_warning(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>725 LIBSSH_API int ssh_scp_write(ssh_scp scp, const void *buffer, size_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>726 LIBSSH_API int ssh_select(ssh_channel *channels, ssh_channel *outchannels, socket_t maxfd,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>727 fd_set *readfds, struct timeval *timeout);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>728 LIBSSH_API int ssh_service_request(ssh_session session, const char *service);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>729 LIBSSH_API int ssh_set_agent_channel(ssh_session session, ssh_channel channel);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>730 LIBSSH_API int ssh_set_agent_socket(ssh_session session, socket_t fd);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>731 LIBSSH_API void ssh_set_blocking(ssh_session session, int blocking);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>732 LIBSSH_API void ssh_set_counters(ssh_session session, ssh_counter scounter,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>733 ssh_counter rcounter);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>734 LIBSSH_API void ssh_set_fd_except(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>735 LIBSSH_API void ssh_set_fd_toread(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>736 LIBSSH_API void ssh_set_fd_towrite(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>737 LIBSSH_API void ssh_silent_disconnect(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>738 LIBSSH_API int ssh_set_pcap_file(ssh_session session, ssh_pcap_file pcapfile);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>739 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>740 /* USERAUTH */</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>741 LIBSSH_API int ssh_userauth_none(ssh_session session, const char *username);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>742 LIBSSH_API int ssh_userauth_list(ssh_session session, const char *username);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>743 LIBSSH_API int ssh_userauth_try_publickey(ssh_session session,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>744 const char *username,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>745 const ssh_key pubkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>746 LIBSSH_API int ssh_userauth_publickey(ssh_session session,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>747 const char *username,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>748 const ssh_key privkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>749 #ifndef _WIN32</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>750 LIBSSH_API int ssh_userauth_agent(ssh_session session,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>751 const char *username);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>752 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>753 LIBSSH_API int ssh_userauth_publickey_auto(ssh_session session,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>754 const char *username,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>755 const char *passphrase);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>756 LIBSSH_API int ssh_userauth_password(ssh_session session,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>757 const char *username,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>758 const char *password);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>759 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>760 LIBSSH_API int ssh_userauth_kbdint(ssh_session session, const char *user, const char *submethods);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>761 LIBSSH_API const char *ssh_userauth_kbdint_getinstruction(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>762 LIBSSH_API const char *ssh_userauth_kbdint_getname(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>763 LIBSSH_API int ssh_userauth_kbdint_getnprompts(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>764 LIBSSH_API const char *ssh_userauth_kbdint_getprompt(ssh_session session, unsigned int i, char *echo);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>765 LIBSSH_API int ssh_userauth_kbdint_getnanswers(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>766 LIBSSH_API const char *ssh_userauth_kbdint_getanswer(ssh_session session, unsigned int i);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>767 LIBSSH_API int ssh_userauth_kbdint_setanswer(ssh_session session, unsigned int i,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>768 const char *answer);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>769 LIBSSH_API int ssh_userauth_gssapi(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>770 LIBSSH_API const char *ssh_version(int req_version);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>771 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>772 LIBSSH_API void ssh_string_burn(ssh_string str);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>773 LIBSSH_API ssh_string ssh_string_copy(ssh_string str);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>774 LIBSSH_API void *ssh_string_data(ssh_string str);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>775 LIBSSH_API int ssh_string_fill(ssh_string str, const void *data, size_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>776 #define SSH_STRING_FREE(x) \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>777 do { if ((x) != NULL) { ssh_string_free(x); x = NULL; } } while(0)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>778 LIBSSH_API void ssh_string_free(ssh_string str);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>779 LIBSSH_API ssh_string ssh_string_from_char(const char *what);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>780 LIBSSH_API size_t ssh_string_len(ssh_string str);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>781 LIBSSH_API ssh_string ssh_string_new(size_t size);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>782 LIBSSH_API const char *ssh_string_get_char(ssh_string str);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>783 LIBSSH_API char *ssh_string_to_char(ssh_string str);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>784 #define SSH_STRING_FREE_CHAR(x) \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>785 do { if ((x) != NULL) { ssh_string_free_char(x); x = NULL; } } while(0)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>786 LIBSSH_API void ssh_string_free_char(char *s);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>787 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>788 LIBSSH_API int ssh_getpass(const char *prompt, char *buf, size_t len, int echo,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>789 int verify);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>790 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>791 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>792 typedef int (*ssh_event_callback)(socket_t fd, int revents, void *userdata);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>793 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>794 LIBSSH_API ssh_event ssh_event_new(void);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>795 LIBSSH_API int ssh_event_add_fd(ssh_event event, socket_t fd, short events,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>796 ssh_event_callback cb, void *userdata);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>797 LIBSSH_API int ssh_event_add_session(ssh_event event, ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>798 LIBSSH_API int ssh_event_add_connector(ssh_event event, ssh_connector connector);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>799 LIBSSH_API int ssh_event_dopoll(ssh_event event, int timeout);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>800 LIBSSH_API int ssh_event_remove_fd(ssh_event event, socket_t fd);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>801 LIBSSH_API int ssh_event_remove_session(ssh_event event, ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>802 LIBSSH_API int ssh_event_remove_connector(ssh_event event, ssh_connector connector);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>803 LIBSSH_API void ssh_event_free(ssh_event event);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>804 LIBSSH_API const char* ssh_get_clientbanner(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>805 LIBSSH_API const char* ssh_get_serverbanner(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>806 LIBSSH_API const char* ssh_get_kex_algo(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>807 LIBSSH_API const char* ssh_get_cipher_in(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>808 LIBSSH_API const char* ssh_get_cipher_out(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>809 LIBSSH_API const char* ssh_get_hmac_in(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>810 LIBSSH_API const char* ssh_get_hmac_out(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>811 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>812 LIBSSH_API ssh_buffer ssh_buffer_new(void);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>813 LIBSSH_API void ssh_buffer_free(ssh_buffer buffer);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>814 #define SSH_BUFFER_FREE(x) \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>815 do { if ((x) != NULL) { ssh_buffer_free(x); x = NULL; } } while(0)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>816 LIBSSH_API int ssh_buffer_reinit(ssh_buffer buffer);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>817 LIBSSH_API int ssh_buffer_add_data(ssh_buffer buffer, const void *data, uint32_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>818 LIBSSH_API uint32_t ssh_buffer_get_data(ssh_buffer buffer, void *data, uint32_t requestedlen);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>819 LIBSSH_API void *ssh_buffer_get(ssh_buffer buffer);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>820 LIBSSH_API uint32_t ssh_buffer_get_len(ssh_buffer buffer);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>821 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>822 #ifndef LIBSSH_LEGACY_0_4</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>823 #include </span><span style='color:#02d045; '>"</span>libssh<span style='color:#d2cd86; '>/</span>legacy<span style='color:#d2cd86; '>.</span>h<span style='color:#02d045; '>"</span><span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>824 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>825 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>826 #ifdef __cplusplus</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>827 }</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>828 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>829 #endif /* _LIBSSH_H */</small></span> <span style='color:#00c4c4; '>    </span> <span style='color:#00c4c4; '>    </body></span> <span style='color:#00c4c4; '></html></span> <span style='color:#00c4c4; '><!-- Juan Angel Luzardo Muslera / montevideo Uruguay --></span> </pre> <!--Created using ToHtml.com on 2020-08-26 03:46:37 UTC --> <h2 id="fly">White flag Juan Angel / Montevideo Uruguay</h2> <script type="text/javascript"> message = document.getElementById("fly").innerHTML; distance = 50; speed = 200; var txt="", num=0, num4=0, flyofle="", flyofwi="", flyofto="", fly=document.getElementById("fly"); function stfly() { for(i=0;i != message.length;i++) { if(message.charAt(i) != "$") txt += "<span style='position:relative;visibility:hidden;' id='n"+i+"'>"+message.charAt(i)+"<\/span>"; else txt += "<br>"; } fly.innerHTML = txt; txt = ""; flyofle = fly.offsetLeft; flyofwi = fly.offsetWidth; flyofto = fly.offsetTop; fly2b(); } function fly2b() { if(num4 != message.length) { if(message.charAt(num4) != "$") { var then = document.getElementById("n" + num4); then.style.left = flyofle - then.offsetLeft + flyofwi / 2 + 'px'; then.style.top = flyofto - then.offsetTop + distance + 'px'; fly3(then.id, parseInt(then.style.left), parseInt(then.style.left) / 5, parseInt(then.style.top), parseInt(then.style.top) / 5); } num4++; setTimeout("fly2b()", speed); } } function fly3(target,lef2,num2,top2,num3) { if((Math.floor(top2) != 0 && Math.floor(top2) != -1) || (Math.floor(lef2) != 0 && Math.floor(lef2) != -1)) { if(lef2 >= 0) lef2 -= num2; else lef2 += num2 * -1; if(Math.floor(lef2) != -1) { document.getElementById(target).style.visibility = "visible"; document.getElementById(target).style.left = Math.floor(lef2) + 'px'; } else { document.getElementById(target).style.visibility = "visible"; document.getElementById(target).style.left = Math.floor(lef2 + 1) + 'px'; } if(lef2 >= 0) top2 -= num3 else top2 += num3 * -1; if(Math.floor(top2) != -1) document.getElementById(target).style.top = Math.floor(top2) + 'px'; else document.getElementById(target).style.top = Math.floor(top2 + 1) + 'px'; setTimeout("fly3('"+target+"',"+lef2+","+num2+","+top2+","+num3+")",50) } } stfly() </script> <h2>LIBRARY SSH</h2> <strong><h1>libssh 0.8.90</h1></strong><br /> <p> <button><li>La biblioteca SSH</li></button> <button><i>PAGINA PRINCIPAL</li></button> <button><li>PÁGINAS RELACIONADAS</li></button> <button><li>M�"DULOS</li></button> <button><li>ESTRUCTURAS DE DATOS</li></button> <button><li>ARCHIVOS</li></button> </p> <ul> <button><h3> incluir </h3></button> <button><h3> libssh </h3></button> <button><h3> libssh.h </h3></button> <br /> </ul> <small>Esta biblioteca es software gratuito; puedes redistribuirlo y / o 7 * modificarlo según los términos del GNU Lesser General Public 8 * Licencia publicada por la Free Software Foundation; ya sea 9 * versión 2.1 de la Licencia, o (a su elección) cualquier versión posterior. 10 * 11 * Esta biblioteca se distribuye con la esperanza de que sea útil, 12 * pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de 21 #ifndef _LIBSSH_H 22 #define _LIBSSH_H 23 24 #si está definido _WIN32 || definido __CYGWIN__ 25 #ifdef LIBSSH_STATIC 26 #define LIBSSH_API 27 #más 28 #ifdef LIBSSH_EXPORTS 29 #ifdef __GNUC__ 30 #define LIBSSH_API __attribute __ ((dllexport)) 31 #más 32 #define LIBSSH_API __declspec (dllexport) 33 #endif 34 #más 35 #ifdef __GNUC__ 36 #define LIBSSH_API __attribute __ ((dllimport)) 37 #más 38 #define LIBSSH_API __declspec (dllimport) 39 #endif 40 #endif 41 #endif 42 #más 43 #if __GNUC__> = 4 &&! Definido (__ OS2__) 44 #define LIBSSH_API __attribute __ ((visibilidad ("predeterminado"))) 45 #más 46 #define LIBSSH_API 47 #endif 48 #endif 49 50 #ifdef _MSC_VER 51 / * Visual Studio no tiene inttypes.h así que no conoce uint32_t * / 52 typedef int int32_t; 53 typedef unsigned int uint32_t; 54 typedef unsigned short uint16_t; 55 typedef unsigned char uint8_t; 56 typedef unsigned long long uint64_t; 57 typedef int mode_t; 58 #else / * _MSC_VER * / 59 #include <unistd.h> 60 #include <inttypes.h> 61 #include <sys / types.h> 62 #endif / * _MSC_VER * / 63 64 #ifdef _WIN32 65 #include <winsock2.h> 66 #else / * _WIN32 * / 67 #include <sys / select.h> / * para fd_set * * / 68 #include <netdb.h> 69 #endif / * _WIN32 * / 70 71 #define SSH_STRINGIFY (s) SSH_TOSTRING (s) 72 #define SSH_TOSTRING (s) #s 73 74 / * macros de versión libssh * / 75 #define SSH_VERSION_INT (a, b, c) ((a) << 16 | (b) << 8 | (c)) 76 #define SSH_VERSION_DOT (a, b, c) a ##. ## b ##. ## c 77 #define SSH_VERSION (a, b, c) SSH_VERSION_DOT (a, b, c) 78 79 / * versión libssh * / 80 #define LIBSSH_VERSION_MAJOR 0 81 #define LIBSSH_VERSION_MINOR 8 82 #define LIBSSH_VERSION_MICRO 90 83 84 #define LIBSSH_VERSION_INT SSH_VERSION_INT (LIBSSH_VERSION_MAJOR, \ 85 LIBSSH_VERSION_MINOR, \ 86 LIBSSH_VERSION_MICRO) 87 #define LIBSSH_VERSION SSH_VERSION (LIBSSH_VERSION_MAJOR, \ 88 LIBSSH_VERSION_MINOR, \ 89 LIBSSH_VERSION_MICRO) 90 91 / * GCC tiene verificación de atributo de tipo printf. * / 92 #ifdef __GNUC__ 93 #define PRINTF_ATTRIBUTE (a, b) __attribute__ ((__format__ (__printf__, a, b))) 94 #más 95 #define PRINTF_ATTRIBUTE (a, b) 96 #endif / * __GNUC__ * / 97 98 #ifdef __GNUC__ 99 #define SSH_DEPRECATED __attribute__ ((obsoleto)) 100 #más 101 #define SSH_DEPRECATED 102 #endif 103 104 #ifdef __cplusplus 105 externa "C" { 106 #endif 107 108 struct ssh_counter_struct { 109 uint64_t in_bytes; 110 uint64_t out_bytes; 111 uint64_t in_packets; 112 uint64_t out_packets; 113 }; 114 typedef struct ssh_counter_struct * ssh_counter ; 115 116 typedef struct ssh_agent_struct * ssh_agent ; 117 typedef struct ssh_buffer_struct * ssh_buffer ; 118 typedef struct ssh_channel_struct * ssh_channel ; 119 typedef struct ssh_message_struct * ssh_message ; 120 typedef struct ssh_pcap_file_struct * ssh_pcap_file; 121 typedef struct ssh_key_struct * ssh_key ; 122 typedef struct ssh_scp_struct * ssh_scp ; 123 typedef struct ssh_session_struct * ssh_session ; 124 typedef struct ssh_string_struct * ssh_string ; 125 typedef struct ssh_event_struct * ssh_event ; 126 typedef struct ssh_connector_struct * ssh_connector ; 127 typedef void * ssh_gssapi_creds; 128 129 / * Tipo de enchufe * / 130 #ifdef _WIN32 131 #ifndef socket_t 132 typedef SOCKET socket_t; 133 #endif / * socket_t * / 134 #else / * _WIN32 * / 135 #ifndef socket_t 136 typedef int socket_t; 137 #endif 138 #endif / * _WIN32 * / 139 140 #define SSH_INVALID_SOCKET ((socket_t) -1) 141 142 / * las compensaciones de los métodos * / 143 enum ssh_kex_types_e { 144 SSH_KEX = 0, 145 SSH_HOSTKEYS, 146 SSH_CRYPT_C_S, 147 SSH_CRYPT_S_C, 148 SSH_MAC_C_S, 149 SSH_MAC_S_C, 150 SSH_COMP_C_S, 151 SSH_COMP_S_C, 152 SSH_LANG_C_S, 153 SSH_LANG_S_C 154 }; 155 156 #define SSH_CRYPT 2 157 #define SSH_MAC 3 158 #define SSH_COMP 4 159 #define SSH_LANG 5 160 161 enum ssh_auth_e { 162 SSH_AUTH_SUCCESS = 0, 163 SSH_AUTH_DENIED, 164 SSH_AUTH_PARTIAL, 165 SSH_AUTH_INFO, 166 SSH_AUTH_AGAIN, 167 SSH_AUTH_ERROR = -1 168 }; 169 170 / * banderas de autenticación * / 171 #define SSH_AUTH_METHOD_UNKNOWN 0 172 #define SSH_AUTH_METHOD_NONE 0x0001 173 #define SSH_AUTH_METHOD_PASSWORD 0x0002 174 #define SSH_AUTH_METHOD_PUBLICKEY 0x0004 175 #define SSH_AUTH_METHOD_HOSTBASED 0x0008 176 #define SSH_AUTH_METHOD_INTERACTIVE 0x0010 177 #define SSH_AUTH_METHOD_GSSAPI_MIC 0x0020 178 179 / * mensajes * / 180 enum ssh_requests_e { 181 SSH_REQUEST_AUTH = 1, 182 SSH_REQUEST_CHANNEL_OPEN, 183 SSH_REQUEST_CHANNEL, 184 SSH_REQUEST_SERVICE, 185 SSH_REQUEST_GLOBAL 186 }; 187 188 enum ssh_channel_type_e { 189 SSH_CHANNEL_UNKNOWN = 0, 190 SSH_CHANNEL_SESSION, 191 SSH_CHANNEL_DIRECT_TCPIP, 192 SSH_CHANNEL_FORWARDED_TCPIP, 193 SSH_CHANNEL_X11, 194 SSH_CHANNEL_AUTH_AGENT 195 }; 196 197 enum ssh_channel_requests_e { 198 SSH_CHANNEL_REQUEST_UNKNOWN = 0, 199 SSH_CHANNEL_REQUEST_PTY, 200 SSH_CHANNEL_REQUEST_EXEC, 201 SSH_CHANNEL_REQUEST_SHELL, 202 SSH_CHANNEL_REQUEST_ENV, 203 SSH_CHANNEL_REQUEST_SUBSYSTEM, 204 SSH_CHANNEL_REQUEST_WINDOW_CHANGE, 205 SSH_CHANNEL_REQUEST_X11 206 }; 207 208 enum ssh_global_requests_e { 209 SSH_GLOBAL_REQUEST_UNKNOWN = 0, 210 SSH_GLOBAL_REQUEST_TCPIP_FORWARD, 211 SSH_GLOBAL_REQUEST_CANCEL_TCPIP_FORWARD, 212 SSH_GLOBAL_REQUEST_KEEPALIVE 213 }; 214 215 enum ssh_publickey_state_e { 216 SSH_PUBLICKEY_STATE_ERROR = -1, 217 SSH_PUBLICKEY_STATE_NONE = 0, 218 SSH_PUBLICKEY_STATE_VALID = 1, 219 SSH_PUBLICKEY_STATE_WRONG = 2 220 }; 221 222 / * Indicadores de estado * / 224 #define SSH_CLOSED 0x01 225 226 #define SSH_READ_PENDING 0x02 227 228 #define SSH_CLOSED_ERROR 0x04 229 230 #define SSH_WRITE_PENDING 0x08 231 232 enum ssh_server_known_e { 233 SSH_SERVER_ERROR = -1, 234 SSH_SERVER_NOT_KNOWN = 0, 235 SSH_SERVER_KNOWN_OK, 236 SSH_SERVER_KNOWN_CHANGED, 237 SSH_SERVER_FOUND_OTHER, 238 SSH_SERVER_FILE_NOT_FOUND 239 }; 240 241 enum ssh_known_hosts_e { 245 SSH_KNOWN_HOSTS_ERROR = -2, 246 251 SSH_KNOWN_HOSTS_NOT_FOUND = -1, 252 257 SSH_KNOWN_HOSTS_UNKNOWN = 0, 258 262 SSH_KNOWN_HOSTS_OK, 263 269 SSH_KNOWN_HOSTS_CHANGED, 270 275 SSH_KNOWN_HOSTS_OTHER, 276 }; 277 278 #ifndef MD5_DIGEST_LEN 279 #define MD5_DIGEST_LEN 16 280 #endif 281 / * errores * / 282 283 enum ssh_error_types_e { 284 SSH_NO_ERROR = 0, 285 SSH_REQUEST_DENIED, 286 SSH_FATAL, 287 SSH_EINTR 288 }; 289 290 / * algunos tipos de claves * / 291 enum ssh_keytypes_e { 292 SSH_KEYTYPE_UNKNOWN = 0, 293 SSH_KEYTYPE_DSS = 1, 294 SSH_KEYTYPE_RSA, 295 SSH_KEYTYPE_RSA1, 296 SSH_KEYTYPE_ECDSA, 297 SSH_KEYTYPE_ED25519, 298 SSH_KEYTYPE_DSS_CERT01, 299 SSH_KEYTYPE_RSA_CERT01 300 }; 301 302 enum ssh_keycmp_e { 303 SSH_KEY_CMP_PUBLIC = 0, 304 SSH_KEY_CMP_PRIVATE 305 }; 306 307 #define SSH_ADDRSTRLEN 46 308 309 struct ssh_knownhosts_entry { 310 char * nombre de host; 311 char * sin analizar; 312 ssh_key publickey; 313 char * comentario; 314 }; 315 316 317 / * Códigos de retorno de error * / 318 #define SSH_OK 0 / * Sin error * / 319 #define SSH_ERROR -1 / * Error de algún tipo * / 320 #define SSH_AGAIN -2 / * La llamada sin bloqueo debe repetirse * / 321 #define SSH_EOF -127 / * Ya tenemos un eof * / 322 329 enum { 332 SSH_LOG_NOLOG = 0, 335 SSH_LOG_WARNING , 338 SSH_LOG_PROTOCOL , 341 SSH_LOG_PACKET , 344 SSH_LOG_FUNCTIONS 345 }; 347 #define SSH_LOG_RARE SSH_LOG_WARNING 348 357 #define SSH_LOG_NONE 0 358 359 #define SSH_LOG_WARN 1 360 361 #define SSH_LOG_INFO 2 362 363 #define SSH_LOG_DEBUG 3 364 365 #define SSH_LOG_TRACE 4 366 369 enum ssh_options_e { 370 SSH_OPTIONS_HOST, 371 SSH_OPTIONS_PORT, 372 SSH_OPTIONS_PORT_STR, 373 SSH_OPTIONS_FD, 374 SSH_OPTIONS_USER, 375 SSH_OPTIONS_SSH_DIR, 376 SSH_OPTIONS_IDENTITY, 377 SSH_OPTIONS_ADD_IDENTITY, 378 SSH_OPTIONS_KNOWNHOSTS, 379 SSH_OPTIONS_TIMEOUT, 380 SSH_OPTIONS_TIMEOUT_USEC, 381 SSH_OPTIONS_SSH1, 382 SSH_OPTIONS_SSH2, 383 SSH_OPTIONS_LOG_VERBOSITY, 384 SSH_OPTIONS_LOG_VERBOSITY_STR, 385 SSH_OPTIONS_CIPHERS_C_S, 386 SSH_OPTIONS_CIPHERS_S_C, 387 SSH_OPTIONS_COMPRESSION_C_S, 388 SSH_OPTIONS_COMPRESSION_S_C, 389 SSH_OPTIONS_PROXYCOMMAND, 390 SSH_OPTIONS_BINDADDR, 391 SSH_OPTIONS_STRICTHOSTKEYCHECK, 392 SSH_OPTIONS_COMPRESSION, 393 SSH_OPTIONS_COMPRESSION_LEVEL, 394 SSH_OPTIONS_KEY_EXCHANGE, 395 SSH_OPTIONS_HOSTKEYS, 396 SSH_OPTIONS_GSSAPI_SERVER_IDENTITY, 397 SSH_OPTIONS_GSSAPI_CLIENT_IDENTITY, 398 SSH_OPTIONS_GSSAPI_DELEGATE_CREDENTIALS, 399 SSH_OPTIONS_HMAC_C_S, 400 SSH_OPTIONS_HMAC_S_C, 401 SSH_OPTIONS_PASSWORD_AUTH, 402 SSH_OPTIONS_PUBKEY_AUTH, 403 SSH_OPTIONS_KBDINT_AUTH, 404 SSH_OPTIONS_GSSAPI_AUTH, 405 SSH_OPTIONS_GLOBAL_KNOWNHOSTS, 406 SSH_OPTIONS_NODELAY, 407 SSH_OPTIONS_PUBLICKEY_ACCEPTED_TYPES, 408 SSH_OPTIONS_PROCESS_CONFIG, 409 SSH_OPTIONS_REKEY_DATA, 410 SSH_OPTIONS_REKEY_TIME, 411 }; 412 413 enum { 415 SSH_SCP_WRITE, 417 SSH_SCP_READ, 418 SSH_SCP_RECURSIVE = 0x10 419 }; 420 421 enum ssh_scp_request_types { 423 SSH_SCP_REQUEST_NEWDIR = 1, 425 SSH_SCP_REQUEST_NEWFILE, 427 SSH_SCP_REQUEST_EOF, 429 SSH_SCP_REQUEST_ENDDIR, 431 SSH_SCP_REQUEST_WARNING 432 }; 433 434 enum ssh_connector_flags_e { 436 SSH_CONNECTOR_STDOUT = 1, 438 SSH_CONNECTOR_STDERR = 2, 440 SSH_CONNECTOR_BOTH = 3 441 }; 442 443 LIBSSH_API int ssh_blocking_flush ( sesión ssh_session , int timeout); 444 LIBSSH_API ssh_channel ssh_channel_accept_x11 ( canal ssh_channel , int timeout_ms); 445 LIBSSH_API int ssh_channel_change_pty_size ( canal ssh_channel , int cols, int filas); 446 LIBSSH_API int ssh_channel_close ( canal ssh_channel ); 447 LIBSSH_API void ssh_channel_free ( canal ssh_channel ); 448 LIBSSH_API int ssh_channel_get_exit_status ( canal ssh_channel ); 449 LIBSSH_API ssh_session ssh_channel_get_session ( canal ssh_channel ); 450 LIBSSH_API int ssh_channel_is_closed ( canal ssh_channel ); 451 LIBSSH_API int ssh_channel_is_eof ( canal ssh_channel ); 452 LIBSSH_API int ssh_channel_is_open ( canal ssh_channel ); 453 LIBSSH_API ssh_channel ssh_channel_new ( sesión ssh_session ); 454 LIBSSH_API int ssh_channel_open_auth_agent ( canal ssh_channel ); 455 LIBSSH_API int ssh_channel_open_forward ( canal ssh_channel , const char * host remoto, 456 int puerto remoto, const char * sourcehost, int localport); 457 LIBSSH_API int ssh_channel_open_session ( canal ssh_channel ); 458 LIBSSH_API int ssh_channel_open_x11 ( canal ssh_channel , const char * orig_addr, int orig_port); 459 LIBSSH_API int ssh_channel_poll ( canal ssh_channel , int is_stderr); 460 LIBSSH_API int ssh_channel_poll_timeout ( canal ssh_channel , int timeout, int is_stderr); 461 LIBSSH_API int ssh_channel_read ( canal ssh_channel , void * dest, uint32_t count, int is_stderr); 462 LIBSSH_API int ssh_channel_read_timeout ( ssh_channel channel, void * dest, uint32_t count, int is_stderr, int timeout_ms); 463 LIBSSH_API int ssh_channel_read_nonblocking ( canal ssh_channel , void * dest, uint32_t count, 464 int is_stderr); 465 LIBSSH_API int ssh_channel_request_env ( canal ssh_channel , const char * nombre, const char * valor); 466 LIBSSH_API int ssh_channel_request_exec ( canal ssh_channel , const char * cmd); 467 LIBSSH_API int ssh_channel_request_pty ( canal ssh_channel ); 468 LIBSSH_API int ssh_channel_request_pty_size ( canal ssh_channel , const char * term, 469 int cols, int filas); 470 LIBSSH_API int ssh_channel_request_shell ( canal ssh_channel ); 471 LIBSSH_API int ssh_channel_request_send_signal ( canal ssh_channel , const char * signum); 472 LIBSSH_API int ssh_channel_request_send_break ( ssh_channel canal, longitud uint32_t); 473 LIBSSH_API int ssh_channel_request_sftp ( canal ssh_channel ); 474 LIBSSH_API int ssh_channel_request_subsystem ( canal ssh_channel , const char * subsistema); 475 LIBSSH_API int ssh_channel_request_x11 ( canal ssh_channel , int single_connection, const char * protocolo, 476 const char * cookie, int número_pantalla); 477 LIBSSH_API int ssh_channel_request_auth_agent ( canal ssh_channel ); 478 LIBSSH_API int ssh_channel_send_eof ( canal ssh_channel ); 479 LIBSSH_API int ssh_channel_select ( ssh_channel * readchans, ssh_channel * writechans, ssh_channel * exceptchans, struct 480 timeval * tiempo de espera); 481 LIBSSH_API void ssh_channel_set_blocking ( canal ssh_channel , bloqueo int ); 482 LIBSSH_API void ssh_channel_set_counter ( canal ssh_channel , 483 contador ssh_counter ); 484 LIBSSH_API int ssh_channel_write ( canal ssh_channel , const void * datos, uint32_t len); 485 LIBSSH_API int ssh_channel_write_stderr ( canal ssh_channel , 486 const void * datos, 487 uint32_t len); 488 LIBSSH_API uint32_t ssh_channel_window_size ( canal ssh_channel ); 489 490 LIBSSH_API char * ssh_basename ( const char * ruta); 491 LIBSSH_API void ssh_clean_pubkey_hash ( carácter sin firmar ** hash); 492 LIBSSH_API int ssh_connect ( sesión ssh_session ); 493 494 LIBSSH_API ssh_connector ssh_connector_new ( sesión ssh_session ); 495 LIBSSH_API void ssh_connector_free ( conector ssh_connector ); 496 LIBSSH_API int ssh_connector_set_in_channel ( conector ssh_connector , 497 canal ssh_channel , 498 enum ssh_connector_flags_e banderas); 499 LIBSSH_API int ssh_connector_set_out_channel ( conector ssh_connector , 500 canal ssh_channel , 501 enum ssh_connector_flags_e flags); 502 LIBSSH_API void ssh_connector_set_in_fd ( ssh_connector conector, fd socket_t); 503 LIBSSH_API vacío ssh_connector_set_out_fd ( ssh_connector conector, fd socket_t); 504 505 LIBSSH_API const char * ssh_copyright ( void ); 506 LIBSSH_API void ssh_disconnect ( sesión ssh_session ); 507 LIBSSH_API char * ssh_dirname ( const char * ruta); 508 LIBSSH_API int ssh_finalize ( void ); 509 510 / * REENVÍO DE PUERTO INVERSO * / 511 LIBSSH_API ssh_channel ssh_channel_accept_forward ( sesión ssh_session , 512 int timeout_ms, 513 int * puerto_destino); 514 LIBSSH_API int ssh_channel_cancel_forward ( sesión ssh_session , 515 const char * dirección, 516 int puerto); 517 LIBSSH_API int ssh_channel_listen_forward ( sesión ssh_session , 518 const char * dirección, 519 puerto internacional , 520 int * puerto_delimitado); 521 522 LIBSSH_API void ssh_free ( sesión ssh_session ); 523 LIBSSH_API const char * ssh_get_disconnect_message ( sesión ssh_session ); 524 LIBSSH_API const char * ssh_get_error ( void * error); 525 LIBSSH_API int ssh_get_error_code ( void * error); 526 LIBSSH_API socket_t ssh_get_fd ( sesión ssh_session ); 527 LIBSSH_API char * ssh_get_hexa ( const unsigned char * what, size_t len); 528 LIBSSH_API char * ssh_get_issue_banner ( sesión ssh_session ); 529 LIBSSH_API int ssh_get_openssh_version ( sesión ssh_session ); 530 531 LIBSSH_API int ssh_get_server_publickey ( ssh_session sesión, clave ssh tecla *); 532 533 enum ssh_publickey_hash_type { 534 SSH_PUBLICKEY_HASH_SHA1, 535 SSH_PUBLICKEY_HASH_MD5, 536 SSH_PUBLICKEY_HASH_SHA256 537 }; 538 LIBSSH_API int ssh_get_publickey_hash ( clave const ssh_key , 539 enum ssh_publickey_hash_type type, 540 char ** hash sin firmar , 541 size_t * HLEN); 542 543 / * FUNCIONES ANULADAS * / 544 SSH_DEPRECATED LIBSSH_API int ssh_get_pubkey_hash ( sesión ssh_session , carácter sin firmar ** hash); 545 SSH_DEPRECATED LIBSSH_API ssh_channel ssh_forward_accept ( sesión ssh_session , int timeout_ms); 546 SSH_DEPRECATED LIBSSH_API int ssh_forward_cancel ( sesión ssh_session , const char * dirección, int puerto); 547 SSH_DEPRECATED LIBSSH_API int ssh_forward_listen ( sesión ssh_session , const char * dirección, int puerto, int * bound_port); 548 SSH_DEPRECATED LIBSSH_API int ssh_get_publickey ( ssh_session sesión, clave ssh tecla *); 549 SSH_DEPRECATED LIBSSH_API int ssh_write_knownhost ( sesión ssh_session ); 550 SSH_DEPRECATED LIBSSH_API char * ssh_dump_knownhost ( sesión ssh_session ); 551 SSH_DEPRECATED LIBSSH_API int ssh_is_server_known ( sesión ssh_session ); 552 SSH_DEPRECATED LIBSSH_API void ssh_print_hexa ( const char * descr, const unsigned char * what, size_t len); 553 554 555 556 LIBSSH_API int ssh_get_random ( void * donde, int len, int fuerte); 557 LIBSSH_API int ssh_get_version ( sesión ssh_session ); 558 LIBSSH_API int ssh_get_status ( sesión ssh_session ); 559 LIBSSH_API int ssh_get_poll_flags ( sesión ssh_session ); 560 LIBSSH_API int ssh_init ( vacío ); 561 LIBSSH_API int ssh_is_blocking ( sesión ssh_session ); 562 LIBSSH_API int ssh_is_connected ( sesión ssh_session ); 563 564 / * HOSTS CONOCIDOS * / 565 LIBSSH_API void ssh_knownhosts_entry_free ( struct ssh_knownhosts_entry * entrada); 566 #define SSH_KNOWNHOSTS_ENTRY_FREE (e) do {\ 567 si ((e)! = NULO) {\ 568 ssh_knownhosts_entry_free (e); \ 569 e = NULO; \ 570 } \ 571 } mientras (0) 572 573 LIBSSH_API int ssh_known_hosts_parse_line ( const char * host, 574 const char * línea, 575 entrada struct ssh_knownhosts_entry **); 576 LIBSSH_API enumeración ssh_known_hosts_e ssh_session_has_known_hosts_entry ( sesión ssh_session ); 577 578 LIBSSH_API int ssh_session_export_known_hosts_entry ( sesión ssh_session , 579 Char ** pentry_string); 580 LIBSSH_API int ssh_session_update_known_hosts ( sesión ssh_session ); 581 582 LIBSSH_API enumeración ssh_known_hosts_e 583 ssh_session_get_known_hosts_entry ( sesión ssh_session , 584 struct ssh_knownhosts_entry ** pentry); 585 LIBSSH_API enumeración ssh_known_hosts_e ssh_session_is_known_server ( sesión ssh_session ); 586 587 / * REGISTRO * / 588 LIBSSH_API int ssh_set_log_level ( nivel int ); 589 LIBSSH_API int ssh_get_log_level ( void ); 590 LIBSSH_API void * ssh_get_log_userdata ( void ); 591 LIBSSH_API int ssh_set_log_userdata ( void * datos); 592 LIBSSH_API void _ssh_log ( int verbosidad, 593 const char * función , 594 const char * formato, ...) PRINTF_ATTRIBUTE (3, 4); 595 596 / * legado * / 597 SSH_DEPRECATED LIBSSH_API void ssh_log ( sesión ssh_session , 598 int prioridad, 599 const char * formato, ...) PRINTF_ATTRIBUTE (3, 4); 600 601 LIBSSH_API ssh_channel ssh_message_channel_request_open_reply_accept ( ssh_message msg); 602 LIBSSH_API int ssh_message_channel_request_reply_success ( ssh_message msg); 603 #define SSH_MESSAGE_FREE (x) \ 604 hacer {if ((x)! = NULL) {ssh_message_free (x); (x) = NULO; }} mientras (0) 605 LIBSSH_API void ssh_message_free ( ssh_message msg); 606 LIBSSH_API ssh_message ssh_message_get ( sesión ssh_session ); 607 LIBSSH_API int ssh_message_subtype ( ssh_message msg); 608 LIBSSH_API int ssh_message_type ( ssh_message msg); 609 LIBSSH_API int ssh_mkdir ( const char * nombre de ruta, modo_t); 610 LIBSSH_API ssh_session ssh_new(void); 611 612 LIBSSH_API int ssh_options_copy(ssh_session src, ssh_session *dest); 613 LIBSSH_API int ssh_options_getopt(ssh_session session, int *argcptr, char **argv); 614 LIBSSH_API int ssh_options_parse_config(ssh_session session, const char *filename); 615 LIBSSH_API int ssh_options_set(ssh_session session, enum ssh_options_e type, 616 const void *value); 617 LIBSSH_API int ssh_options_get(ssh_session session, enum ssh_options_e type, 618 char **value); 619 LIBSSH_API int ssh_options_get_port(ssh_session session, unsigned int * port_target); 620 LIBSSH_API int ssh_pcap_file_close(ssh_pcap_file pcap); 621 LIBSSH_API void ssh_pcap_file_free(ssh_pcap_file pcap); 622 LIBSSH_API ssh_pcap_file ssh_pcap_file_new(void); 623 LIBSSH_API int ssh_pcap_file_open(ssh_pcap_file pcap, const char *filename); 624 638 typedef int (*ssh_auth_callback) (const char *prompt, char *buf, size_t len, 639 int echo, int verify, void *userdata); 640 641 LIBSSH_API ssh_key ssh_key_new(void); 642 #define SSH_KEY_FREE(x) \ 643 do { if ((x) != NULL) { ssh_key_free(x); x = NULL; } } while(0) 644 LIBSSH_API void ssh_key_free (ssh_key key); 645 LIBSSH_API enum ssh_keytypes_e ssh_key_type(const ssh_key key); 646 LIBSSH_API const char *ssh_key_type_to_char(enum ssh_keytypes_e type); 647 LIBSSH_API enum ssh_keytypes_e ssh_key_type_from_name(const char *name); 648 LIBSSH_API int ssh_key_is_public(const ssh_key k); 649 LIBSSH_API int ssh_key_is_private(const ssh_key k); 650 LIBSSH_API int ssh_key_cmp(const ssh_key k1, 651 const ssh_key k2, 652 enum ssh_keycmp_e what); 653 654 LIBSSH_API int ssh_pki_generate(enum ssh_keytypes_e type, int parameter, 655 ssh_key *pkey); 656 LIBSSH_API int ssh_pki_import_privkey_base64(const char *b64_key, 657 const char *passphrase, 658 ssh_auth_callback auth_fn, 659 void *auth_data, 660 ssh_key *pkey); 661 LIBSSH_API int ssh_pki_export_privkey_base64(const ssh_key privkey, 662 const char *passphrase, 663 ssh_auth_callback auth_fn, 664 void *auth_data, 665 char **b64_key); 666 LIBSSH_API int ssh_pki_import_privkey_file(const char *filename, 667 const char *passphrase, 668 ssh_auth_callback auth_fn, 669 void *auth_data, 670 ssh_key *pkey); 671 LIBSSH_API int ssh_pki_export_privkey_file(const ssh_key privkey, 672 const char *passphrase, 673 ssh_auth_callback auth_fn, 674 void *auth_data, 675 const char *filename); 676 677 LIBSSH_API int ssh_pki_copy_cert_to_privkey(const ssh_key cert_key, 678 ssh_key privkey); 679 680 LIBSSH_API int ssh_pki_import_pubkey_base64(const char *b64_key, 681 enum ssh_keytypes_e type, 682 ssh_key *pkey); 683 LIBSSH_API int ssh_pki_import_pubkey_file(const char *filename, 684 ssh_key *pkey); 685 686 LIBSSH_API int ssh_pki_import_cert_base64(const char *b64_cert, 687 enum ssh_keytypes_e type, 688 ssh_key *pkey); 689 LIBSSH_API int ssh_pki_import_cert_file(const char *filename, 690 ssh_key *pkey); 691 692 LIBSSH_API int ssh_pki_export_privkey_to_pubkey(const ssh_key privkey, 693 ssh_key *pkey); 694 LIBSSH_API int ssh_pki_export_pubkey_base64(const ssh_key key, 695 char **b64_key); 696 LIBSSH_API int ssh_pki_export_pubkey_file(const ssh_key key, 697 const char *filename); 698 699 LIBSSH_API const char *ssh_pki_key_ecdsa_name(const ssh_key key); 700 701 LIBSSH_API char *ssh_get_fingerprint_hash(enum ssh_publickey_hash_type type, 702 unsigned char *hash, 703 size_t len); 704 LIBSSH_API void ssh_print_hash (enum ssh_publickey_hash_type type, unsigned char *hash, size_t len); 705 LIBSSH_API int ssh_send_ignore (ssh_session session, const char *data); 706 LIBSSH_API int ssh_send_debug (ssh_session session, const char *message, int always_display); 707 LIBSSH_API void ssh_gssapi_set_creds(ssh_session session, const ssh_gssapi_creds creds); 708 LIBSSH_API int ssh_scp_accept_request(ssh_scp scp); 709 LIBSSH_API int ssh_scp_close(ssh_scp scp); 710 LIBSSH_API int ssh_scp_deny_request(ssh_scp scp, const char *reason); 711 LIBSSH_API void ssh_scp_free(ssh_scp scp); 712 LIBSSH_API int ssh_scp_init(ssh_scp scp); 713 LIBSSH_API int ssh_scp_leave_directory(ssh_scp scp); 714 LIBSSH_API ssh_scp ssh_scp_new(ssh_session session, int mode, const char *location); 715 LIBSSH_API int ssh_scp_pull_request(ssh_scp scp); 716 LIBSSH_API int ssh_scp_push_directory(ssh_scp scp, const char *dirname, int mode); 717 LIBSSH_API int ssh_scp_push_file(ssh_scp scp, const char *filename, size_t size, int perms); 718 LIBSSH_API int ssh_scp_push_file64(ssh_scp scp, const char *filename, uint64_t size, int perms); 719 LIBSSH_API int ssh_scp_read(ssh_scp scp, void *buffer, size_t size); 720 LIBSSH_API const char *ssh_scp_request_get_filename(ssh_scp scp); 721 LIBSSH_API int ssh_scp_request_get_permissions(ssh_scp scp); 722 LIBSSH_API size_t ssh_scp_request_get_size(ssh_scp scp); 723 LIBSSH_API uint64_t ssh_scp_request_get_size64(ssh_scp scp); 724 LIBSSH_API const char *ssh_scp_request_get_warning(ssh_scp scp); 725 LIBSSH_API int ssh_scp_write(ssh_scp scp, const void *buffer, size_t len); 726 LIBSSH_API int ssh_select(ssh_channel *channels, ssh_channel *outchannels, socket_t maxfd, 727 fd_set *readfds, struct timeval *timeout); 728 LIBSSH_API int ssh_service_request(ssh_session session, const char *service); 729 LIBSSH_API int ssh_set_agent_channel(ssh_session session, ssh_channel channel); 730 LIBSSH_API int ssh_set_agent_socket(ssh_session session, socket_t fd); 731 LIBSSH_API void ssh_set_blocking(ssh_session session, int blocking); 732 LIBSSH_API void ssh_set_counters(ssh_session session, ssh_counter scounter, 733 ssh_counter rcounter); 734 LIBSSH_API void ssh_set_fd_except(ssh_session session); 735 LIBSSH_API void ssh_set_fd_toread(ssh_session session); 736 LIBSSH_API void ssh_set_fd_towrite(ssh_session session); 737 LIBSSH_API void ssh_silent_disconnect(ssh_session session); 738 LIBSSH_API int ssh_set_pcap_file(ssh_session session, ssh_pcap_file pcapfile); 739 740 /* USERAUTH */ 741 LIBSSH_API int ssh_userauth_none(ssh_session session, const char *username); 742 LIBSSH_API int ssh_userauth_list(ssh_session session, const char *username); 743 LIBSSH_API int ssh_userauth_try_publickey(ssh_session session, 744 const char *username, 745 const ssh_key pubkey); 746 LIBSSH_API int ssh_userauth_publickey(ssh_session session, 747 const char *username, 748 const ssh_key privkey); 749 #ifndef _WIN32 750 LIBSSH_API int ssh_userauth_agent(ssh_session session, 751 const char *username); 752 #endif 753 LIBSSH_API int ssh_userauth_publickey_auto(ssh_session session, 754 const char *username, 755 const char *passphrase); 756 LIBSSH_API int ssh_userauth_password(ssh_session session, 757 const char *username, 758 const char *password); 759 760 LIBSSH_API int ssh_userauth_kbdint(ssh_session session, const char *user, const char *submethods); 761 LIBSSH_API const char *ssh_userauth_kbdint_getinstruction(ssh_session session); 762 LIBSSH_API const char *ssh_userauth_kbdint_getname(ssh_session session); 763 LIBSSH_API int ssh_userauth_kbdint_getnprompts(ssh_session session); 764 LIBSSH_API const char *ssh_userauth_kbdint_getprompt(ssh_session session, unsigned int i, char *echo); 765 LIBSSH_API int ssh_userauth_kbdint_getnanswers(ssh_session session); 766 LIBSSH_API const char *ssh_userauth_kbdint_getanswer(ssh_session session, unsigned int i); 767 LIBSSH_API int ssh_userauth_kbdint_setanswer(ssh_session session, unsigned int i, 768 const char *answer); 769 LIBSSH_API int ssh_userauth_gssapi(ssh_session session); 770 LIBSSH_API const char *ssh_version(int req_version); 771 772 LIBSSH_API void ssh_string_burn(ssh_string str); 773 LIBSSH_API ssh_string ssh_string_copy(ssh_string str); 774 LIBSSH_API void *ssh_string_data(ssh_string str); 775 LIBSSH_API int ssh_string_fill(ssh_string str, const void *data, size_t len); 776 #define SSH_STRING_FREE(x) \ 777 do { if ((x) != NULL) { ssh_string_free(x); x = NULL; } } while(0) 778 LIBSSH_API void ssh_string_free(ssh_string str); 779 LIBSSH_API ssh_string ssh_string_from_char(const char *what); 780 LIBSSH_API size_t ssh_string_len(ssh_string str); 781 LIBSSH_API ssh_string ssh_string_new(size_t size); 782 LIBSSH_API const char *ssh_string_get_char(ssh_string str); 783 LIBSSH_API char *ssh_string_to_char(ssh_string str); 784 #define SSH_STRING_FREE_CHAR(x) \ 785 do { if ((x) != NULL) { ssh_string_free_char(x); x = NULL; } } while(0) 786 LIBSSH_API void ssh_string_free_char(char *s); 787 788 LIBSSH_API int ssh_getpass(const char *prompt, char *buf, size_t len, int echo, 789 int verify); 790 791 792 typedef int (*ssh_event_callback)(socket_t fd, int revents, void *userdata); 793 794 LIBSSH_API ssh_event ssh_event_new(void); 795 LIBSSH_API int ssh_event_add_fd(ssh_event event, socket_t fd, short events, 796 ssh_event_callback cb, void *userdata); 797 LIBSSH_API int ssh_event_add_session(ssh_event event, ssh_session session); 798 LIBSSH_API int ssh_event_add_connector(ssh_event event, ssh_connector connector); 799 LIBSSH_API int ssh_event_dopoll(ssh_event event, int timeout); 800 LIBSSH_API int ssh_event_remove_fd(ssh_event event, socket_t fd); 801 LIBSSH_API int ssh_event_remove_session(ssh_event event, ssh_session session); 802 LIBSSH_API int ssh_event_remove_connector(ssh_event event, ssh_connector connector); 803 LIBSSH_API void ssh_event_free(ssh_event event); 804 LIBSSH_API const char* ssh_get_clientbanner(ssh_session session); 805 LIBSSH_API const char* ssh_get_serverbanner(ssh_session session); 806 LIBSSH_API const char* ssh_get_kex_algo(ssh_session session); 807 LIBSSH_API const char* ssh_get_cipher_in(ssh_session session); 808 LIBSSH_API const char* ssh_get_cipher_out(ssh_session session); 809 LIBSSH_API const char* ssh_get_hmac_in(ssh_session session); 810 LIBSSH_API const char* ssh_get_hmac_out(ssh_session session); 811 812 LIBSSH_API ssh_buffer ssh_buffer_new(void); 813 LIBSSH_API void ssh_buffer_free(ssh_buffer buffer); 814 #define SSH_BUFFER_FREE(x) \ 815 do { if ((x) != NULL) { ssh_buffer_free(x); x = NULL; } } while(0) 816 LIBSSH_API int ssh_buffer_reinit(ssh_buffer buffer); 817 LIBSSH_API int ssh_buffer_add_data(ssh_buffer buffer, const void *data, uint32_t len); 818 LIBSSH_API uint32_t ssh_buffer_get_data(ssh_buffer buffer, void *data, uint32_t requestedlen); 819 LIBSSH_API void *ssh_buffer_get(ssh_buffer buffer); 820 LIBSSH_API uint32_t ssh_buffer_get_len(ssh_buffer buffer); 821 822 #ifndef LIBSSH_LEGACY_0_4 823 #include "libssh/legacy.h" 824 #endif 825 826 #ifdef __cplusplus 827 } 828 #endif 829 #endif /* _LIBSSH_H */</small> </body> </html> <!-- Juan Angel Luzardo Muslera / montevideo Uruguay -->
chandong83 / Aes 128 Gcm C ExampleAES-128-GCM C Example Code
ISecOkayamaUniv / ELiPSELiPS is a cryptographic library that is designed to support bilinear pairing using BLS-12 curve at 128-bit Security Level. It is an on going project. Codes are subject to frequent change.
davervw / C128 KeyscanCommodore 128 Keyboard polled scan codes to USB keyboard HID