Found 597 repositories(showing 30)
Wivik
A tool displaying your DevOps solution map and their adoption for each step of the loop. Demo available on GitHub Page !
nyaundid
SEIS 665 Assignment 2: Linux & Git Overview This week we will focus on becoming familiar with launching a Linux server and working with some basic Linux and Git commands. We will use AWS to launch and host the Linux server. AWS might seem a little confusing at this point. Don’t worry, we will gain much more hands-on experience with AWS throughout the course. The goal is to get you comfortable working with the technology and not overwhelm you with all the details. Requirements You need to have a personal AWS account and GitHub account for this assignment. You should also read the Git Hands-on Guide and Linux Hands-on Guide before beginning this exercise. A word about grading One of the key DevOps practices we learn about in this class is the use of automation to increase the speed and repeatability of processes. Automation is utilized during the assignment grading process to review and assess your work. It’s important that you follow the instructions in each assignment and type in required files and resources with the proper names. All names are case sensitive, so a name like "Web1" is not the same as "web1". If you misspell a name, use the wrong case, or put a file in the wrong directory location you will lose points on your assignment. This is the easiest way to lose points, and also the most preventable. You should always double-check your work to make sure it accurately reflects the requirements specified in the assignment. You should always carefully review the content of your files before submitting your assignment. The assignment Let’s get started! Create GitHub repository The first step in the assignment is to setup a Git repository on GitHub. We will use a special solution called GitHub Classroom for this course which automates the process of setting up student assignment repositories. Here are the basic steps: Click on the following link to open Assignment 2 on the GitHub Classroom site: https://classroom.github.com/a/K4zcVmX- (Links to an external site.)Links to an external site. Click on the Accept this assignment button. GitHub Classroom will provide you with a URL (https) to access the assignment repository. Either copy this address to your clipboard or write it down somewhere. You will need to use this address to set up the repository on a Linux server. Example: https://github.com/UST-SEIS665/hw2-seis665-02-spring2019-<your github id>.git At this point your new repository to ready to use. The repository is currently empty. We will put some content in there soon! Launch Linux server The second step in the assignment is to launch a Linux server using AWS EC2. The server should have the following characteristics: Amazon Linux 2 AMI 64-bit (usually the first option listed) Located in a U.S. region (us-east-1) t2.micro instance type All default instance settings (storage, vpm, security group, etc.) I’ve shown you how to launch EC2 instances in class. You can review it on Canvas. Once you launch the new server, it may take a few minutes to provision. Log into server The next step is to log into the Linux server using a terminal program with a secure shell (SSH) support. You can use iTerm2 (Links to an external site.)Links to an external site. on a Mac and GitBash/PuTTY (Links to an external site.)Links to an external site. on a PC. You will need to have the private server key and the public IP address before attempting to log into the server. The server key is basically your password. If you lose it, you will need to terminate the existing instance and launch a new server. I recommend reusing the same key when launching new servers throughout the class. Note, I make this recommendation to make the learning process easier and not because it is a common security practice. I’ve shown you how to use a terminal application to log into the instance using a Windows desktop. Your personal computer or lab computer may be running a different OS version, but the process is still very similar. You can review the videos on the Canvas. Working with Linux If you’ve made it this far, congratulations! You’ve made it over the toughest hurdle. By the end of this course, I promise you will be able to launch and log into servers in your sleep. You should be looking at a login screen that looks something like this: Last login: Mon Mar 21 21:17:54 2016 from 174-20-199-194.mpls.qwest.net __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___| https://aws.amazon.com/amazon-linux-ami/2015.09-release-notes/ 8 package(s) needed for security, out of 17 available Run "sudo yum update" to apply all updates. ec2-user@ip-172-31-15-26 ~]$ Your terminal cursor is sitting at the shell prompt, waiting for you to type in your first command. Remember the shell? It is a really cool program that lets you start other programs and manage services on the Linux system. The rest of this assignment will be spent working with the shell. Note, when you are asked to type in a command in the steps below, don’t type in the dollar-sign ($) character. This is just meant to represent the command prompt. The actual commands are represented by the characters to the right of the command prompt. Let’s start by asking the shell for some help. Type in: $ help The shell provides you with a list of commands you can run along with possible command options. Next, check out one of the pages in the built-in manual: $ man ls A man page will appear with information on how to use the ls command. This command is used to list the contents of file directories. Either space through the contents of the man page or hit q to exit. Most of the core Linux commands have man pages available. But honestly, some of these man pages are a bit hard to understand. Sometimes your best bet is to search on Google if you are trying to figure out how to use a specific command. When you initially log into Linux, the system places you in your home directory. Each user on the system has a separate home directory. Let’s see where your home directory is located: $ pwd The response should be /home/ec2-user. The pwd command is handy to remember if you ever forget what file directory you are currently located in. If you recall from the Linux Hands-on Guide, this directory is also your current working directory. Type in: $ cd / The cd command let’s you change to a new working directory on the server. In this case, we changed to the root (/) directory. This is the parent of all the other directories on the file system. Type in: $ ls The ls command lists the contents of the current directory. As you can see, root directory contains many other directories. You will become familiar with these directories over time. The ls command provides a very basic directory listing. You need to supply the command with some options if you want to see more detailed information. Type in: $ ls -la See how this command provides you with much more detailed information about the files and directories? You can use this detailed listing to see the owner, group, and access control list settings for each file or directory. Do you see any files listed? Remember, the first character in the access control list column denotes whether a listed item is a file or a directory. You probably see a couple files with names like .autofsck. How come you didn’t see this file when you typed in the lscommand without any options? (Try to run this command again to convince yourself.) Files names that start with a period are called hidden files. These files won’t appear on normal directory listings. Type in: $ cd /var Then, type in: $ ls You will see a directory listing for the /var directory. Next, type in: $ ls .. Huh. This directory listing looks the same as the earlier root directory listing. When you use two periods (..) in a directory path that means you are referring to the parent directory of the current directory. Just think of the two dots as meaning the directory above the current directory. Now, type in: $ cd ~ $ pwd Whoa. We’re back at our home directory again. The tilde character (~) is another one of those handy little directory path shortcuts. It always refers to our personal home directory. Keep in mind that since every user has their own home directory, the tilde shortcut will refer to a unique directory for each logged-in user. Most students are used to navigating a file system by clicking a mouse in nested graphical folders. When they start using a command-line to navigate a file system, they sometimes get confused and lose track of their current position in the file system. Remember, you can always use the pwd command to quickly figure out what directory you are currently working in. Let’s make some changes to the file system. We can easily make our own directories on the file system. Type: mkdir test Now type: ls Cool, there’s our new test directory. Let’s pretend we don’t like that directory name and delete it. Type: rmdir test Now it’s gone. How can you be sure? You should know how to check to see if the directory still exists at this point. Go ahead and check. Let’s create another directory. Type in: $ mkdir documents Next, change to the new directory: $ cd documents Did you notice that your command prompt displays the name of the current directory? Something like: [ec2-user@ip-172-31-15-26 documents]$. Pretty handy, huh? Okay, let’s create our first file in the documents directory. This is just an empty file for training purposes. Type in: $ touch paper.txt Check to see that the new file is in the directory. Now, go back to the previous directory. Remember the double dot shortcut? $ cd .. Okay, we don’t like our documents directory any more. Let’s blow it away. Type in: $ rmdir documents Uh oh. The shell didn’t like that command because the directory isn’t empty. Let’s change back into the documents directory. But this time don’t type in the full name of the directory. You can let shell auto-completion do the typing for you. Type in the first couple characters of the directory name and then hit the tab key: $ cd doc<tab> You should use the tab auto-completion feature often. It saves typing and makes working with the Linux file system much much easier. Tab is your friend. Now, remove the file by typing: $ rm paper.txt Did you try to use the tab key instead of typing in the whole file name? Check to make sure the file was deleted from the directory. Next, create a new file: $ touch file1 We like file1 so much that we want to make a backup copy. Type: $ cp file1 file1-backup Check to make sure the new backup copy was created. We don’t really like the name of that new file, so let’s rename it. Type: $ mv file1-backup backup Moving a file to the same directory and giving it a new name is basically the same thing as renaming it. We could have moved it to a different directory if we wanted. Let’s list all of the files in the current directory that start with the letter f: $ ls f* Using wildcard pattern matching in file commands is really useful if you want the command to impact or filter a group of files. Now, go up one directory to the parent directory (remember the double dot shortcut?) We tried to remove the documents directory earlier when it had files in it. Obviously that won’t work again. However, we can use a more powerful command to destroy the directory and vanquish its contents. Behold, the all powerful remove command: $ rm -fr documents Did you remember to use auto-completion when typing in documents? This command and set of options forcibly removes the directory and its contents. It’s a dangerous command wielded by the mightiest Linux wizards. Okay, maybe that’s a bit of an exaggeration. Just be careful with it. Check to make sure the documents directory is gone before proceeding. Let’s continue. Change to the directory /var and make a directory called test. Ugh. Permission denied. We created this darn Linux server and we paid for it. Shouldn’t we be able to do anything we want on it? You logged into the system as a user called ec2-user. While this user can create and manage files in its home directory, it cannot change files all across the system. At least it can’t as a normal user. The ec2-user is a member of the root group, so it can escalate its privileges to super-user status when necessary. Let’s try it: $ sudo mkdir test Check to make sure the directory exists now. Using sudo we can execute commands as a super-user. We can do anything we want now that we know this powerful new command. Go ahead and delete the test directory. Did you remember to use sudo before the rmdir command? Check to make sure the directory is gone. You might be asking yourself the question: why can we list the contents of the /var directory but not make changes? That’s because all users have read access to the /var directory and the ls command is a read function. Only the root users or those acting as a super-user can write changes to the directory. Let’s go back to our home directory: $ cd ~ Editing text files is a really common task on Linux systems because many of the application configuration files are text files. We can create a text file by using a text editor. Type in: $ nano myfile.conf The shell starts up the nano text editor and places your terminal cursor in the editing screen. Nano is a simple text-based word processor. Type in a few lines of text. When you’re done writing your novel, hit ctrl-x and answer y to the prompt to save your work. Finally, hit enter to save the text to the filename you specified. Check to see that your file was saved in the directory. You can take a look at the contents of your file by typing: $ cat myfile.conf The cat command displays your text file content on the terminal screen. This command works fine for displaying small text files. But if your file is hundreds of lines long, the content will scroll down your terminal screen so fast that you won’t be able to easily read it. There’s a better way to view larger text files. Type in: $ less myfile.conf The less command will page the display of a text file, allowing you to page through the contents of the file using the space bar. Your text file is probably too short to see the paging in action though. Hit q to quit out of the less text viewer. Hit the up-arrow key on your keyboard a few times until the commmand nano myfile.conf appears next to your command prompt. Cool, huh? The up-arrow key allows you to replay a previously run command. Linux maintains a list of all the commands you have run since you logged into the server. This is called the command history. It’s a really useful feature if you have to re-run a complex command again. Now, hit ctrl-c. This cancels whatever command is displayed on the command line. Type in the following command to create a couple empty files in the directory: $ touch file1 file2 file3 Confirm that the files were created. Some commands, like touch. allow you to specify multiple files as arguments. You will find that Linux commands have all kinds of ways to make tasks more efficient like this. Throughout this assignment, we have been running commands and viewing results on the terminal screen. The screen is the standard place for commands to output results. It’s known as the standard out (stdout). However, it’s really useful to output results to the file system sometimes. Type in: $ ls > listing.txt Take a look at the directory listing now. You just created a new file. View the contents of the listing.txt file. What do you see? Instead of sending the output from the ls command to the screen we sent it to a text file. Let’s try another one. Type: $ cat myfile.conf > listing.txt Take a look at the contents of the listing.txt file again. It looks like your myfile.conf file now. It’s like you made a copy of it. But what happened to the previous content in the listing.txt file? When you redirect the output of a command using the right angle-bracket character (>), the output overwrites the existing file. Type this command in: $ cat myfile.conf >> listing.txt Now look at the contents of the listing.txt file. You should see your original content displayed twice. When you use two angle-bracket characters in the commmand the output appends (or adds to) the file instead of overwriting it. We redirected the output from a command to a text file. It’s also possible to redirect the input to a command. Typically we use a keyboard to provide input, but sometimes it makes more sense to input a file to a command. For example, how many words are in your new listing.txt file? Let’s find out. Type in: $ wc -w < listing.txt Did you get a number? This command inputs the listing.txt file into a word count program called wc. Type in the command: $ ls /usr/bin The terminal screen probably scrolled quickly as filenames flashed by. The /usr/bin directory holds quite a few files. It would be nice if we could page through the contents of this directory. Well, we can. We can use a special shell feature called pipes. In previous steps, we redirected I/O using the file system. Pipes allow us to redirect I/O between programs. We can redirect the output from one program into another. Type in: $ ls /usr/bin | less Now the directory listing is paged. Hit the spacebar to page through the listing. The pipe, represented by a vertical bar character (|), takes the output from the ls command and redirects it to the less command where the resulting output is paged. Pipes are super powerful and used all the time by savvy Linux operators. Hit the q key to quit the paginated directory listing command. Working with shell scripts Now things are going to get interesting. We’ve been manually typing in commands throughout this exercise. If we were running a set of repetitive tasks, we would want to automate the process as much as possible. The shell makes it really easy to automate tasks using shell scripts. The shell provides many of the same features as a basic procedural programming language. Let’s write some code. Type in this command: $ j=123 $ echo $j We just created a variable named j referencing the string 123. The echo command printed out the value of the variable. We had to use a dollar sign ($) when referencing the variable in another command. Next, type in: $ j=1+1 $ echo $j Is that what you expected? The shell just interprets the variable value as a string. It’s not going to do any sort of computation. Typing in shell script commands on the command line is sort of pointless. We want to be able to create scripts that we can run over-and-over. Let’s create our first shell script. Use the nano editor to create a file named myscript. When the file is open in the editor, type in the following lines of code: #!/bin/bash echo Hello $1 Now quit the editor and save your file. We can run our script by typing: $ ./myscript World Er, what happened? Permission denied. Didn’t we create this file? Why can’t we run it? We can’t run the script file because we haven’t set the execute permission on the file. Type in: $ chmod u+x myscript This modifies the file access control list to allow the owner of the file to execute it. Let’s try to run the command again. Hit the up-arrow key a couple times until the ./myscript World command is displayed and hit enter. Hooray! Our first shell script. It’s probably a bit underwhelming. No problem, we’ll make it a little more complex. The script took a single argument called World. Any arguments provided to a shell script are represented as consecutively numbered variables inside the script ($1, $2, etc). Pretty simple. You might be wondering why we had to type the ./ characters before the name of our script file. Try to type in the command without them: $ myscript World Command not found. That seems a little weird. Aren’t we currently in the directory where the shell script is located? Well, that’s just not how the shell works. When you enter a command into the shell, it looks for the command in a predefined set of directories on the server called your PATH. Since your script file isn’t in your special path, the shell reports it as not found. By typing in the ./ characters before the command name you are basically forcing the shell to look for your script in the current directory instead of the default path. Create another file called cleanup using nano. In the file editor window type: #!/bin/bash # My cleanup script mkdir archive mv file* archive Exit the editor window and save the file. Change the permissions on the script file so that you can execute it. Now run the command: $ ./cleanup Take a look at the file directory listing. Notice the archive directory? List the contents of that directory. The script automatically created a new directory and moved three files into it. Anything you can do manually at a command prompt can be automated using a shell script. Let’s create one more shell script. Use nano to create a script called namelist. Here is the content of the script: #!/bin/bash # for-loop test script names='Jason John Jane' for i in $names do echo Hello $i done Change the permissions on the script file so that you can execute it. Run the command: $ ./namelist The script will loop through a set of names stored in a variable displaying each one. Scripts support several programming constructs like for-loops, do-while loops, and if-then-else. These building blocks allow you to create fairly complex scripts for automating tasks. Installing packages and services We’re nearing the end of this assignment. But before we finish, let’s install some new software packages on our server. The first thing we should do is make sure all the current packages installed on our Linux server are up-to-date. Type in: $ sudo yum update -y This is one of those really powerful commands that requires sudo access. The system will review the currently installed packages and go out to the Internet and download appropriate updates. Next, let’s install an Apache web server on our system. Type in: $ sudo yum install httpd -y Bam! You probably never knew that installing a web server was so easy. We’re not going to actually use the web server in this exercise, but we will in future assignments. We installed the web server, but is it actually running? Let’s check. Type in: $ sudo service httpd status Nope. Let’s start it. Type: $ sudo service httpd start We can use the service command to control the services running on the system. Let’s setup the service so that it automatically starts when the system boots up. Type in: $ sudo chkconfig httpd on Cool. We installed the Apache web server on our system, but what other programs are currently running? We can use the pscommand to find out. Type in: $ ps -ax Lots of processes are running on our system. We can even look at the overall performance of our system using the topcommand. Let’s try that now. Type in: $ top The display might seem a little overwhelming at first. You should see lots of performance information displayed including the cpu usage, free memory, and a list of running tasks. We’re almost across the finish line. Let’s make sure all of our valuable work is stored in a git repository. First, we need to install git. Type in the command: $ sudo yum install git -y Check your work It’s very important to check your work before submitting it for grading. A misspelled, misplaced or missing file will cost you points. This may seem harsh, but the reality is that these sorts of mistakes have consequences in the real world. For example, a server instance could fail to launch properly and impact customers because a single required file is missing. Here is what the contents of your git repository should look like before final submission: ┣archive ┃ ┣ file1 ┃ ┣ file2 ┃ ┗ file3 ┣ namelist ┗ myfile.conf Saving our work in the git repository Next, make sure you are still in your home directory (/home/ec2-user). We will install the git repository you created at the beginning of this exercise. You will need to modify this command by typing in the GitHub repository URL you copied earlier. $ git clone <your GitHub URL here>.git Example: git clone https://github.com/UST-SEIS665/hw2-seis665-02-spring2019-<your github id>.git The git application will ask you for your GitHub username and password. Note, if you have multi-factor authentication enabled on your GitHub account you will need to provide a personal token instead of your password. Git will clone (copy) the repository from GitHub to your Linux server. Since the repository is empty the clone happens almost instantly. Check to make sure that a sub-directory called "hw2-seis665-02-spring2019-<username>" exists in the current directory (where <username> is your GitHub account name). Git automatically created this directory as part of the cloning process. Change to the hw2-seis665-02-spring2019-<username> directory and type: $ ls -la Notice the .git hidden directory? This is where git actually stores all of the file changes in your repository. Nothing is actually in your repository yet. Change back to the parent directory (cd ..). Next, let’s move some of our files into the repository. Type: $ mv archive hw2-seis665-02-spring2019-<username> $ mv namelist hw2-seis665-02-spring2019-<username> $ mv myfile.conf hw2-seis665-02-spring2019-<username> Hopefully, you remembered to use the auto-complete function to reduce some of that typing. Change to the hw2-seis665-02-spring2019-<username> directory and list the directory contents. Your files are in the working directory, but are not actually stored in the repository because they haven’t been committed yet. Type in: $ git status You should see a list of untracked files. Let’s tell git that we want these files tracked. Type in: $ git add * Now type in the git status command again. Notice how all the files are now being tracked and are ready to be committed. These files are in the git staging area. We’ll commit them to the repository next. Type: $ git commit -m 'assignment 2 files' Next, take a look at the commit log. Type: $ git log You should see your commit listed along with an assigned hash (long string of random-looking characters). Finally, let’s save the repository to our GitHub account. Type in: $ git push origin master The git client will ask you for your GitHub username and password before pushing the repository. Go back to the GitHub.com website and login if you have been logged out. Click on the repository link for the assignment. Do you see your files listed there? Congratulations, you completed the exercise! Terminate server The last step is to terminate your Linux instance. AWS will bill you for every hour the instance is running. The cost is nominal, but there’s no need to rack up unnecessary charges. Here are the steps to terminate your instance: Log into your AWS account and click on the EC2 dashboard. Click the Instances menu item. Select your server in the instances table. Click on the Actions drop down menu above the instances table. Select the Instance State menu option Click on the Terminate action. Your Linux instance will shutdown and disappear in a few minutes. The EC2 dashboard will continue to display the instance on your instance listing for another day or so. However, the state of the instance will be terminated. Submitting your assignment — IMPORTANT! If you haven’t already, please e-mail me your GitHub username in order to receive credit for this assignment. There is no need to email me to tell me that you have committed your work to GitHub or to ask me if your GitHub submission worked. If you can see your work in your GitHub repository, I can see your work.
tillig
Example repo showing one way to get PlantUML diagrams working in Azure DevOps wiki pages.
Viha27
A Devops pipeline is set of automated processes and tools that the development (Dev) and operations (Ops) teams implement to build, test, and deploy software faster and easier. In this course you will complete DevOps pipeline generally consists of a set of tools which are normally broken down into the following categories: Plan Code Integrate Test Release Deploy Operate This learning path will cover: Git is an open-source and distributed version control system. Github is git repository hosting service used for code sharing, bug tracking, feature request and much more. PyCharm is an integrated development environment (IDE) for python programing language. Flask is a python web framework. HTML is the standard markup language for Web pages. CSS is a style sheet language use to style a HTML document. SQLAlchemy is an open-source SQL toolkit and object-relational mapper which gives full power and flexibility of SQL. Selenium is used to automate web browser interaction. Pytest is unit testing framework that allows users to write test codes. Ngrok allows to expose a web server running on your local machine to the internet. Github Action enables you to include Continues Integration (CI) and continuous deployment (CD) capabilities and many other features directly in your repository. Docker is an open source containerization platform enables developers to package applications into containers. Docker Hub is a cloud-based repository for finding and sharing container images with your team. Kubernetes is an open-source container orchestration for automating deployment, scaling, and management of containerized applications. This course is one stop shop where you will learn web development, continuous integration, continuous deployment, containerization, writing neat and quality code, devops concepts and much more with python programing language. What you’ll learn Learn to build Continuous Integration Continuous Deployment pipeline Build CI CD tool to update docker image after any update Learn to create dockerfile Learn the fundamental concepts of Docker Learn the fundamental concepts of Kubernetes Learn to create Kubernetes YAML files Learn to deploy high availability, fault tolerance, scalable application Learn all the basic and advanced git commands Learn different types of branches like master, developer, feature, release and hotfix branch Learn fundamental concepts of Version Control System Learn to use Github actions for CI CD pipeline Learn to build python flask web application Learn to use SQL Alchemy Lean to create HTML pages using HTML, CSS and bootstrap Are there any course requirements or prerequisites? Git installed Docker installed Kubernetes installed Any IDE Github account Docker hub account Who this course is for: Anyone who wants to Enhance their skills in DevOps domain Developers and IT Pros Instructor User photo Pranjal Srivastava Docker | Kubernetes | AWS | Azure | ML | Linux | Python I am an Instructor, Devops engineer, machine learning enthusiast, cloud expert and passionate developer. I have authored 60+ courses with over 50,000+ students worldwide across 175+ countries on wide array of technologies like containerization, machine learning, Linux, programming languages and cloud computing platforms like Microsoft Azure, Amazon Web Service and IBM Cloud.
Buildsoftwaresphere
window.hjSiteSettings = {"forms":[],"record":true,"polls":[],"r":1.0,"record_targeting_rules":[],"deferred_page_contents":[{"targeting":[{"pattern":"http:\/\/www.ibm.com\/cloud-computing\/solutions\/cloud-analytics\/roles\/guided-tour\/marketing+leader\/marketing+leader?role=\/ibm+blue+content\/solutions\/cloud-analytics\/roles\/","match_operation":"simple","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":429895},{"targeting":[{"pattern":"http:\/\/www.ibm.com\/cloud-computing\/solutions\/cloud-analytics\/roles\/guided-tour\/marketing+leader\/marketing+leader?role=\/ibm+blue+content\/solutions\/cloud-analytics\/roles\/","match_operation":"simple","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":429894},{"targeting":[{"pattern":"http:\/\/www.ibm.com\/cloud-computing\/solutions\/cloud-analytics\/roles\/guided-tour\/marketing+leader\/marketing+leader?role=\/ibm+blue+content\/solutions\/cloud-analytics\/roles\/","match_operation":"simple","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":429893},{"targeting":[{"pattern":"https:\/\/www.ibm.com\/marketplace\/cloud\/mobile-push-notifications\/us\/en-us","match_operation":"simple","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":401005},{"targeting":[{"pattern":"https:\/\/www.ibm.com\/marketplace\/cloud\/mobile-push-notifications\/us\/en-us","match_operation":"simple","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":264416},{"targeting":[{"pattern":"https:\/\/www.ibm.com\/marketplace\/cloud\/XConfigureProductView?catalogId=12301&langId=-1&partNumber=DK-D1BCWLL&storeId=18251&ddkey=https%3AXConfigureProduct","match_operation":"exact","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":405647},{"targeting":[{"pattern":"https:\/\/www.ibm.com\/marketplace\/cloud\/XConfigureProductView?catalogId=12301&langId=-1&partNumber=DK-D1BCWLL&storeId=18251&ddkey=https%3AXConfigureProduct","match_operation":"exact","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":269058},{"targeting":[{"pattern":"https:\/\/www.ibm.com\/marketplace\/cloud\/XConfigureProductView?catalogId=12301&langId=-1&partNumber=DK-D1BCWLL&storeId=18251&ddkey=https%3AXConfigureProduct","match_operation":"exact","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":139636},{"targeting":[{"pattern":"http:\/\/ibm.com\/it-infrastructure\/us-en\/","match_operation":"simple","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":365464},{"targeting":[{"pattern":"http:\/\/ibm.com\/it-infrastructure\/us-en\/","match_operation":"simple","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":228875},{"targeting":[{"pattern":"http:\/\/ibm.com\/it-infrastructure\/us-en\/","match_operation":"simple","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":76098},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/us\/en\/partner-landing","match_operation":"simple","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":311181},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/us\/en\/partner-landing","match_operation":"simple","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":174589},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/us\/en\/partner-landing","match_operation":"simple","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":81585},{"targeting":[{"pattern":"http:\/\/ibm.com\/software\/analytics\/spss\/","match_operation":"simple","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":401721},{"targeting":[{"pattern":"http:\/\/ibm.com\/software\/analytics\/spss\/","match_operation":"simple","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":265132},{"targeting":[{"pattern":"http:\/\/ibm.com\/software\/analytics\/spss\/","match_operation":"simple","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":120082},{"targeting":[{"pattern":"http:\/\/ibm.com\/software\/info\/trials\/#all","match_operation":"exact","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":286940},{"targeting":[{"pattern":"http:\/\/ibm.com\/software\/info\/trials\/#all","match_operation":"exact","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":150348},{"targeting":[{"pattern":"http:\/\/ibm.com\/software\/info\/trials\/#all","match_operation":"exact","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":114245},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/bluemix\/solutions\/mobilefirst\/","match_operation":"simple","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":297414},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/bluemix\/solutions\/mobilefirst\/","match_operation":"simple","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":160822},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/bluemix\/solutions\/mobilefirst\/","match_operation":"simple","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":67088},{"targeting":[{"pattern":"http:\/\/ibm.com\/uk-en\/","match_operation":"simple","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":401863},{"targeting":[{"pattern":"http:\/\/ibm.com\/uk-en\/","match_operation":"simple","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":265274},{"targeting":[{"pattern":"http:\/\/ibm.com\/uk-en\/","match_operation":"simple","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":118040},{"targeting":[{"pattern":"http:\/\/ibm.com\/analytics\/watson-analytics\/","match_operation":"simple","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":278677},{"targeting":[{"pattern":"http:\/\/ibm.com\/analytics\/watson-analytics\/","match_operation":"simple","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":142085},{"targeting":[{"pattern":"http:\/\/ibm.com\/analytics\/watson-analytics\/","match_operation":"simple","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":84922},{"targeting":[{"pattern":"http:\/\/ibm.com\/ibmid\/basic_register\/register.html","match_operation":"simple","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":369128},{"targeting":[{"pattern":"http:\/\/ibm.com\/ibmid\/basic_register\/register.html","match_operation":"simple","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":232539},{"targeting":[{"pattern":"http:\/\/ibm.com\/ibmid\/basic_register\/register.html","match_operation":"simple","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":84925},{"targeting":[{"pattern":"http:\/\/ibm.com\/ibm\/puresystems\/us\/en\/hybrid-cloud\/","match_operation":"starts_with","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":364929},{"targeting":[{"pattern":"http:\/\/ibm.com\/ibm\/puresystems\/us\/en\/hybrid-cloud\/","match_operation":"starts_with","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":228340},{"targeting":[{"pattern":"http:\/\/ibm.com\/ibm\/puresystems\/us\/en\/hybrid-cloud\/","match_operation":"starts_with","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":104371},{"targeting":[{"pattern":"http:\/\/ibm.com\/developerworks\/downloads\/","match_operation":"simple","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":308793},{"targeting":[{"pattern":"http:\/\/ibm.com\/developerworks\/downloads\/","match_operation":"simple","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":172201},{"targeting":[{"pattern":"http:\/\/ibm.com\/developerworks\/downloads\/","match_operation":"simple","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":108585},{"targeting":[{"pattern":"http:\/\/ibm.com\/developerworks\/","match_operation":"simple","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":378334},{"targeting":[{"pattern":"http:\/\/ibm.com\/developerworks\/","match_operation":"simple","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":241745},{"targeting":[{"pattern":"http:\/\/ibm.com\/developerworks\/","match_operation":"simple","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":94165},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/XConfigureProductView?trialId=&cm_sp=&catalogId=12301&langId=-1&storeId=18251&partNumber=DK-devWorks-USD&ddkey=http%3AXConfigureProduct#xaddtocart","match_operation":"exact","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":362728},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/XConfigureProductView?trialId=&cm_sp=&catalogId=12301&langId=-1&storeId=18251&partNumber=DK-devWorks-USD&ddkey=http%3AXConfigureProduct#xaddtocart","match_operation":"exact","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":226139},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/XConfigureProductView?trialId=&cm_sp=&catalogId=12301&langId=-1&storeId=18251&partNumber=DK-devWorks-USD&ddkey=http%3AXConfigureProduct#xaddtocart","match_operation":"exact","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":74479},{"targeting":[{"pattern":"http:\/\/ibm.com\/ibm\/puresystems\/us\/en\/hybrid-cloud\/?S_PKG=-&S_TACT=C432013W&campaign=PureApplication%20Tutorial_BR&group=PureApp_BR&mkwid=1af491ed-84fa-9ee8-2a5e-00002588308a&ct=C432013W&iio=PSYS&cmp=C4320&ck=%2Bibm%20pureapplication%20service&cs=b&ccy=US&cr=google&cm=k&cn=PureApp_BR","match_operation":"exact","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":318675},{"targeting":[{"pattern":"http:\/\/ibm.com\/ibm\/puresystems\/us\/en\/hybrid-cloud\/?S_PKG=-&S_TACT=C432013W&campaign=PureApplication%20Tutorial_BR&group=PureApp_BR&mkwid=1af491ed-84fa-9ee8-2a5e-00002588308a&ct=C432013W&iio=PSYS&cmp=C4320&ck=%2Bibm%20pureapplication%20service&cs=b&ccy=US&cr=google&cm=k&cn=PureApp_BR","match_operation":"exact","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":182083},{"targeting":[{"pattern":"http:\/\/ibm.com\/ibm\/puresystems\/us\/en\/hybrid-cloud\/?S_PKG=-&S_TACT=C432013W&campaign=PureApplication%20Tutorial_BR&group=PureApp_BR&mkwid=1af491ed-84fa-9ee8-2a5e-00002588308a&ct=C432013W&iio=PSYS&cmp=C4320&ck=%2Bibm%20pureapplication%20service&cs=b&ccy=US&cr=google&cm=k&cn=PureApp_BR","match_operation":"exact","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":98162},{"targeting":[{"pattern":"http:\/\/ibm.com\/middleware\/en-us\/index.html","match_operation":"simple","component":"url"},{"pattern":"phone","match_operation":"exact","component":"device"}],"id":342862},{"targeting":[{"pattern":"http:\/\/ibm.com\/middleware\/en-us\/index.html","match_operation":"simple","component":"url"},{"pattern":"tablet","match_operation":"exact","component":"device"}],"id":206270},{"targeting":[{"pattern":"http:\/\/ibm.com\/middleware\/en-us\/index.html","match_operation":"simple","component":"url"},{"pattern":"desktop","match_operation":"exact","component":"device"}],"id":64026}],"recording_capture_keystrokes":false,"heatmaps":[{"targeting":[{"pattern":"http:\/\/ibm.com\/us-en\/","match_operation":"simple","component":"url"}],"created_epoch_time":1449854856,"id":280987},{"targeting":[{"pattern":"http:\/\/www.ibm.com\/cloud-computing\/solutions\/cloud-analytics\/roles\/guided-tour\/marketing+leader\/marketing+leader?role=\/ibm+blue+content\/solutions\/cloud-analytics\/roles\/","match_operation":"simple","component":"url"}],"created_epoch_time":1449851023,"id":280857},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1449732051,"id":277453},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-analytics","match_operation":"simple","component":"url"}],"created_epoch_time":1445024270,"id":205800},{"targeting":[{"pattern":"http:\/\/ibm.com\/smarterplanet\/us\/en\/ibmwatson\/clinical-trial-matching.html","match_operation":"simple","component":"url"}],"created_epoch_time":1444498440,"id":198257},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/searchterm\/marketplace\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445963756,"id":217969},{"targeting":[{"pattern":"http:\/\/ibm.com\/industries\/en-us\/","match_operation":"simple","component":"url"}],"created_epoch_time":1442609143,"id":175931},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-security","match_operation":"simple","component":"url"}],"created_epoch_time":1445624017,"id":214289},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-marketing\/web-customer-management","match_operation":"simple","component":"url"}],"created_epoch_time":1445623797,"id":214280},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/platform","match_operation":"simple","component":"url"}],"created_epoch_time":1444836363,"id":202425},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/enterprise-application-integration\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445978090,"id":218378},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/mobile-cloud-computing\/","match_operation":"simple","component":"url"}],"created_epoch_time":1445966539,"id":218056},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/mobile-device-management\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445977976,"id":218374},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-marketing\/digital-experience","match_operation":"simple","component":"url"}],"created_epoch_time":1445623964,"id":214287},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-marketing\/brand-co-creation","match_operation":"simple","component":"url"}],"created_epoch_time":1445623897,"id":214284},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/email-and-social-collaboration\/IBM-verse","match_operation":"simple","component":"url"}],"created_epoch_time":1445966396,"id":218048},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-devops\/hybrid","match_operation":"simple","component":"url"}],"created_epoch_time":1445031997,"id":205969},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-devops\/devops-for-monitoring","match_operation":"simple","component":"url"}],"created_epoch_time":1445031866,"id":205965},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-devops\/docker-cloud","match_operation":"simple","component":"url"}],"created_epoch_time":1445032065,"id":205971},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/community","match_operation":"simple","component":"url"}],"created_epoch_time":1444836530,"id":202437},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/email-and-social-collaboration\/social-business-platform","match_operation":"simple","component":"url"}],"created_epoch_time":1445966451,"id":218051},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-business-solutions","match_operation":"simple","component":"url"}],"created_epoch_time":1445980208,"id":218477},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-devops\/devops-for-fast-apps","match_operation":"simple","component":"url"}],"created_epoch_time":1445031799,"id":205963},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-enterprise-application-infrastructure\/cloud-web-application","match_operation":"simple","component":"url"}],"created_epoch_time":1445451654,"id":211239},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-enterprise-application-infrastructure\/scalable-web-applications","match_operation":"simple","component":"url"}],"created_epoch_time":1445451812,"id":211244},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-enterprise-application-infrastructure\/secure-runtime-environment","match_operation":"simple","component":"url"}],"created_epoch_time":1445451574,"id":211238},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-analytics\/roles","match_operation":"simple","component":"url"}],"created_epoch_time":1448387532,"id":255901},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-analytics\/financial-analytics","match_operation":"simple","component":"url"}],"created_epoch_time":1445030719,"id":205945},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-enterprise-application-infrastructure\/cloud-database-for-web-applications","match_operation":"simple","component":"url"}],"created_epoch_time":1445451861,"id":211246},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-analytics\/marketing-analytics","match_operation":"simple","component":"url"}],"created_epoch_time":1445030131,"id":205934},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-enterprise-application-infrastructure\/wordpress-on-cloud","match_operation":"simple","component":"url"}],"created_epoch_time":1445451735,"id":211241},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-analytics\/risk-analytics","match_operation":"simple","component":"url"}],"created_epoch_time":1445030277,"id":205935},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/email-and-social-collaboration\/business-email","match_operation":"simple","component":"url"}],"created_epoch_time":1445966338,"id":218046},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-enterprise-application-infrastructure\/roles","match_operation":"simple","component":"url"}],"created_epoch_time":1445451934,"id":211249},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-marketing","match_operation":"simple","component":"url"}],"created_epoch_time":1445623744,"id":214276},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/database-management\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445978041,"id":218375},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/process-management-software-in-the-cloud\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445978500,"id":218389},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/services","match_operation":"simple","component":"url"}],"created_epoch_time":1444836458,"id":202429},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/icons","match_operation":"simple","component":"url"}],"created_epoch_time":1448864780,"id":261717},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/hr-cloud","match_operation":"simple","component":"url"}],"created_epoch_time":1445451980,"id":211251},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/it-service-management","match_operation":"simple","component":"url"}],"created_epoch_time":1445453070,"id":211278},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/84","match_operation":"simple","component":"url"}],"created_epoch_time":1445979321,"id":218442},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/built-on-cloud\/saas-security","match_operation":"simple","component":"url"}],"created_epoch_time":1445980311,"id":218480},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/guidance","match_operation":"simple","component":"url"}],"created_epoch_time":1448370513,"id":255152},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/tools","match_operation":"simple","component":"url"}],"created_epoch_time":1448370482,"id":255151},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/industry-federal","match_operation":"simple","component":"url"}],"created_epoch_time":1445980168,"id":218475},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/private-cloud","match_operation":"simple","component":"url"}],"created_epoch_time":1445980054,"id":218470},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-devops","match_operation":"simple","component":"url"}],"created_epoch_time":1445031697,"id":205958},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/statistical-analysis-and-reporting\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1448384669,"id":255784},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-deployment","match_operation":"simple","component":"url"}],"created_epoch_time":1445032408,"id":205976},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/mobile-cloud-computing","match_operation":"simple","component":"url"}],"created_epoch_time":1444925701,"id":204224},{"targeting":[{"pattern":"http:\/\/ibm.com\/products\/en-us\/","match_operation":"simple","component":"url"}],"created_epoch_time":1447897879,"id":248721},{"targeting":[{"pattern":"marketplace\/cloud\/developer","match_operation":"contains","component":"url"}],"created_epoch_time":1448030843,"id":251257},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/what-is-cloud-computing.html","match_operation":"simple","component":"url"}],"created_epoch_time":1445966596,"id":218060},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-marketing\/scale-rewarding-experiences","match_operation":"simple","component":"url"}],"created_epoch_time":1445623835,"id":214282},{"targeting":[{"pattern":"http:\/\/ibm.com\/services\/en-us\/","match_operation":"simple","component":"url"}],"created_epoch_time":1442609125,"id":175930},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-security\/security-for-application-development","match_operation":"simple","component":"url"}],"created_epoch_time":1445624103,"id":214290},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/site","match_operation":"simple","component":"url"}],"created_epoch_time":1448370405,"id":255147},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/consulting","match_operation":"simple","component":"url"}],"created_epoch_time":1445979880,"id":218467},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/email-and-social-collaboration","match_operation":"simple","component":"url"}],"created_epoch_time":1445625687,"id":214315},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/partner-landing","match_operation":"simple","component":"url"}],"created_epoch_time":1445980347,"id":218481},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/big-data-cloud\/daas-database-as-a-service","match_operation":"simple","component":"url"}],"created_epoch_time":1445031541,"id":205956},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/watson-analytics\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1447176184,"id":236325},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/business-email-platform\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445977806,"id":218366},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/big-data-cloud","match_operation":"simple","component":"url"}],"created_epoch_time":1445030966,"id":205949},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/infrastructure","match_operation":"simple","component":"url"}],"created_epoch_time":1444836224,"id":202421},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/cloud-platform\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445011564,"id":205613},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/built-on-cloud","match_operation":"simple","component":"url"}],"created_epoch_time":1444836495,"id":202432},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-enterprise-application-infrastructure","match_operation":"simple","component":"url"}],"created_epoch_time":1445032990,"id":205986},{"targeting":[{"pattern":"http:\/\/ibm.com\/smarterplanet\/us\/en\/ibmwatson\/discovery-advisor.html","match_operation":"simple","component":"url"}],"created_epoch_time":1444498155,"id":198254},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-security\/managed-hosted-security-services","match_operation":"simple","component":"url"}],"created_epoch_time":1445979811,"id":218463},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-security\/mobile-and-endpoint-security","match_operation":"simple","component":"url"}],"created_epoch_time":1445624163,"id":214291},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/external-links","match_operation":"simple","component":"url"}],"created_epoch_time":1448864680,"id":261712},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/menu-navigation","match_operation":"simple","component":"url"}],"created_epoch_time":1448864912,"id":261723},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/tabs-navigation","match_operation":"simple","component":"url"}],"created_epoch_time":1448865131,"id":261731},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/full-width-sections","match_operation":"simple","component":"url"}],"created_epoch_time":1448864735,"id":261715},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/hybrid-integration","match_operation":"simple","component":"url"}],"created_epoch_time":1445452746,"id":211267},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-deployment\/managed-sap","match_operation":"simple","component":"url"}],"created_epoch_time":1445032474,"id":205978},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/hybrid-integration\/api-management-on-cloud","match_operation":"simple","component":"url"}],"created_epoch_time":1445452802,"id":211269},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/guidance\/third-party","match_operation":"simple","component":"url"}],"created_epoch_time":1448866307,"id":261754},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/it-service-management\/it-help-desk-software","match_operation":"simple","component":"url"}],"created_epoch_time":1445623652,"id":214273},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/application-performance-management\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445978245,"id":218382},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/guidance\/newsletters\/issue-2015-11","match_operation":"simple","component":"url"}],"created_epoch_time":1448866036,"id":261743},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/guidance\/color-palette","match_operation":"simple","component":"url"}],"created_epoch_time":1448866223,"id":261750},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/guidance\/design-checklist","match_operation":"simple","component":"url"}],"created_epoch_time":1448866063,"id":261744},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/built-on-cloud\/saas-migration","match_operation":"simple","component":"url"}],"created_epoch_time":1445980249,"id":218478},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/video","match_operation":"simple","component":"url"}],"created_epoch_time":1448865176,"id":261733},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/bare-metal-server\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1444925068,"id":204211},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/overlays","match_operation":"simple","component":"url"}],"created_epoch_time":1448864936,"id":261724},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/parallax","match_operation":"simple","component":"url"}],"created_epoch_time":1448864989,"id":261726},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns","match_operation":"simple","component":"url"}],"created_epoch_time":1448370460,"id":255149},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/footers","match_operation":"simple","component":"url"}],"created_epoch_time":1448864706,"id":261714},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/mastheads","match_operation":"simple","component":"url"}],"created_epoch_time":1448864890,"id":261722},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/it-service-management\/hybrid-cloud-application-performance-management","match_operation":"simple","component":"url"}],"created_epoch_time":1445453176,"id":211280},{"targeting":[{"pattern":"http:\/\/ibm.com\/middleware\/integration\/us-en\/api-economy\/index.html","match_operation":"simple","component":"url"}],"created_epoch_time":1447778073,"id":246054},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/operational-decision-management\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445977569,"id":218362},{"targeting":[{"pattern":"https:\/\/www.ibm.com\/marketplace\/cloud\/mobile-push-notifications\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1449597139,"id":274786},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/workload-automation\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445978443,"id":218385},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/open-cloud","match_operation":"simple","component":"url"}],"created_epoch_time":1445980099,"id":218472},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/show-hide","match_operation":"simple","component":"url"}],"created_epoch_time":1448865108,"id":261730},{"targeting":[{"pattern":"https:\/\/www.ibm.com\/marketplace\/cloud\/XConfigureProductView?catalogId=12301&langId=-1&partNumber=DK-D1BCWLL&storeId=18251&ddkey=https%3AXConfigureProduct","match_operation":"exact","component":"url"}],"created_epoch_time":1449605878,"id":274965},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/buttons","match_operation":"simple","component":"url"}],"created_epoch_time":1448864554,"id":261707},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/select-list-navigation","match_operation":"simple","component":"url"}],"created_epoch_time":1448865067,"id":261729},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/pagination-controls","match_operation":"simple","component":"url"}],"created_epoch_time":1448864962,"id":261725},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/2860","match_operation":"simple","component":"url"}],"created_epoch_time":1445979070,"id":218425},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/guidance\/css3","match_operation":"simple","component":"url"}],"created_epoch_time":1448866197,"id":261749},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/hr-cloud\/talent-acquisition","match_operation":"starts_with","component":"url"}],"created_epoch_time":1445452558,"id":211261},{"targeting":[{"pattern":"http:\/\/ibm.com\/","match_operation":"simple","component":"url"}],"created_epoch_time":1447427937,"id":241687},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/hybrid-cloud","match_operation":"simple","component":"url"}],"created_epoch_time":1445979738,"id":218461},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/mobile-cloud-computing","match_operation":"starts_with","component":"url"}],"created_epoch_time":1445358297,"id":209427},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/breadcrumbs","match_operation":"simple","component":"url"}],"created_epoch_time":1448864524,"id":261706},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/live-chat","match_operation":"simple","component":"url"}],"created_epoch_time":1448864837,"id":261720},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-analytics\/roles\/guided-tour\/marketing+leader\/marketing+leader?role=\/ibm+blue+content\/solutions\/cloud-analytics\/roles\/","match_operation":"exact","component":"url"}],"created_epoch_time":1448387943,"id":255907},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/guidance\/seo","match_operation":"simple","component":"url"}],"created_epoch_time":1448866099,"id":261746},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-deployment\/enterprise-apps","match_operation":"simple","component":"url"}],"created_epoch_time":1445032862,"id":205985},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/scrollbar-widget","match_operation":"simple","component":"url"}],"created_epoch_time":1448865036,"id":261728},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/it-service-management\/automated-it-management","match_operation":"simple","component":"url"}],"created_epoch_time":1445623699,"id":214275},{"targeting":[{"pattern":"http:\/\/ibm.com\/it-infrastructure\/us-en\/","match_operation":"simple","component":"url"}],"created_epoch_time":1445548313,"id":213034},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/big-data-cloud\/data-management","match_operation":"starts_with","component":"url"}],"created_epoch_time":1445376304,"id":209893},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/api-management-on-cloud\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1444926232,"id":204232},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/guidance\/html5","match_operation":"simple","component":"url"}],"created_epoch_time":1448866141,"id":261747},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/internet-of-things\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445978182,"id":218381},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/us\/en\/partner-landing","match_operation":"simple","component":"url"}],"created_epoch_time":1445978694,"id":218402},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/pull-quotes","match_operation":"simple","component":"url"}],"created_epoch_time":1448865012,"id":261727},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/online-meetings\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445978616,"id":218397},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/itsm\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445978565,"id":218394},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/bluemix\/case-study\/","match_operation":"starts_with","component":"url"}],"created_epoch_time":1443130751,"id":182007},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/2014","match_operation":"simple","component":"url"}],"created_epoch_time":1445979366,"id":218443},{"targeting":[{"pattern":"http:\/\/ibm.com\/software\/analytics\/spss\/","match_operation":"simple","component":"url"}],"created_epoch_time":1448387195,"id":255898},{"targeting":[{"pattern":"http:\/\/ibm.com\/software\/info\/trials\/#all","match_operation":"exact","component":"url"}],"created_epoch_time":1447965036,"id":250198},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/hr-cloud\/hr-employee-engagement","match_operation":"simple","component":"url"}],"created_epoch_time":1445452671,"id":211266},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/bluemix\/garage\/","match_operation":"starts_with","component":"url"}],"created_epoch_time":1443130802,"id":182008},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/spss-statistics\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445977739,"id":218364},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/bluemix\/solutions\/mobilefirst\/","match_operation":"simple","component":"url"}],"created_epoch_time":1444926095,"id":204230},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/3450","match_operation":"simple","component":"url"}],"created_epoch_time":1445978858,"id":218416},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/4327","match_operation":"simple","component":"url"}],"created_epoch_time":1445979566,"id":218451},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/247","match_operation":"simple","component":"url"}],"created_epoch_time":1445979469,"id":218447},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/locale-selector","match_operation":"simple","component":"url"}],"created_epoch_time":1448864861,"id":261721},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/2959","match_operation":"simple","component":"url"}],"created_epoch_time":1445979115,"id":218428},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/big-data-cloud\/big-data-cloud-analytics","match_operation":"simple","component":"url"}],"created_epoch_time":1445031103,"id":205951},{"targeting":[{"pattern":"http:\/\/ibm.com\/uk-en\/","match_operation":"simple","component":"url"}],"created_epoch_time":1448293878,"id":253908},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/3792","match_operation":"simple","component":"url"}],"created_epoch_time":1445979611,"id":218453},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/bare-metal-server\/us\/en-us#pdpPurchasing","match_operation":"exact","component":"url"}],"created_epoch_time":1444925188,"id":204215},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/bluemix\/index.html","match_operation":"simple","component":"url"}],"created_epoch_time":1443711432,"id":188589},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/3526","match_operation":"simple","component":"url"}],"created_epoch_time":1445978808,"id":218412},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/Enterprise-Instant-Messaging\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445977357,"id":218357},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/3400","match_operation":"simple","component":"url"}],"created_epoch_time":1445979278,"id":218439},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/guidance\/naming-policy","match_operation":"simple","component":"url"}],"created_epoch_time":1448866396,"id":261763},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/hybrid-integration\/microservices","match_operation":"simple","component":"url"}],"created_epoch_time":1445453008,"id":211277},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/date-time","match_operation":"simple","component":"url"}],"created_epoch_time":1448864654,"id":261710},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/carousels","match_operation":"simple","component":"url"}],"created_epoch_time":1448864596,"id":261708},{"targeting":[{"pattern":"http:\/\/ibm.com\/analytics\/watson-analytics\/","match_operation":"simple","component":"url"}],"created_epoch_time":1446149587,"id":221624},{"targeting":[{"pattern":"http:\/\/ibm.com\/ibmid\/basic_register\/register.html","match_operation":"simple","component":"url"}],"created_epoch_time":1446149675,"id":221627},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-analytics\/cloud-sales-performance-management","match_operation":"starts_with","component":"url"}],"created_epoch_time":1445030438,"id":205937},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/3349","match_operation":"simple","component":"url"}],"created_epoch_time":1445978749,"id":218406},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/Process-modeling-in-the-cloud\/us\/en-us","match_operation":"simple","component":"url"}],"created_epoch_time":1445978380,"id":218383},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/guidance\/co-branding","match_operation":"simple","component":"url"}],"created_epoch_time":1448866273,"id":261752},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/2235","match_operation":"simple","component":"url"}],"created_epoch_time":1445979423,"id":218445},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/guidance\/migration-of-acquisitions","match_operation":"simple","component":"url"}],"created_epoch_time":1448866338,"id":261758},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/anchor-links","match_operation":"simple","component":"url"}],"created_epoch_time":1448864497,"id":261705},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/1351","match_operation":"simple","component":"url"}],"created_epoch_time":1445979510,"id":218449},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/4414","match_operation":"simple","component":"url"}],"created_epoch_time":1445979216,"id":218436},{"targeting":[{"pattern":"http:\/\/ibm.com\/ibm\/puresystems\/us\/en\/hybrid-cloud\/","match_operation":"starts_with","component":"url"}],"created_epoch_time":1447366892,"id":240564},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-deployment\/sap-hana","match_operation":"simple","component":"url"}],"created_epoch_time":1445032765,"id":205983},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/hr-cloud\/learning-and-development","match_operation":"simple","component":"url"}],"created_epoch_time":1445452082,"id":211253},{"targeting":[{"pattern":"http:\/\/ibm.com\/developerworks\/","match_operation":"simple","component":"url"}],"created_epoch_time":1446753222,"id":230599},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/cloud\/cloud-platform\/pr\/en-pr","match_operation":"simple","component":"url"}],"created_epoch_time":1445011666,"id":205615},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/cloud-deployment\/self-managed-sap","match_operation":"simple","component":"url"}],"created_epoch_time":1445032808,"id":205984},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/contact-module","match_operation":"simple","component":"url"}],"created_epoch_time":1448864624,"id":261709},{"targeting":[{"pattern":"http:\/\/ibm.com\/marketplace\/next\/2154","match_operation":"simple","component":"url"}],"created_epoch_time":1445979174,"id":218433},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/guidance\/mobile-web","match_operation":"simple","component":"url"}],"created_epoch_time":1448866166,"id":261748},{"targeting":[{"pattern":"http:\/\/ibm.com\/cloud-computing\/solutions\/hybrid-integration\/secure-gateway","match_operation":"simple","component":"url"}],"created_epoch_time":1445452942,"id":211274},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/horizontal_rules","match_operation":"simple","component":"url"}],"created_epoch_time":1448864758,"id":261716},{"targeting":[{"pattern":"http:\/\/ibm.com\/ibm\/puresystems\/us\/en\/hybrid-cloud\/?S_PKG=-&S_TACT=C432013W&campaign=PureApplication%20Tutorial_BR&group=PureApp_BR&mkwid=1af491ed-84fa-9ee8-2a5e-00002588308a&ct=C432013W&iio=PSYS&cmp=C4320&ck=%2Bibm%20pureapplication%20service&cs=b&ccy=US&cr=google&cm=k&cn=PureApp_BR","match_operation":"exact","component":"url"}],"created_epoch_time":1447086616,"id":234505},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/tooltip","match_operation":"simple","component":"url"}],"created_epoch_time":1448865157,"id":261732},{"targeting":[{"pattern":"http:\/\/ibm.com\/standards\/web\/patterns\/left-navigation","match_operation":"simple","component":"url"}],"created_epoch_time":1448864811,"id":261719},{"targeting":[{"pattern":"http:\/\/ibm.com\/middleware\/en-us\/index.html","match_operation":"simple","component":"url"}],"created_epoch_time":1444763322,"id":201250}],"surveys":[],"testers_widgets":[]}; (function(){window.hj=window.hj||function(){(window.hj.q=window.hj.q||[]).push(arguments)};hj.logException=function(t,a){var b="undefined"!==typeof hj.log?hj.log.debug:function(){},c,g;try{c={"http:":12080,"https:":12443}[location.protocol],g={message:t?t.toString():"<unknown>",url:location.href,data:"object"===typeof a?hj.json.stringify(a):a},b(g),hj.hq.ajax({url:"//graylog.hotjar.com:"+c+"/gelf",type:"POST",data:hj.json.stringify(g)})}catch(d){b("Failed to log exception: "+d)}};hj.testException= function(){try{"test".push([])}catch(t){hj.logException(t)}};hj.testExceptionWithData=function(){try{"test".push([])}catch(t){hj.logException(t,{foo:"bar"})}}})(); try{(function(t,a){var b;b=function(a){return new c(a)};b.isEmptyObject=function(a){return Object.keys(a).length?!1:!0};b.isFunction=function(a){return"function"===typeof a};b.isWindow=function(a){return a===window};b.isDocument=function(a){return a===window.document};b.noop=function(){};b.each=function(a,d){var b,c;if("object"===typeof a&&"[object Array]"!==Object.prototype.toString.call(a))if((c=a[Object.keys(a)[0]])&&void 0!==c.nodeName)for(b in a){if(a.hasOwnProperty(b)&&"length"!==b&&!1===d(b, a[b],a))break}else for(b in a){if(a.hasOwnProperty(b)&&!1===d(b,a[b],a))break}else for(b=0;b<a.length&&!1!==d(b,a[b],a);b+=1);};b.trim=function(a){return"string"===typeof a?a.replace(/^\s+|\s+$/gm,""):""};b.inArray=function(a,d){var b=d.indexOf(a);return"undefined"===typeof b||-1===b?!1:!0};b.indexOf=function(a,d){var b=d.indexOf(a);return"undefined"!==typeof b?b:-1};b.ajax=function(a){try{var d=new XMLHttpRequest;a.type=a.type||"GET";d.open(a.type,a.url,!0);"POST"===a.type&&d.setRequestHeader("Content-Type", (a.contentType?a.contentType:"application/x-www-form-urlencoded")+"; charset=UTF-8");d.onload=function(){200<=d.status&&400>d.status?b.isFunction(a.success)&&a.success(d.responseText&&hj.json.parse(d.responseText),d):b.isFunction(a.error)&&a.error(d)};d.onerror=function(){b.isFunction(a.error)&&a.error(d)};b.isFunction(a.requestAnnotator)&&a.requestAnnotator(d);"POST"===a.type&&a.data?d.send(a.data):d.send()}catch(c){hj.logException(c,{settings:a})}};b.get=function(a,d){var b=new XMLHttpRequest;b.open("GET", a,!0);b.onload=function(){200<=b.status&&400>b.status&&d&&d(b.responseText)};b.send()};b.eventHandlers={};b.selector="";var c=function(g){var d;b.selector=g;if(b.isWindow(g))this[0]=window,this.length=1;else if(b.isDocument(g))this[0]=a,this.length=1;else if("object"===typeof g)this[0]=g,this.length=1;else if("string"===typeof g&&"<"===g.charAt(0)&&">"===g.charAt(g.length-1)&&3<=g.length)d=a.createElement("div"),d.innerHTML=g,this[0]=d.childNodes[0],this.length=1;else if(g){if(!isNaN(g.charAt(1))&& ("."===g.charAt(0)||"#"===g.charAt(0)))g=g.charAt(0)+"\\3"+g.charAt(1)+" "+g.slice(2);try{a.querySelectorAll(g)}catch(c){return this.length=0,this}g=a.querySelectorAll(g);for(d=0;d<g.length;d+=1)this[d]=g[d];this.length=g.length}return this};c.prototype.val=function(a){"undefined"!==typeof a&&0<this.length&&(this[0].value=a);if(void 0!==this[0])return this[0]?this[0].value:""};c.prototype.text=function(a){return void 0===a?this[0].textContent:this[0].textContent=a};c.prototype.each=function(a,b){Array.prototype.forEach.call(this, function(a,g,n){b(g,a,n)})};c.prototype.append=function(g){var d;"object"===typeof g?"body"===b.selector?a.body.appendChild(g.get(0)):this[0].appendChild(g.get(0)):"body"===b.selector?(d=a.createElement("div"),d.innerHTML=g,a.body.appendChild(d)):(d=a.createElement("div"),d.innerHTML=g,this[0].appendChild(d))};c.prototype.hasClass=function(a){return this[0].classList?this[0].classList.contains(a):RegExp("(^| )"+a+"( |$)","gi").test(this[0].className)};c.prototype.addClass=function(a){var b;for(b= 0;b<this.length;b+=1)this[b].classList?this[b].classList.add(a):this[b].className+=" "+a;return this};c.prototype.removeClass=function(a){var b;for(b=0;b<this.length;b+=1)this[b].classList?this[b].classList.remove(a):this[b].className=this[b].className.replace(RegExp("(^|\\b)"+a.split(" ").join("|")+"(\\b|$)","gi")," ");return this};c.prototype.toggleClass=function(a){var b;for(b=0;b<this.length;b+=1)this[b].classList?this[b].classList.contains(a)?this[b].classList.remove(a):this[b].classList.add(a): RegExp("(^| )"+a+"( |$)","gi").test(this[0].className)?this[b].className=this[b].className.replace(RegExp("(^|\\b)"+a.split(" ").join("|")+"(\\b|$)","gi")," "):this[b].className+=" "+a;return this};c.prototype.is=function(a){var b;a:{b=this[0];var c=b.matchesSelector||b.msMatchesSelector||b.mozMatchesSelector||b.webkitMatchesSelector||b.oMatchesSelector;if(c)b=c.call(b,a);else{a=b.parentNode.querySelectorAll(a);for(c=a.length;c-=1;)if(a[c]===b){b=!0;break a}b=!1}}return b};c.prototype.remove=function(){var a; for(a=0;a<this.length;a+=1)this[a].parentNode.removeChild(this[a])};c.prototype.click=function(b){var d;for(d=0;d<this.length;d+=1)event=a.createEvent("HTMLEvents"),event.initEvent("click",!0,!1),this[d].dispatchEvent(event),b&&b()};c.prototype.trigger=function(b){var d,c=b.split(" "),k;for(b=0;b<this.length;b+=1)for(d=0;d<c.length;d+=1)k=a.createEvent("HTMLEvents"),k.initEvent(c[d],!0,!1),this[b].dispatchEvent(k)};c.prototype.on=function(g,d,c){var k,n=g.split(" "),q,l,f,p,h,F;if(b.isDocument(this[0])&& "string"===typeof d)for(g=0;g<n.length;g+=1)"string"===typeof d?("boolean"===typeof c&&!1===c&&(c=function(a){a.preventDefault();return!1}),q=d+"."+n[g],l=function(b){if(f=a.querySelectorAll(d)){p=b.target;for(h=-1;p&&-1===(h=Array.prototype.indexOf.call(f,p));)p=p.parentElement;-1<h&&c.call(p,b)}},"array"!==typeof b.eventHandlers[q]&&(b.eventHandlers[q]=[]),b.eventHandlers[q].push(l),a.addEventListener(n[g].split(".")[0],l,!0)):("boolean"===typeof d&&!1===d&&(d=function(a){a.preventDefault();return!1}), "array"!==typeof b.eventHandlers.document&&(b.eventHandlers.document=[]),b.eventHandlers.document.push(d),this[0].addEventListener(n[g].split(".")[0],d,!1));else if(b.isDocument(this[0]))for(g=0;g<n.length;g+=1)"boolean"===typeof d&&!1===d&&(d=function(a){a.preventDefault();return!1}),q="document."+n[g],"array"!==typeof b.eventHandlers[q]&&(b.eventHandlers[q]=[]),b.eventHandlers[q].push(d),a.addEventListener(n[g].split(".")[0],d,!1);else if(b.isWindow(this[0]))for(g=0;g<n.length;g+=1)"boolean"=== typeof d&&!1===d&&(d=function(a){a.preventDefault();return!1}),q="window."+n[g],"array"!==typeof b.eventHandlers[q]&&(b.eventHandlers[q]=[]),b.eventHandlers[q].push(d),window.addEventListener(n[g].split(".")[0],d,!1);else for(k=0;k<this.length;k+=1)for(g=0;g<n.length;g+=1)"object"===typeof d?(F=d,d=function(a){a.data=F;c.call(this[k],a)}):"boolean"===typeof d&&!1===d&&(d=function(a){a.preventDefault();return!1}),q=b.selector+"."+n[g],"array"!==typeof b.eventHandlers[q]&&(b.eventHandlers[q]=[]),b.eventHandlers[q].push(d), this[k].addEventListener(n[g].split(".")[0],d,!1);return this};c.prototype.off=function(g,c,m){var k,n,q=g.split(" ");for(g=0;g<this.length;g+=1)for(k=0;k<q.length;k+=1)if(b.isDocument(this[g])&&"string"===typeof c)if("undefined"===typeof m){if("object"===typeof b.eventHandlers[c+"."+q[k]])for(n=0;n<b.eventHandlers[c+"."+q[k]].length;n+=1)a.removeEventListener(q[k].split(".")[0],b.eventHandlers[c+"."+q[k]][n],!0)}else a.removeEventListener(q[k].split(".")[0],m,!1);else if(b.isDocument(this[g]))if("undefined"=== typeof c){if("object"===typeof b.eventHandlers["document."+q[k]])for(n=0;n<b.eventHandlers["document."+q[k]].length;n+=1)a.removeEventListener(q[k].split(".")[0],b.eventHandlers["document."+q[k]][n],!1)}else a.removeEventListener(q[k].split(".")[0],c,!1);else if(b.isWindow(this[g]))if("undefined"===typeof c){if("object"===typeof b.eventHandlers["window."+q[k]])for(n=0;n<b.eventHandlers["window."+q[k]].length;n+=1)window.removeEventListener(q[k].split(".")[0],b.eventHandlers["window."+q[k]][n],!1)}else window.removeEventListener(q[k].split(".")[0], c,!1);else if("undefined"===typeof c){if("object"===typeof b.eventHandlers[b.selector+"."+q[k]])for(n=0;n<b.eventHandlers[b.selector+"."+q[k]].length;n+=1)this[g].removeEventListener(q[k].split(".")[0],b.eventHandlers[b.selector+"."+q[k]][n],!1)}else this[g].removeEventListener(q[k].split(".")[0],c,!1);return this};c.prototype.scrollTop=function(){return window.document.body.scrollTop||window.document.documentElement.scrollTop};c.prototype.height=function(){var g;return b.isWindow(this[0])?a.documentElement.clientHeight: 9===this[0].nodeType?(g=this[0].documentElement,Math.max(this[0].body.scrollHeight,g.scrollHeight,this[0].body.offsetHeight,g.offsetHeight,g.clientHeight)):Math.max(this[0].scrollHeight,this[0].offsetHeight)};c.prototype.width=function(){var g;return b.isWindow(this[0])?a.documentElement.clientWidth:9===this[0].nodeType?(g=this[0].documentElement,Math.max(this[0].body.scrollWidth,g.scrollWidth,this[0].body.offsetWidth,g.offsetWidth,g.clientWidth)):Math.max(this[0].scrollWidth,this[0].offsetWidth)}; c.prototype.outerHeight=function(){return this[0].offsetHeight};c.prototype.offset=function(){var a=(this[0]&&this[0].ownerDocument).documentElement;return{top:this[0].getBoundingClientRect().top+window.pageYOffset-a.clientTop,left:this[0].getBoundingClientRect().left+window.pageXOffset-a.clientLeft}};c.prototype.attr=function(a,b){var c;if(b||""===b){for(c=0;c<this.length;c+=1)this[c].setAttribute(a,b);return this}if(null!==this[0].getAttribute(a))return this[0].getAttribute(a)};c.prototype.ready= function(c){b.isDocument(this[0])&&("interactive"===a.readyState||"complete"===a.readyState||"loaded"===a.readyState?c():a.addEventListener("DOMContentLoaded",c,!1))};c.prototype.parent=function(){return b(this[0].parentNode)};c.prototype.get=function(a){return this[a]};c.prototype.show=function(){var a;for(a=0;a<this.length;a+=1)this[a].style.display="";return this};c.prototype.hide=function(){var a;for(a=0;a<this.length;a+=1)this[a].style.display="none";return this};c.prototype.focus=function(){var a; for(a=0;a<this.length;a+=1)this[a].focus();return this};c.prototype.blur=function(){var a;for(a=0;a<this.length;a+=1)this[a].blur();return this};c.prototype.clone=function(){return this[0].cloneNode(!0)};c.prototype.removeAttr=function(a){var b;for(b=0;b<this.length;b+=1)this[b].removeAttribute(a);return this};c.prototype.find=function(a){var c=b(),m;try{m=this[0].querySelectorAll(a)}catch(k){return this.length=0,this}for(a=0;a<m.length;a+=1)c[a]=m[a];c.length=m.length;return c};c.prototype.is=function(a){var c, m=!1;if(!a)return!1;if("object"===typeof a)return b(this[0]).get(0)===a.get(0);if("string"===typeof a){if(":visible"===a)return!(0>=this[0].offsetWidth&&0>=this[0].offsetHeight);if(":hidden"===a)return 0>=this[0].offsetWidth&&0>=this[0].offsetHeight;if(":checked"===a)return this[0].checked;if(-1<a.indexOf("[")){if(c=/([A-Za-z]+)\[([A-Za-z-]+)\=([A-Za-z]+)\]/g.exec(a),c.length)return b.each(b(this[0]).get(0).attributes,function(a,b){b.name===c[2]&&b.value===c[3]&&(m=!0)}),b(this[0]).get(0).nodeName.toLowerCase()=== c[1]&&m}else return b(this[0]).get(0).nodeName.toLowerCase()===a}};c.prototype.css=function(a,b){var c,k;for(k=0;k<this.length;k+=1)if("object"===typeof a)for(c in a)this[k].style[c]=a[c];else if("number"===typeof b||"string"===typeof b)this[k].style[a]=b;else return getComputedStyle(this[k])[a];return this};c.prototype.animate=function(a,c){var m,k=this;"undefined"===typeof c&&(c=400);for(m=0;m<k.length;m+=1)b.each(a,function(a,b){function l(a,b){a.style[b[0].attribute]=b[0].value;b.shift();b.length? u=setTimeout(function(){l(a,b)},10):clearTimeout(u)}b=b.toString();var f=parseFloat(getComputedStyle(k[m])[a])||0,p=getComputedStyle(k[m])[a].replace(/[0-9.-]/g,""),h=parseFloat(b),g=b.replace(/[0-9.-]/g,""),p=p||g,y=h-f,g=parseFloat(c/10),y=y/g,v=[],x,u;for(x=0;x<g;x+=1)f+=y,v.push({attribute:a,value:p?parseInt(f)+p:parseFloat(f).toFixed(1)});v.pop();v.push({attribute:a,value:h+p});v.length&&l(k[m],v)});return this};c.prototype.filter=function(c){return Array.prototype.filter.call(a.querySelectorAll(b.selector), function(a,b){c(b,a)})};t.hj=t.hj||{};t.hj.hq=t.hj.hq||b})(this,document)}catch(exception$$4){hj.logException(exception$$4)} (function(){var t=null;hj.fingerprinter=function(a){this.options=this.extend(a,{sortPluginsFor:[/palemoon/i]});this.nativeForEach=Array.prototype.forEach;this.nativeMap=Array.prototype.map};hj.fingerprinter.prototype={extend:function(a,b){if(null==a)return b;for(var c in a)null!=a[c]&&b[c]!==a[c]&&(b[c]=a[c]);return b},log:function(a){window.console&&console.log(a)},get:function(){var a=[];null===t&&(a=this.userAgentKey(a),a=this.languageKey(a),a=this.colorDepthKey(a),a=this.screenResolutionKey(a), a=this.timezoneOffsetKey(a),a=this.sessionStorageKey(a),a=this.localStorageKey(a),a=this.indexedDbKey(a),a=this.addBehaviorKey(a),a=this.openDatabaseKey(a),a=this.cpuClassKey(a),a=this.platformKey(a),a=this.doNotTrackKey(a),a=this.pluginsKey(a),a=this.adBlockKey(a),a=this.hasLiedLanguagesKey(a),a=this.hasLiedResolutionKey(a),a=this.hasLiedOsKey(a),a=this.hasLiedBrowserKey(a),a=this.touchSupportKey(a),t=this.x64hash128(a.join("~~~"),31));return t},getAsNumber:function(){var a,b;a=parseInt(this.get().slice(-10), 16);b=Math.pow(2,40);return a/b},compareRatio:function(a,b){return this.getAsNumber()*(b?100:1)<=a},userAgentKey:function(a){a.push(navigator.userAgent);return a},languageKey:function(a){a.push(navigator.language);return a},colorDepthKey:function(a){a.push(screen.colorDepth);return a},screenResolutionKey:function(a){return this.getScreenResolution(a)},getScreenResolution:function(a){var b,c;b=this.options.detectScreenOrientation?screen.height>screen.width?[screen.height,screen.width]:[screen.width, screen.height]:[screen.height,screen.width];"undefined"!==typeof b&&a.push(b);screen.availWidth&&screen.availHeight&&(c=this.options.detectScreenOrientation?screen.availHeight>screen.availWidth?[screen.availHeight,screen.availWidth]:[screen.availWidth,screen.availHeight]:[screen.availHeight,screen.availWidth]);"undefined"!==typeof c&&a.push(c);return a},timezoneOffsetKey:function(a){a.push((new Date).getTimezoneOffset());return a},sessionStorageKey:function(a){this.hasSessionStorage()&&a.push("sessionStorageKey"); return a},localStorageKey:function(a){this.hasLocalStorage()&&a.push("localStorageKey");return a},indexedDbKey:function(a){this.hasIndexedDB()&&a.push("indexedDbKey");return a},addBehaviorKey:function(a){document.body&&document.body.addBehavior&&a.push("addBehaviorKey");return a},openDatabaseKey:function(a){window.openDatabase&&a.push("openDatabase");return a},cpuClassKey:function(a){a.push(this.getNavigatorCpuClass());return a},platformKey:function(a){a.push(this.getNavigatorPlatform());return a}, doNotTrackKey:function(a){a.push(this.getDoNotTrack());return a},adBlockKey:function(a){a.push(this.getAdBlock());return a},hasLiedLanguagesKey:function(a){a.push(this.getHasLiedLanguages());return a},hasLiedResolutionKey:function(a){a.push(this.getHasLiedResolution());return a},hasLiedOsKey:function(a){a.push(this.getHasLiedOs());return a},hasLiedBrowserKey:function(a){a.push(this.getHasLiedBrowser());return a},pluginsKey:function(a){this.isIE()?a.push(this.getIEPluginsString()):a.push(this.getRegularPluginsString()); return a},getRegularPluginsString:function(){for(var a=[],b=0,c=navigator.plugins.length;b<c;b++)a.push(navigator.plugins[b]);this.pluginsShouldBeSorted()&&(a=a.sort(function(a,b){return a.name>b.name?1:a.name<b.name?-1:0}));return this.map(a,function(a){var b=this.map(a,function(a){return[a.type,a.suffixes].join("~")}).join(",");return[a.name,a.description,b].join("::")},this).join(";")},getIEPluginsString:function(){return window.ActiveXObject?this.map("AcroPDF.PDF;Adodb.Stream;AgControl.AgControl;DevalVRXCtrl.DevalVRXCtrl.1;MacromediaFlashPaper.MacromediaFlashPaper;Msxml2.DOMDocument;Msxml2.XMLHTTP;PDF.PdfCtrl;QuickTime.QuickTime;QuickTimeCheckObject.QuickTimeCheck.1;RealPlayer;RealPlayer.RealPlayer(tm) ActiveX Control (32-bit);RealVideo.RealVideo(tm) ActiveX Control (32-bit);Scripting.Dictionary;SWCtl.SWCtl;Shell.UIHelper;ShockwaveFlash.ShockwaveFlash;Skype.Detection;TDCCtl.TDCCtl;WMPlayer.OCX;rmocx.RealPlayer G2 Control;rmocx.RealPlayer G2 Control.1".split(";"), function(a){try{return new ActiveXObject(a),a}catch(b){return null}}).join(";"):""},pluginsShouldBeSorted:function(){for(var a=!1,b=0,c=this.options.sortPluginsFor.length;b<c;b++)if(navigator.userAgent.match(this.options.sortPluginsFor[b])){a=!0;break}return a},touchSupportKey:function(a){a.push(this.getTouchSupport());return a},hasSessionStorage:function(){try{return!!window.sessionStorage}catch(a){return!0}},hasLocalStorage:function(){try{return!!window.localStorage}catch(a){return!0}},hasIndexedDB:function(){return!!window.indexedDB}, getNavigatorCpuClass:function(){return navigator.cpuClass?"navigatorCpuClass: "+navigator.cpuClass:"navigatorCpuClass: unknown"},getNavigatorPlatform:function(){return navigator.platform?"navigatorPlatform: "+navigator.platform:"navigatorPlatform: unknown"},getDoNotTrack:function(){return navigator.doNotTrack?"doNotTrack: "+navigator.doNotTrack:"doNotTrack: unknown"},getTouchSupport:function(){var a=0,b=!1;"undefined"!==typeof navigator.maxTouchPoints?a=navigator.maxTouchPoints:"undefined"!==typeof navigator.msMaxTouchPoints&& (a=navigator.msMaxTouchPoints);try{document.createEvent("TouchEvent"),b=!0}catch(c){}return[a,b,"ontouchstart"in window]},getAdBlock:function(){var a=document.createElement("div");a.setAttribute("id","ads");document.body.appendChild(a);return document.getElementById("ads")?!1:!0},getHasLiedLanguages:function(){if("undefined"!==typeof navigator.languages)try{if(navigator.languages[0].substr(0,2)!==navigator.language.substr(0,2))return!0}catch(a){return!0}return!1},getHasLiedResolution:function(){return screen.width< screen.availWidth||screen.height<screen.availHeight?!0:!1},getHasLiedOs:function(){var a=navigator.userAgent,b=navigator.oscpu,c=navigator.platform,a=0<=a.toLowerCase().indexOf("windows phone")?"Windows Phone":0<=a.toLowerCase().indexOf("win")?"Windows":0<=a.toLowerCase().indexOf("android")?"Android":0<=a.toLowerCase().indexOf("linux")?"Linux":0<=a.toLowerCase().indexOf("iPhone")||0<=a.toLowerCase().indexOf("iPad")?"iOS":0<=a.toLowerCase().indexOf("mac")?"Mac":"Other";return("ontouchstart"in window|| 0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints)&&"Windows Phone"!==a&&"Android"!==a&&"iOS"!==a&&"Other"!==a||"undefined"!==typeof b&&(0<=b.toLowerCase().indexOf("win")&&"Windows"!==a&&"Windows Phone"!==a||0<=b.toLowerCase().indexOf("linux")&&"Linux"!==a&&"Android"!==a||0<=b.toLowerCase().indexOf("mac")&&"Mac"!==a&&"iOS"!==a||0===b.toLowerCase().indexOf("win")&&0===b.toLowerCase().indexOf("linux")&&0<=b.toLowerCase().indexOf("mac")&&"other"!==a)||0<=c.toLowerCase().indexOf("win")&&"Windows"!== a&&"Windows Phone"!==a||(0<=c.toLowerCase().indexOf("linux")||0<=c.toLowerCase().indexOf("android")||0<=c.toLowerCase().indexOf("pike"))&&"Linux"!==a&&"Android"!==a||(0<=c.toLowerCase().indexOf("mac")||0<=c.toLowerCase().indexOf("ipad")||0<=c.toLowerCase().indexOf("ipod")||0<=c.toLowerCase().indexOf("iphone"))&&"Mac"!==a&&"iOS"!==a||0===c.toLowerCase().indexOf("win")&&0===c.toLowerCase().indexOf("linux")&&0<=c.toLowerCase().indexOf("mac")&&"other"!==a?!0:"undefined"===typeof navigator.plugins&&"Windows"!== a&&"Windows Phone"!==a?!0:!1},getHasLiedBrowser:function(){var a=navigator.userAgent,b=navigator.productSub,a=0<=a.toLowerCase().indexOf("firefox")?"Firefox":0<=a.toLowerCase().indexOf("opera")||0<=a.toLowerCase().indexOf("opr")?"Opera":0<=a.toLowerCase().indexOf("chrome")?"Chrome":0<=a.toLowerCase().indexOf("safari")?"Safari":0<=a.toLowerCase().indexOf("trident")?"Internet Explorer":"Other";if(("Chrome"===a||"Safari"===a||"Opera"===a)&&"20030107"!==b)return!0;b=eval.toString().length;if(37===b&& "Safari"!==a&&"Firefox"!==a&&"Other"!==a||39===b&&"Internet Explorer"!==a&&"Other"!==a||33===b&&"Chrome"!==a&&"Opera"!==a&&"Other"!==a)return!0;var c;try{throw"a";}catch(g){try{g.toSource(),c=!0}catch(d){c=!1}}return c&&"Firefox"!==a&&"Other"!==a?!0:!1},isIE:function(){return"Microsoft Internet Explorer"===naviga
Dushyant-rahangdale
The complete open-source platform for on-call management, incident response, and status pages. Self-hosted, extensible, and built for DevOps & SRE teams.
The ultimate career playbook for Platform Engineers, DevOps, SREs, Production Engineers, and anyone else who gets triggered by the sound of a pager.
choerodon
Choerodon Front DevOps is the core front service of Choerodon. The service is responsible for all front pages of continuous delivery and providing users with a better user experience through rich display.
tylerdotrar
Aggregate of my offensive (Red), DevOps (Green), and defensive (Blue) knowledge in the form of an Obsidian Vault hosted by an mkdocs-material Github Pages site.
AryamanTewari
MyMoviePlan Project 4 DESCRIPTION Create a dynamic and responsive web application for booking movie tickets online for different genres and languages. Background of the problem statement: NMS Cinemas is a chain of single screen theatres that screen movie shows of different genres and languages at very genuine prices. It was established in 2004 in Pune, India. Recently, the business analysts noticed a decline in sales since 2010. They found out that the online booking of movie tickets from apps, such as BookMyShow and Paytm were gaining more profit by eliminating middlemen from the equation. As a result, the team decided to hire a Full Stack developer to develop an online movie ticket booking web application with a rich and user-friendly interface. You are hired as the Full Stack Java developer and are asked to develop the web application. The management team has provided you with the requirements and their business model so that you can easily arrange different components of the application. Features of the application: Registration Login Payment gateway Searching Filtering Sorting Dynamic data Responsive and compatible with different devices Recommended technologies: Database management: MySQL and Oracle Backend logic: Java programming, NodeJS Frontend development: JSP, Angular, Bootstrap, HTML/CSS, and Javascript Automation and testing technologies: Selenium, Jasmine, and TestNG DevOps and production technologies: Git, GitHub, Jenkins, Docker, Kubernetes, and AWS Project development guidelines: The project will be delivered within four sprints with every sprint delivering a minimal viable product. It is mandatory to perform proper sprint planning with user stories to develop all the components of the project. The learner can use any technology from the above-mentioned technologies for different layers of the project. The web application should be responsive and should fetch or send data dynamically without hardcoded values. The learner must maintain the version of the application over GitHub and every new change should be sent to the repository. The learner must implement a CI/CD pipeline using Jenkins. The learner should also deploy and host the application on an AWS EC2 instance. The learner should also implement automation testing before the application enters the CI/CD pipeline. The learner should use Git branching to do basic automation testing of the application in it separately. The learner should make a rich frontend of the application, which is user- friendly and easy for the user to navigate through the application. There will be two portals in the application, namely admin and user portal. Admin Portal: It deals with all the backend data generation and product information. The admin user should be able to: Add or remove different genres to or from the application to build a rich product line Edit movie details like name, ticket price, language, description, and show timings to keep it aligned to the current prices Enable or disable the movie shows from the application User Portal: It deals with the user activities. The end-user should be able to: Sign-in to the application to maintain a record of activities Search for movie tickets based on the search keyword Apply filters and sort results based on different genres Add all the selected movie tickets to a cart and customize the purchase at the end Experience a seamless payment process Receive a booking summary page once the payment is complete
dharmviro1
DevOps Lab – Experiment 1 | Git, GitHub, and GitHub Pages under the guidance of Er. Keshav Dhir.
DevOpsBootcamp
Landing page for Devops Days event at OSU
mmelmesary
This DevOps project showcases how to use : Python Flask, MySQL, Docker, Jenkinsfile, k8s, Helm charts, GitHub Pages, and ArgoCD
ledge-framework
DevOps 工具元素周期表、选型工具。A DevOps Tools Periodic Table for DevOps Learning and Design. Design with Web Component can use it any page.
devopshq
Welcome page of the Open DevOps community
☁️AWS DevOps Self-Service UI project. This project uses FastAPI framework with python functions as backend and a static HTML page as frontend. This UI tool helps users to create, update, and manage AWS resources while ensuring compliance with DevOps standards
alondudi
No description available
oceanprotocol-archive
🕶 Ocean Engineering Pages with documentation about Development, Application Lifecycle, DevOps
ismailseker
No description available
supaziom6
A simple C# app that generates a C# library for interacting with devops by scraping all the info from the devops docs page.
andreasZel
A Kubernetes application that serves Wikipedia pages using k3d for the devops with kubernetes class of MOOC.fi.
Plugin for Azure DevOps that provides: Extension for the WorkItems pages to show a TestGap badge, Pipeline Task to upload coverage, findings, and other reports to Teamscale
Mscitsid
Create a dynamic and responsive Java e-healthcare web application for ordering medicines of different categories. Background of the problem statement: Medicare is a company that supplies medicines and a couple of other healthcare essentials at an affordable price. It was established in 2012 in Delhi, India. It had been serving fine all these years, however, the business analysts noticed a decline in sales since 2017. They found out that online ordering of medicines with companies, such as 100mg and mfine are gaining more profits by eliminating middlemen from the equation. As a result, the team decided to hire a Full Stack developer to develop a healthcare web application with a rich and user-friendly interface. You are hired as the Full Stack Java developer and are asked to develop the web application. The management team has provided you with the requirements and their business model so that you can easily arrange different components of the application. Features of the application: Registration Login Payment gateway Searching Filtering Sorting Dynamic data Responsive and compatible with different devices Recommended technologies: Database management: MySQL and Oracle Backend logic: Java programming, NodeJS Frontend development: JSP, Angular, Bootstrap, HTML/CSS, and Javascript Automation and testing technologies: Selenium, Jasmine (frontend testing), and TestNG DevOps and production technologies: Git, GitHub, Jenkins, Docker, Kubernetes, and AWS Project development guidelines: The project will be delivered within four sprints with every sprint delivering a minimal viable product. It is mandatory to perform proper sprint planning with user stories to develop all the components of the project. The learner can use any technology from the above-mentioned technologies for different layers of the project. The web application should be responsive and should fetch or send data dynamically without hardcoded values. The learner must maintain the version of the application over GitHub and every new change should be sent to the repository. The learner must implement a CI/CD pipeline using Jenkins. The learner should also deploy and host the application on an AWS EC2 instance. The learner should also implement automation testing before the application enters the CI/CD pipeline. The learner should use Git branching to do basic automation testing of the application in it separately. The learner should make a rich frontend of the application, which is user-friendly and easy for the user to navigate through the application. There will be two portals in the application, namely admin and user portal. Admin Portal: The admin portal deals with all the backend data generation and product information. The admin user should be able to: Add or remove medicine details from the application to build a rich product line Edit medicine details like name, price, seller, product description, and offers to keep the product information updated with the current prices Enable or disable a medicine product User Portal: It deals with the user activities. The end-user should be able to: Sign-in to the application to maintain a record of activities Search for products based on the search keyword Apply filters and sort results based on different cuisines to get the best deals Add all the selected food items to the cart and customize the purchase at the end Perform a seamless payment gateway Get an order summary details page once the payment is complete
devopsyokesh
Jenkins is an open source, Java-based automation server that offers an easy way to set up a continuous integration and continuous delivery (CI/CD) pipeline. Continuous integration (CI) is a DevOps practice in which team members regularly commits their code changes to the version control repository, after which automated builds and tests are run. Continuous delivery (CD) is a series of practices where code changes are automatically built, tested and deployed to production. This tutorial will walk you through the steps of installing Jenkins on a CentOS 7 system using the official Jenkins repository. Prerequisites Before continuing with this tutorial, make sure you are logged in as a user with sudo privileges. Installing Jenkins To install Jenkins on your CentOS system, follow the steps below: Jenkins is a Java application, so the first step is to install Java. Run the following command to install the OpenJDK 8 package: sudo yum install java-1.8.0-openjdk-devel Copy The current version of Jenkins does not support Java 10 (and Java 11) yet. If you have multiple versions of Java installed on your machine make sure Java 8 is the default Java version. The next step is to enable the Jenkins repository. To do that, import the GPG key using the following curl command: curl --silent --location http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo | sudo tee /etc/yum.repos.d/jenkins.repo Copy And add the repository to your system with: sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key Copy Once the repository is enabled, install the latest stable version of Jenkins by typing: sudo yum install jenkins Copy After the installation process is completed, start the Jenkins service with: sudo systemctl start jenkins Copy To check whether it started successfully run: systemctl status jenkins Copy You should see something similar to this: ● jenkins.service - LSB: Jenkins Automation Server Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled) Active: active (running) since Thu 2018-09-20 14:58:21 UTC; 15s ago Docs: man:systemd-sysv-generator(8) Process: 2367 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=0/SUCCESS) CGroup: /system.slice/jenkins.service Copy Finally enable the Jenkins service to start on system boot. sudo systemctl enable jenkins Copy jenkins.service is not a native service, redirecting to /sbin/chkconfig. Executing /sbin/chkconfig jenkins on Copy Adjust the Firewall If you are installing Jenkins on a remote CentOS server that is protected by a firewall you need to port 8080. Use the following commands to open the necessary port: sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp sudo firewall-cmd --reload Copy Setting Up Jenkins To setup your new Jenkins installation, open your browser and type your domain or IP address followed by port 8080: http://your_ip_or_domain:8080 Copy A screen similar to the following will appear, prompting you to enter the Administrator password that is created during the installation: Use the following command to print the password on your terminal: sudo cat /var/lib/jenkins/secrets/initialAdminPassword Copy You should see a 32-character long alphanumeric password as shown below: 2115173b548f4e99a203ee99a8732a32 Copy Copy the password from your terminal, paste it into the Administrator password field and click Continue. On the next screen you will be asked whether you want to install the suggested plugins or to select specific plugins. Click on the Install suggested plugins box, and the installation process will start immediately. Once the installation is complete, you will be prompted to set up the first administrative user. Fill out all required information and click Save and Continue. On the next page you will be asked to set the URL for the Jenkins instance. The URL filed will be populated with an automatically generated URL. To complete the setup confirm the URL by clicking on the Save and Finish button. Finally, click on the Start using Jenkins button and you will be redirected to the Jenkins dashboard logged in as the admin user you have created in one of the previous steps. If you’ve reached this point, you’ve successfully installed Jenkins on your CentOS system. Conclusion In this tutorial, you have learned how to install and complete the initial configuration of Jenkins on CentOS/RHEL based systems. You can now visit the official Jenkins documentation page and start exploring Jenkins’s workflow and plug-in model.
devopsmercenaries
Devops Mercenaries presentations pages
wl4g
The frontend of IAM project
PrinceSinghhub
This is a simple web page made with TypeScript and hosted on Azure Web Services. It was part of the training provided by my previous organization for understanding Azure and DevOps culture.
neuland
Dashboard for Azure DevOps displaying stuff that's not already availble on a single page
iampuspendu
This DevOps Tools Access Page provides a centralized list of essential tools for development, deployment, cloud, CI/CD, monitoring, and automation—organized for quick setup and easy access by developers and DevOps teams.
dgrochmal
This browser extension automatically changes the browser tab icon (favicon) for Azure DevOps pages based on the tab title or URL